接下来这个专题介绍PyQt的一些内容
教程翻译自:
https://www.tutorialspoint.com/pyqt/pyqt_introduction.htm
由于本人也是学习状态,翻译可能不准确,请及时指出,我会很快修正
一些关键字会直接使用英文
目前该专题为纯理论,实际操作在完成后有演示
PyQt版本: PyQt4
不像终端程序那样的顺序执行程序,GUI程序可以以事件驱动的,函数和方法可以被用来响应用户的行为,像是点击一个按钮,选择一个复选框等
每个PyQt Widget(由QObject 类继承而来)可以被用作于这些事件的源,即发出一个或多个'信号'(signal),譬如点击,勾选
信号本身并不会做任何的动作,它会和一个槽(Slot)进行连接,槽可以调用Python程序.
我们有如下2个方式进行Signal和Slot的连接
QtCore.QObject.connect(widget, QtCore.SIGNAL(‘signalname’), slot_function)
widget.signal.connect(slot_function)
这里我们假设当我们点击(clicked)一个按钮(button)是触发一个函数(slot_function)
可以有如下两种写法
QtCore.QObject.connect(button, QtCore.SIGNAL(“clicked()”), slot_function)
button.clicked.connect(slot_function)
我们假设有b1 b2 两个 QPushButton 在QDialog窗体上,当我们点击b1 b2两个按钮时调用b1_clicked() 和 b2_clicked()两个函数
我们可以这么写
b1.clicked.connect(b1_clicked())
When b2 is clicked, the clicked() signal is connected to b2_clicked() function
QObject.connect(b2, SIGNAL("clicked()"), b2_clicked)
全部代码如下
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
def window():
app = QApplication(sys.argv)
win = QDialog()
b1 = QPushButton(win)
b1.setText("Button1")
b1.move(50,20)
b1.clicked.connect(b1_clicked)
b2 = QPushButton(win)
b2.setText("Button2")
b2.move(50,50)
QObject.connect(b2,SIGNAL("clicked()"),b2_clicked)
win.setGeometry(100,100,200,100)
win.setWindowTitle("PyQt")
win.show()
sys.exit(app.exec_())
def b1_clicked():
print "Button 1 clicked"
def b2_clicked():
print "Button 2 clicked"
if __name__ == '__main__':
window()
执行和如下图:
点击按钮后输出
Button 1 clicked
Button 2 clicked