python多进程pyqt界面_PyQt类多进程

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

但是,您可以将每个选项卡的模型和业务逻辑放在单独的线程中,并让每个选项卡使用Signals和Slots与主线程通信。Qt documentation for ^{}提供了一个Worker模式的示例。在

这样,如果任何工作进程挂起,它不会影响主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})

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值