您好,登錄后才能下訂單哦!
在 Linux 系統下的 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')
# 創建一個按鈕
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):
# 發射信號
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_())
在這個示例中,我們創建了兩個類:MySignal
和 MySlot
。MySignal
類中定義了一個信號 my_signal
,當按鈕被點擊時,會發射這個信號。MySlot
類中定義了一個槽函數 receive_signal
,用于接收信號并處理。通過 signal_widget.my_signal.connect(slot_widget.receive_signal)
將信號與槽連接起來。
運行這個程序,當你點擊 “Click me” 按鈕時,會在控制臺輸出 “Received signal: Hello from signal!”。這就是一個簡單的 PyQt5 信號與槽機制的實現。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。