美文网首页
PyQt5 Event Sender(which widget

PyQt5 Event Sender(which widget

作者: _Mirage | 来源:发表于2020-04-02 14:39 被阅读0次

    重点是将一些组件触发后的slot设置成相同的,然后可以通过sender区分开,用简单的if可以实现对这些所有组件的不同处理方式。

    代码:

    # coding='utf-8'
    
    
    import sys
    from PyQt5.QtWidgets import QMainWindow, QApplication, QPushButton
    
    
    class Gui(QMainWindow):
        def __init__(self):
            super(Gui, self).__init__()
            self.start()
    
        def start(self):
            # 创建一些放置在QWidget上的按钮
            buttons = [
                QPushButton('button 1', self),
                QPushButton('button 2', self),
            ]
    
            # 给所有的按钮按照绝对坐标移动到相应的位置
            buttons[0].move(30, 50)
            buttons[1].move(150, 50)
    
            # 给所有按钮在点击后绑定相同的事件
            # 这里的signal时clicked, slot时self.button_clicked
            buttons[0].clicked.connect(self.button_clicked)
            buttons[1].clicked.connect(self.button_clicked)
    
            # 实例化左下角显示的状态栏对象,设置成类属性是为了在\
            # 类的不同方法之间通信
            self.statusBar()
    
            self.setGeometry(300, 300, 290, 150)
            self.setWindowTitle('Event sender')
            self.show()
    
        # 按下按钮后触发的事件,也可以叫slot
        def button_clicked(self):
            # 实例化一个sender对象,通过sender对象,\
            # 我们可以 determine the signal source,
            # 也就是找出信号源(哪个组件状态变化而发出信号)
            sender = self.sender()
            # 类属性通信,在左下角显示哪个按钮被按了
            self.statusBar().showMessage('{} 被按下了.'.format(sender.text()))
    
    
    win = QApplication(sys.argv)
    gui = Gui()
    sys.exit(win.exec_())
    
    运行结果: image.png

    相关文章

      网友评论

          本文标题:PyQt5 Event Sender(which widget

          本文链接:https://www.haomeiwen.com/subject/iurxphtx.html