PyQt5学习笔记(十四):发送信号&自定义槽函数

在上一篇学习笔记中,我们重构了 ESC 和 ALT 键按下时触发的信号槽过程,在本次笔记中我们可以自己决定在什么时候发送一个信号。本文由 Cescfangs 译自 ZetCode pyqt5系列教程 并作适当修改。

在本次的学习笔记中,我们将通过信号槽的绑定,在statusBar()中提示哪一个按钮被按下了,先上源代码:

from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton


class exp(QMainWindow):

    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):

        self.setGeometry(400, 400, 300, 300)
        self.setWindowTitle('sender')

        btn1 = QPushButton('Hello', self)
        btn2 = QPushButton('world', self)

        btn1.move(30, 150)
        btn2.move(150, 150)

        self.statusBar()

        btn1.clicked.connect(self.btnclicked)
        btn2.clicked.connect(self.btnclicked)

    def btnclicked(self):

        sender = self.sender()
        self.statusBar().showMessage(sender.text() + ' was clicked!')

if __name__ == '__main__':

    import sys
    app = QApplication(sys.argv)
    ex = exp()
    ex.show()
    sys.exit(app.exec_())

通过以上的代码,我们创建了 'hello' 和 'world' 两个按钮,'hello' 按下的时候,左下角会提示 'hello was clicked!','world'按下的时候则提示 'world was clicked!'。

def btnclicked(self):    
    
    sender = self.sender()
    self.statusBar().showMessage(sender.text() + ' was clicked!')

自定义的槽函数 btnclicked,它的作用是设置 statusBar() 的内容为按钮文本+ 'was clicked!',这个函数通过:

btn1.clicked.connect(self.btnclicked)
btn2.clicked.connect(self.btnclicked)

进行连接呈现,发送的信号传送到槽函数时,我们可以使用 sender() 来判断是哪个部件发送了信号,从而做出对应的反馈,这也是自定义槽函数里经常使用的一个技巧。

PyQt5学习笔记(十四):发送信号&自定义槽函数_第1张图片
动画效果

你可能感兴趣的:(PyQt5学习笔记(十四):发送信号&自定义槽函数)