PyQt 中主視窗和執行緒之間共享資料
多執行緒應用程式經常需要在主視窗執行緒與工作執行緒之間共用數據。為了確保線程安全和正確的通信,PyQt 提供了幾種實用的方法。
選項 1:直接引用主視窗
在此方法中,對主視窗的引用視窗傳遞給執行緒。然後線程可以直接存取主視窗中的數據,例如旋轉框的值。
<code class="python">class MainWindow(QtGui.QWidget): def __init__(self): # ... self.worker = Worker(self) # ... class Worker(QtCore.QThread): def __init__(self, host_window): super(Worker, self).__init__() self.host = host_window # ...</code>
選項 2:訊號和槽
PyQt 使用訊號和槽用於物件之間的通訊。在這種方法中,工作執行緒在資料變更時發出訊號,主視窗槽函數處理更新。
<code class="python">class MainWindow(QtGui.QWidget): def __init__(self): # ... self.worker = Worker() self.worker.beep.connect(self.update) # ... class Worker(QtCore.QThread): beep = QtCore.pyqtSignal(int) def __init__(self): super(Worker, self).__init__() # ...</code>
使用哪個選項?
選擇取決於執行緒的需求和所需的控制層級。
線程安全注意事項
小部件是不是線程安全的。因此,使用訊號和插槽來處理線程和主視窗之間的通訊至關重要。從多個執行緒直接操作小部件可能會導致意外行為。
以上是如何在 PyQt 中的主視窗和執行緒之間共享資料:直接引用與訊號和插槽?的詳細內容。更多資訊請關注PHP中文網其他相關文章!