gpt4 book ai didi

python - PyQt 类多进程

转载 作者:太空宇宙 更新时间:2023-11-04 00:53:38 27 4
gpt4 key购买 nike

我希望能够实例化多个 QWidget() 类型类,每个类都在一个单独的进程中。就像您打开新标签页时 Google Chrome 所做的那样。

这在 python 中可能吗?

最佳答案

GUI 元素(包括QWidget)只能在主线程中创建。

但是,您可以将每个选项卡的模型和业务逻辑放在单独的线程中,并使用 SignalsSlots 分别与主线程通信。 Qt documentation for QThreads提供了执行此操作的 Worker Pattern 示例。

这样,即使任何工作进程挂起,也不会影响主 GUI 线程的响应能力。

class MyTab(QtGui.QWidget):
def __init__(self, parent):
...
self.worker = Worker()
self.thread = QtCore.QThread(self)
self.worker.moveToThread(self.thread)
self.worker.resultReady.connect(self.handleResult)
self.thread.start()

def callSomeFunction(self):
QtCore.QMetaObject.invokeMethod(self.worker, 'someFunction', QtCore.Qt.QueuedConnection, QtCore.Q_ARG(str, 'arg1'))

@QtCore.pyqtSlot(object)
def handleResult(self, result):
... # do stuff with result


class Worker(QtCore.QObject):

resultReady = QtCore.pyqtSignal(object)

@QtCore.pyqtSlot(str)
def someFunction(self, arg):
...
self.resultReady.emit({'func': 'someFunction', 'result': True})

关于python - PyQt 类多进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36030503/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com