Sometimes it is convenient to know which widget is the sender of a signal. For this, PyQt5 has the sender() method.
有时知道哪个组件是信号的发送者是很方便的.为此,PyQt5有sender()方法.
下面是源码:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2017/10/23 下午1:43
# @Author : Aries
# @Site :
# @File : 1023-01-Event sender.py
# @Software: PyCharm
import sys
from PyQt5.QtWidgets import QMainWindow, QPushButton, QApplication
class Exp(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
btn1 = QPushButton('按钮1',self)
btn1.move(30,50)
btn2 = QPushButton('按钮2',self)
btn2.move(150,50)
btn1.clicked.connect(self.buttonClicked)
btn2.clicked.connect(self.buttonClicked)
self.statusBar()
self.setGeometry(300,300,290,150)
self.setWindowFilePath('Event sender')
self.show()
def buttonClicked(self):
sender = self.sender()
self.statusBar().showMessage(sender.text() + '被点击了')
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Exp()
sys.exit(app.exec_())
重点代码解读:
- 在这个例子中有两个按钮,在buttonClicked() 方法中,我们指定哪个按钮被点击,就调用sender()方法.两个按钮被连接到了同一个方法.
btn1.clicked.connect(self.buttonClicked)
btn2.clicked.connect(self.buttonClicked)
- 在buttonClicked()方法中.我们制定了当sender()方法被调用的时候的信号源.当按钮被点击的时候,在程序的statusBar上展示出来.
def buttonClicked(self):
sender = self.sender()
self.statusBar().showMessage(sender.text() + '被点击了')