【发布时间】:2024-05-30 03:25:02
【问题描述】:
我正在开发一个带有 PyQt5 和 2 个 QThreads 的 GUI,它们将使用各自的信号以及用于将错误代码发送回 GUI 的共享信号。我知道 QThreads 是要与 pyqtSignals 一起使用的,但是除了您从两个不同的线程发出共享信号之外,它们的行为是否与信号有关? 另外,在共享信号上使用 Qmutex 会确保线程同时访问它还是在处理信号时没用?
我编写了这个示例代码,它运行正常,但我不确定如何处理信号:
from PyQt5.QtCore import QObject, pyqtSignal, QThread, QCoreApplication
import time
import sys
class Class2(QThread):
def __init__(self, signal):
super().__init__()
self.signal2 = signal
def run(self):
self.signal2.emit("Class 2 signal emitted")
class Class1(QThread):
def __init__(self, signal):
super().__init__()
self.signal1 = signal
def run(self):
self.signal1.emit("Class 1 signal emitted")
class Action(QObject):
shared_signal = pyqtSignal(str)
def __init__(self):
super().__init__()
class1 = Class1(self.shared_signal)
class2 = Class2(self.shared_signal)
self.shared_signal.connect(self.action)
class1.start()
class2.start()
time.sleep(1)
def action(self, buffer):
print(buffer)
app = QCoreApplication([])
Action = Action()
sys.exit(app.exec_())
感谢您的帮助!
【问题讨论】:
标签: python python-3.x pyqt5 signals-slots qthread