mainwindow传送数据给dialog pyqt 例子
时间: 2023-12-06 08:01:54 浏览: 82
pyqt实例,界面例子
可以使用信号和槽机制来实现mainwindow向dialog传送数据的例子,具体操作如下:
在mainwindow.py文件中定义一个信号:
```python
from PyQt5.QtCore import pyqtSignal, QObject
class Communicate(QObject):
send_data = pyqtSignal(str)
```
在mainwindow类中调用信号:
```python
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QMainWindow, QPushButton, QDialog
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.button = QPushButton("发送数据", self)
self.button.clicked.connect(self.send_data_to_dialog)
self.communicate = Communicate()
def send_data_to_dialog(self):
data = "这是要发送的数据"
self.communicate.send_data.emit(data)
```
在dialog.py文件中定义一个槽:
```python
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QDialog, QLabel
class Dialog(QDialog):
def __init__(self):
super().__init__()
self.label = QLabel("等待接收数据", self)
self.communicate = Communicate()
self.communicate.send_data.connect(self.receive_data)
def receive_data(self, data):
self.label.setText(data)
```
在dialog类中实例化Communicate类,并连接信号和槽:
```python
from PyQt5.QtCore import pyqtSignal, QObject
class Communicate(QObject):
send_data = pyqtSignal(str)
class Dialog(QDialog):
def __init__(self):
super().__init__()
self.label = QLabel("等待接收数据", self)
self.communicate = Communicate()
self.communicate.send_data.connect(self.receive_data)
def receive_data(self, data):
self.label.setText(data)
```
以上就是一个简单的mainwindow向dialog传送数据的例子。当用户点击mainwindow窗口中的"发送数据"按钮时,mainwindow会发出一个名为"send_data"的信号,并传递一个字符串参数,dialog中的槽函数则会接收这个字符串并显示在窗口上。
阅读全文