簡體   English   中英

Python 多處理用於更新 pyqt5 gui

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM