如何使用connect将主窗体与子窗体信号连接起来实现主窗体向子窗体发送信号
要使用connect函数将主窗体与子窗体的信号连接起来,需要按照以下步骤进行操作:
-
在主窗体定义一个信号,可以通过
pyqtSignal来创建一个自定义信号。例如,可以在主窗体类中定义一个名为sendSignal的信号:from PyQt5.QtCore import pyqtSignal, QObject class MainWindow(QObject): sendSignal = pyqtSignal(str) -
在主窗体中创建一个子窗体对象,并将其信号与主窗体的信号连接起来。可以在主窗体的初始化方法中进行连接操作。例如,可以创建一个名为
ChildWindow的子窗体类,并在主窗体的初始化方法中进行连接操作:from PyQt5.QtWidgets import QMainWindow, QApplication from ChildWindow import ChildWindow class MainWindow(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): self.childWindow = ChildWindow() self.sendSignal.connect(self.childWindow.receiveSignal) -
在子窗体中定义一个槽函数,用于接收主窗体发送的信号。可以通过装饰器
pyqtSlot来定义槽函数。例如,在子窗体类中定义一个名为receiveSignal的槽函数:from PyQt5.QtCore import pyqtSlot, QObject class ChildWindow(QObject): @pyqtSlot(str) def receiveSignal(self, message): print("Received signal:", message) -
在需要发送信号的地方,通过
emit方法发送信号。例如,在主窗体的某个按钮点击事件中发送信号:def buttonClicked(self): self.sendSignal.emit("Hello from MainWindow")
这样,当主窗体的按钮点击事件触发时,会发送信号到子窗体的槽函数中,从而实现了主窗体向子窗体发送信号的功能
原文地址: https://www.cveoy.top/t/topic/iqZc 著作权归作者所有。请勿转载和采集!