pyqt5界面中怎么互相传参数?
时间: 2024-01-24 16:17:19 浏览: 112
在 PyQt5 中,可以通过信号(Signal)和槽(Slot)机制来实现界面中的组件之间传递参数。
信号是 PyQt5 中的一种特殊对象,用于向其他对象发送消息。槽是接收信号的函数,当信号被触发时,与之相连接的槽函数将被自动调用。
以下是一个简单的示例,演示了如何在两个界面之间传递参数:
```python
from PyQt5.QtCore import pyqtSignal, QObject
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout, QLabel, QLineEdit, QPushButton
class Sender(QObject):
signal1 = pyqtSignal(str)
class Receiver(QWidget):
def __init__(self, parent=None):
super(Receiver, self).__init__(parent)
self.label = QLabel()
self.setLayout(QVBoxLayout())
self.layout().addWidget(self.label)
def slot1(self, value):
self.label.setText(value)
class Window(QWidget):
def __init__(self):
super(Window, self).__init__()
self.sender = Sender()
self.edit = QLineEdit()
self.button = QPushButton('Send')
self.button.clicked.connect(self.send_signal)
self.setLayout(QHBoxLayout())
self.layout().addWidget(self.edit)
self.layout().addWidget(self.button)
def send_signal(self):
self.sender.signal1.emit(self.edit.text())
app = QApplication([])
window1 = Window()
window2 = Receiver()
window1.sender.signal1.connect(window2.slot1)
window1.show()
window2.show()
app.exec_()
```
在这个例子中,我们创建了两个窗口,一个是发送者窗口 `Window`,另一个是接收者窗口 `Receiver`。我们通过创建一个 `Sender` 对象,并定义了一个名为 `signal1` 的信号,用于在两个窗口之间传递数据。
在 `Window` 窗口中,我们创建了一个文本框和一个按钮,当按钮被点击时,我们将文本框中的文字通过信号 `Sender.signal1` 发送出去。
在 `Receiver` 窗口中,我们定义了一个名为 `slot1` 的槽函数,用于接收 `Sender.signal1` 信号发出的数据,并将其显示到标签控件上。
最后,我们将 `Sender.signal1` 信号与 `Receiver.slot1` 槽函数连接起来,这样当 `Sender.signal1` 信号被触发时,`Receiver.slot1` 槽函数将被自动调用,从而实现了在两个窗口之间传递参数的功能。
阅读全文