看板 Python 關於我們 聯絡資訊
※ 引述《noshare (zzz...)》之銘言: : 因為想學習使用Qthread方式來避免pyqt的畫面會凍結的問題。 : 以下是我的程式碼 : class MyWidget(QWidget): : def __init__(self, parent = None): : super(MyWidget, self).__init__(parent) : ... : def createLayout(self): : self.button_config= QPushButton(self) : combo_box_option = ["1","3","5","10","20"] : self.combo = QComboBox(self) : for t in combo_box_option: : self.combo.addItem(t) : ... : def __init__(self,parent=None): : super(MyThread,self).__init__(parent) : def run(self): : for i in range(x): : self.sec_changed_signal.emit(i) : time.sleep(1) : 想知道有沒有辦法讓最後一個for迴圈裡面的x值, : 能夠等於前一個class裡面最後一行下拉式選擇後的config_result : 或是有其他種寫法可以達成在使用迴圈時,GUI不會出現無法反應的狀態。 : 謝謝各位~ 我會建議你另外開一個存資料的地方 QList之類的 Qthread去裡面更新資料 另外一個地方是給GUI去 讀取裡面的資料 可能用timer 每秒讀 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.226.130.201 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1512569013.A.BEB.html
uranusjr: QList 沒有 thread-safe, 這樣讀遲早出事 12/06 22:07
我找一下我的作法 大概是這樣 初始化的時候預先塞值 QMap<QString, QString> infoDataList; infoDataList.insert("VIN", "200"); infoDataList.insert("Temp", "25"); infoDataList.insert("FanSpeed", "200"); 然後我的QThread 就是去更新裡面的值 再用demo Timer去讀取裡面的值 沒有刪除 只是更新 ※ 編輯: MOONY135 (36.226.130.201), 12/06/2017 22:13:50