Sometimes it is convenient to know which widget is the sender of a signal. For this, PyQt5 has the sender() method.
有時知道哪個組件是信號的發(fā)送者是很方便的.為此,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() 方法中,我們指定哪個按鈕被點擊,就調(diào)用sender()方法.兩個按鈕被連接到了同一個方法.
btn1.clicked.connect(self.buttonClicked)
btn2.clicked.connect(self.buttonClicked)
- 在buttonClicked()方法中.我們制定了當(dāng)sender()方法被調(diào)用的時候的信號源.當(dāng)按鈕被點擊的時候,在程序的statusBar上展示出來.
def buttonClicked(self):
sender = self.sender()
self.statusBar().showMessage(sender.text() + '被點擊了')
運行效果圖
image.png