pyqt双向信号槽
时间: 2025-04-21 14:44:45 浏览: 19
### 实现双向信号槽机制
在 PyQt 中,通过 `pyqtSignal` 和 `connect()` 方法可以创建和连接信号与槽函数。为了实现双向通信,即两个对象之间相互发送信号并响应对方发出的信号,通常会定义多个信号并在不同组件间建立关联。
下面是一个简单的例子来展示如何设置这种双向交互:
```python
from PyQt5.QtCore import QObject, pyqtSignal
class Sender(QObject):
messageChanged = pyqtSignal(str)
def __init__(self, parent=None):
super().__init__(parent)
class Receiver(QObject):
responseChanged = pyqtSignal(str)
def __init__(self, sender: Sender, parent=None):
super().__init__(parent)
self._sender = sender
# Connect signals from both sides
self.responseChanged.connect(sender.messageChanged.emit)
sender.messageChanged.connect(self.on_message_received)
def on_message_received(self, msg):
print(f"Received Message: {msg}")
reply = f"Echo back: {msg}"
self.responseChanged.emit(reply)
if __name__ == "__main__":
app_sender = Sender()
app_receiver = Receiver(app_sender)
test_msg = "Hello World"
app_sender.messageChanged.emit(test_msg) # This should trigger a round trip communication.
```
在这个例子中,当 `Sender` 发送消息给 `Receiver` 后,后者不仅处理接收到的信息还会向原始发件者返回一条确认信息[^1]。
#### 关键点说明
- 使用 `pyqtSignal` 定义自定义信号。
- 利用 `connect()` 将信号绑定到特定的方法上作为槽函数。
- 双方都可以监听来自另一方的事件并通过调用相应的槽来进行回应操作。
阅读全文
相关推荐


