pyqt5 怎么通过其它文件函数修改控件信息并调用函数代码例子
时间: 2023-03-27 18:02:35 浏览: 121
PyQt5事件处理之定时在控件上显示信息的代码
可以使用信号与槽机制来实现。首先在主窗口中定义一个槽函数,用于接收信号并修改控件信息。然后在需要修改控件信息的函数中,通过信号发送数据,触发槽函数执行。下面是一个简单的代码例子:
```python
from PyQt5.QtCore import pyqtSignal, QObject
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.btn = QPushButton('Click me', self)
self.btn.move(50, 50)
self.btn.clicked.connect(self.btnClicked)
def btnClicked(self):
# 发送信号,触发槽函数执行
self.mySignal.emit('Hello, PyQt5!')
class MyObject(QObject):
# 定义信号,传递一个字符串参数
mySignal = pyqtSignal(str)
def __init__(self):
super().__init__()
# 连接信号与槽函数
self.mySignal.connect(self.mySlot)
def mySlot(self, msg):
# 接收信号并修改控件信息
self.mainWindow.btn.setText(msg)
if __name__ == '__main__':
app = QApplication([])
mainWindow = MainWindow()
myObject = MyObject()
myObject.mainWindow = mainWindow
mainWindow.mySignal = myObject.mySignal
mainWindow.show()
app.exec_()
```
在上面的代码中,我们定义了一个 `MainWindow` 类,用于创建主窗口,并在其中添加了一个按钮控件。当按钮被点击时,会触发 `btnClicked` 槽函数,该函数会发送一个信号,传递一个字符串参数。我们还定义了一个 `MyObject` 类,用于接收信号并修改控件信息。在 `MyObject` 类中,我们定义了一个 `mySignal` 信号,并将其连接到 `mySlot` 槽函数。在 `mySlot` 函数中,我们接收信号并修改控件信息。
在 `__main__` 函数中,我们创建了一个 `MainWindow` 实例和一个 `MyObject` 实例,并将它们互相关联。具体来说,我们将 `MyObject` 实例的 `mySignal` 信号与 `MainWindow` 实例的 `mySignal` 信号关联起来,这样当 `MyObject` 实例接收到信号时,就会触发 `MainWindow` 实例的 `mySignal` 信号,从而触发 `MyObject` 实例的 `mySlot` 槽函数,实现修改控件信息的功能。
阅读全文