在 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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。