[英]Python multiprocessing for updating pyqt5 gui
我想使用 python 的多處理 pyqt5 gui。 這是我的代碼
class GUI(QWidget):
trigger = pyqtSignal()
i=0
def __init__(self):
super().__init__()
self.setGeometry(0,0,500,200)
self.b=QLabel(self)
self.b.setText("hello")
self.trigger.connect(lambda:self.f(self.b))
self.show()
def f(self,p):
print("hello")
p.setText("h"+str(self.i))
self.i=self.i+1
def update(self):
for i in range(10):
self.trigger.emit()
time.sleep(2)
def work(obj):
obj.update()
app = QApplication(sys.argv)
win=GUI()
if __name__ == '__main__':
p=Process(target=work,args=(win,))
p.start()
app.exec_()
p.join()
我得到錯誤
TypeError: cannot pickle 'GUI' object
我已經完成了移動到頂部模塊的解決方案仍然沒有用。
TL; 博士; 您不能從另一個進程修改 GUI。
多重處理模塊使用pickle功能使用pickle模塊保存和重建對象,但僅此模塊您可以為具有簡單狀態的對象執行此任務,即對於那些行為由其屬性決定但在復雜對象中的對象沒有實現。 QObjects(以及 QWidgets)是具有許多內部狀態的復雜對象,因此它們不可能被挑選出來。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.