解释这段代码 from PySide2.QtWidgets import QApplication, QTextBrowser from PySide2.QtUiTools import QUiLoader from threading import Thread from PySide2.QtCore import Signal, QObject # 自定义信号源对象类型,一定要继承自 QObject class MySignals(QObject): # 定义一种信号,两个参数 类型分别是: QTextBrowser 和 字符串 # 调用 emit方法 发信号时,传入参数 必须是这里指定的 参数类型 text_print = Signal(QTextBrowser, str) # 还可以定义其他种类的信号 update_table = Signal(str) # 实例化 global_ms = MySignals() class Stats: def __init__(self): self.ui = QUiLoader().load('main.ui') # 自定义信号的处理函数 global_ms.text_print.connect(self.printToGui) def printToGui(self, fb, text): fb.append(str(text)) fb.ensureCursorVisible() def task1(self): def threadFunc(): # 通过Signal 的 emit 触发执行 主线程里面的处理函数 # emit参数和定义Signal的数量、类型必须一致 global_ms.text_print.emit(self.ui.infoBox1, '输出内容') thread = Thread(target=threadFunc) thread.start() def task2(self): def threadFunc(): global_ms.text_print.emit(self.ui.infoBox2, '输出内容') thread = Thread(target=threadFunc) thread.start()
时间: 2024-04-29 14:20:00 浏览: 104
bqt:通过Blender中的事件循环帮助引导PySide2的文件
这段代码是一个使用 PySide2 模块创建 GUI 应用程序的例子。其中包含了创建 QApplication 和 QTextBrowser 的语句,以及加载 UI 文件和实例化自定义的信号源对象 MySignals 的代码。MySignals 中定义了两种信号,分别是 text_print 和 update_table,用于在任务执行时向 GUI 发送消息。Stats 类中的 printToGui 函数是一个自定义的槽函数,用于接收 text_print 信号,并将消息追加到 QTextBrowser 中显示。task1 和 task2 函数分别是两个任务的执行函数,这些任务会在新的线程中执行,而不会阻塞主线程。在这些任务中,我们通过调用 MySignals 中的 text_print 信号来触发 printToGui 函数的执行,从而在 GUI 中显示消息。
阅读全文