在上一篇學習筆記中,我們重構了 ESC 和 ALT 鍵按下時觸發(fā)的信號槽過程,在本次筆記中我們可以自己決定在什么時候發(fā)送一個信號。本文由 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_())
通過以上的代碼,我們創(chuàng)建了 'hello' 和 'world' 兩個按鈕,'hello' 按下的時候,左下角會提示 'hello was clicked!','world'按下的時候則提示 'world was clicked!'。
def btnclicked(self):
sender = self.sender()
self.statusBar().showMessage(sender.text() + ' was clicked!')
自定義的槽函數(shù) btnclicked,它的作用是設置 statusBar() 的內(nèi)容為按鈕文本+ 'was clicked!',這個函數(shù)通過:
btn1.clicked.connect(self.btnclicked)
btn2.clicked.connect(self.btnclicked)
進行連接呈現(xiàn),發(fā)送的信號傳送到槽函數(shù)時,我們可以使用 sender() 來判斷是哪個部件發(fā)送了信號,從而做出對應的反饋,這也是自定義槽函數(shù)里經(jīng)常使用的一個技巧。

動畫效果