在 PyQt5 中,QPushButton 是一個常用的 GUI 組件,它可以觸發特定的操作
以下是一個簡單的示例,展示了如何使用 QPushButton 的信號和槽機制:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout, QLabel
class MyApp(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('QPushButton Signal and Slot')
# 創建一個 QPushButton 實例
self.button = QPushButton('Click me', self)
# 創建一個 QLabel 實例,用于顯示按鈕被點擊的次數
self.label = QLabel('Button clicked 0 times', self)
# 創建一個 QVBoxLayout 實例,用于布局按鈕和標簽
layout = QVBoxLayout()
layout.addWidget(self.button)
layout.addWidget(self.label)
# 將布局設置為窗口的布局
self.setLayout(layout)
# 連接 QPushButton 的 clicked 信號到自定義的槽函數
self.button.clicked.connect(self.on_button_clicked)
def on_button_clicked(self):
# 獲取當前標簽文本
text = self.label.text()
# 解析出按鈕被點擊的次數
count = int(text.split()[-1])
# 更新按鈕被點擊的次數
count += 1
# 更新標簽文本
self.label.setText(f'Button clicked {count} times')
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = MyApp()
ex.show()
sys.exit(app.exec_())
在這個示例中,我們創建了一個名為 MyApp
的類,它繼承自 QWidget
。在 initUI
方法中,我們創建了一個 QPushButton 實例和一個 QLabel 實例。然后,我們將這兩個組件添加到一個 QVBoxLayout 實例中,并將該布局設置為窗口的布局。
接下來,我們連接 QPushButton 的 clicked
信號到自定義的槽函數 on_button_clicked
。當按鈕被點擊時,這個槽函數會被調用,更新 QLabel 的文本以顯示按鈕被點擊的次數。
最后,我們創建了一個 QApplication 實例,并將 MyApp 實例顯示出來。程序將持續運行,直到用戶關閉窗口。