溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Linux Python中信號與槽機制

發(fā)布時間:2024-09-12 00:00:46 來源:億速云 閱讀:80 作者:小樊 欄目:編程語言

在 Linux 系統(tǒng)下的 Python 程序中,信號與槽機制并不是原生支持的

以下是一個簡單的 PyQt5 信號與槽示例:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout
from PyQt5.QtCore import pyqtSignal, pyqtSlot

class MySignal(QWidget):
    # 定義一個信號
    my_signal = pyqtSignal(str)

    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('Signal and Slot')

        # 創(chuàng)建一個按鈕
        self.button = QPushButton('Click me', self)
        self.button.clicked.connect(self.send_signal)

        # 使用垂直布局
        layout = QVBoxLayout()
        layout.addWidget(self.button)
        self.setLayout(layout)

    def send_signal(self):
        # 發(fā)射信號
        self.my_signal.emit('Hello from signal!')

class MySlot(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setGeometry(600, 300, 250, 150)
        self.setWindowTitle('Slot Receiver')

    @pyqtSlot(str)
    def receive_signal(self, message):
        print('Received signal:', message)

if __name__ == '__main__':
    app = QApplication(sys.argv)

    signal_widget = MySignal()
    slot_widget = MySlot()

    # 連接信號和槽
    signal_widget.my_signal.connect(slot_widget.receive_signal)

    signal_widget.show()
    slot_widget.show()

    sys.exit(app.exec_())

在這個示例中,我們創(chuàng)建了兩個類:MySignalMySlotMySignal 類中定義了一個信號 my_signal,當按鈕被點擊時,會發(fā)射這個信號。MySlot 類中定義了一個槽函數(shù) receive_signal,用于接收信號并處理。通過 signal_widget.my_signal.connect(slot_widget.receive_signal) 將信號與槽連接起來。

運行這個程序,當你點擊 “Click me” 按鈕時,會在控制臺輸出 “Received signal: Hello from signal!”。這就是一個簡單的 PyQt5 信號與槽機制的實現(xiàn)。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI