在上一篇學(xué)習(xí)筆記中,我們重構(gòu)了 ESC 和 ALT 鍵按下時(shí)觸發(fā)的信號槽過程,在本次筆記中我們可以自己決定在什么時(shí)候發(fā)送一個(gè)信號。本文由 Cescfangs 譯自 ZetCode pyqt5系列教程 并作適當(dāng)修改。
在本次的學(xué)習(xí)筆記中战得,我們將通過信號槽的綁定,在statusBar()
中提示哪一個(gè)按鈕被按下了庸推,先上源代碼:
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' 兩個(gè)按鈕,'hello' 按下的時(shí)候贬媒,左下角會提示 'hello was clicked!'聋亡,'world'按下的時(shí)候則提示 'world was clicked!'。
def btnclicked(self):
sender = self.sender()
self.statusBar().showMessage(sender.text() + ' was clicked!')
自定義的槽函數(shù) btnclicked
际乘,它的作用是設(shè)置 statusBar()
的內(nèi)容為按鈕文本+ 'was clicked!'坡倔,這個(gè)函數(shù)通過:
btn1.clicked.connect(self.btnclicked)
btn2.clicked.connect(self.btnclicked)
進(jìn)行連接呈現(xiàn),發(fā)送的信號傳送到槽函數(shù)時(shí)脖含,我們可以使用 sender()
來判斷是哪個(gè)部件發(fā)送了信號罪塔,從而做出對應(yīng)的反饋,這也是自定義槽函數(shù)里經(jīng)常使用的一個(gè)技巧养葵。