在調用函數的時候,可能需要傳入參數,因此使用lambda來構造函數進行傳入
self.button4.clicked.connect(lambda: self.whichButton(self.button4))
QPushButtonDemo.py
""" 按鈕控件 (QPushButton) QAbstractButton QPushButton AToolButton QRadioButton QCheckBox """ import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * class QPushButtonDemo(QDialog): def __init__(self): super(QPushButtonDemo, self).__init__() self.initUI() def initUI(self): self.setWindowTitle("QPushButton Demo") layout = QVBoxLayout() self.button1 = QPushButton("第一個按鈕") self.button1.setText('First Button') #按第一次處於選中的狀態 self.button1.setCheckable(True) self.button1.toggle() self.button1.clicked.connect(lambda: self.whichButton(self.button1)) self.button1.clicked.connect(self.buttonState) layout.addWidget(self.button1) # 在文本前面顯示圖像 self.button2 = QPushButton('圖像按鈕') self.button2.setIcon(QIcon(QPixmap("D:\QTStudy\Picture\ic.png"))) self.button2.clicked.connect(lambda: self.whichButton(self.button2)) layout.addWidget(self.button2) #設置按鈕為不可選中 self.button3 = QPushButton("不可用的按鈕") self.button3.setEnabled(False) layout.addWidget(self.button3) #按住Enter鍵時, 默認按住這個按鈕 self.button4 = QPushButton("&MyButton") self.button4.setDefault(True) self.button4.clicked.connect(lambda: self.whichButton(self.button4)) layout.addWidget(self.button4) self.setLayout(layout) self.resize(400, 300) def buttonState(self): if self.button1.isChecked(): print("按鈕1已經被選中") else: print("按鈕1未被選中") def whichButton(self, btn): print('被單機的按鈕是<' + btn.text() + '>') if __name__ == "__main__": app = QApplication(sys.argv) main = QPushButtonDemo() main.show() sys.exit(app.exec_())