溫馨提示×

python qpushbutton的信號(hào)與槽機(jī)制

小樊
83
2024-09-06 15:52:34
欄目: 編程語言

在 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)閉窗口。

0