pyqt创建两个窗口之间的信号槽
时间: 2023-06-02 08:06:14 浏览: 100
可以通过以下代码实现:
```python
from PyQt5.QtCore import pyqtSignal, QObject
class Communicate(QObject):
# 创建一个信号槽
signal = pyqtSignal(str)
class Window1(QWidget):
def __init__(self):
super().__init__()
# 实例化通信类
self.comm = Communicate()
# 绑定信号槽
self.comm.signal.connect(self.slot_func)
def slot_func(self, msg):
# 处理接收到的信号的函数
print("Received message:", msg)
class Window2(QWidget):
def __init__(self, comm):
super().__init__()
# 保存通信类的实例
self.comm = comm
def send_signal(self):
# 发送信号
self.comm.signal.emit("Hello from Window2!")
```
在这个例子中,我们创建了一个通信类 `Communicate`,其中包含了一个信号槽 `signal`,用来在两个窗口之间传递消息。在 `Window1` 中,我们实例化了这个通信类,并将其中的信号槽与一个函数 `slot_func` 绑定在一起。在 `Window2` 中,我们保存了这个通信类的实例,并在 `send_signal` 函数中使用 `emit` 来发送一条消息。当 `Window1` 接收到这条消息时,就会调用 `slot_func` 函数,并将接收到的消息作为参数传递给它。
阅读全文
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)