在 PyQt5 中,QPushButton 是一個(gè)常用的 GUI 組件,它可以觸發(fā)特定的操作
以下是一個(gè)簡單的示例,展示了如何使用 QPushButton 的信號(hào)和槽機(jī)制:
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')
# 創(chuàng)建一個(gè) QPushButton 實(shí)例
self.button = QPushButton('Click me', self)
# 創(chuàng)建一個(gè) QLabel 實(shí)例,用于顯示按鈕被點(diǎn)擊的次數(shù)
self.label = QLabel('Button clicked 0 times', self)
# 創(chuàng)建一個(gè) QVBoxLayout 實(shí)例,用于布局按鈕和標(biāo)簽
layout = QVBoxLayout()
layout.addWidget(self.button)
layout.addWidget(self.label)
# 將布局設(shè)置為窗口的布局
self.setLayout(layout)
# 連接 QPushButton 的 clicked 信號(hào)到自定義的槽函數(shù)
self.button.clicked.connect(self.on_button_clicked)
def on_button_clicked(self):
# 獲取當(dāng)前標(biāo)簽文本
text = self.label.text()
# 解析出按鈕被點(diǎn)擊的次數(shù)
count = int(text.split()[-1])
# 更新按鈕被點(diǎn)擊的次數(shù)
count += 1
# 更新標(biāo)簽文本
self.label.setText(f'Button clicked {count} times')
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = MyApp()
ex.show()
sys.exit(app.exec_())
在這個(gè)示例中,我們創(chuàng)建了一個(gè)名為 MyApp
的類,它繼承自 QWidget
。在 initUI
方法中,我們創(chuàng)建了一個(gè) QPushButton 實(shí)例和一個(gè) QLabel 實(shí)例。然后,我們將這兩個(gè)組件添加到一個(gè) QVBoxLayout 實(shí)例中,并將該布局設(shè)置為窗口的布局。
接下來,我們連接 QPushButton 的 clicked
信號(hào)到自定義的槽函數(shù) on_button_clicked
。當(dāng)按鈕被點(diǎn)擊時(shí),這個(gè)槽函數(shù)會(huì)被調(diào)用,更新 QLabel 的文本以顯示按鈕被點(diǎn)擊的次數(shù)。
最后,我們創(chuàng)建了一個(gè) QApplication 實(shí)例,并將 MyApp 實(shí)例顯示出來。程序?qū)⒊掷m(xù)運(yùn)行,直到用戶關(guān)閉窗口。