建立信号槽连接
您可以通过以下语法直接建立信号槽连接,而不是使用 Designer -
widget.signal.connect(slot_function)
假设单击按钮时是否要调用函数。在这里,clicked 信号将连接到一个可调用函数。它可以通过以下任何一种技术来实现 -
button.clicked.connect(slot_function)
例子
在以下示例中,在 QDialog 窗口中添加了两个 QPushButton 对象(b1 和 b2)。我们想分别在单击 b1 和 b2 时调用函数 b1_clicked() 和 b2_clicked()。
单击 b1 时,clicked() 信号连接到 b1_clicked() 函数 -
b1.clicked.connect(b1_clicked())
单击 b2 时,clicked() 信号连接到 b2_clicked() 函数。
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets 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)
b2.clicked.connect(b2_clicked)
win.setGeometry(100,100,200,100)
win.setWindowTitle("PyQt5")
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