美文网首页
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