我一直在爲此奮鬥一段時間。我會盡力解釋我想做什麼,也許你們可以幫助我。PYQT - 如何使用取消按鈕在我的GUI中取消循環?
所以可以說我有與它的地位標籤和 兩個循環GUI看起來像這樣:
for _a in range(3000):
self.changeLabel('_a= '+ str(_a))
for _b in range(5000):
self.changeLabel('_b=' + str(_b))
def changeLabel(self,_text):
self.ui.STATUS.setText(_text) <---ui is a GUI where label is placed.
APP.processEvents()
我希望有一個標籤(STATUS)與一個結果更新被壓在開始後(DONE ),並且我想在按下STOP按鈕時取消循環。
如何使用線程,QEventloop或任何其他方式(如果存在)實現此目的。我幾乎是初學PyQT,所以如果有人有任何想法 - 請分享。
謝謝。
1.使用間隔爲0的QTimer而不是低級的QObject定時器函數更容易嗎?來自「簡明英漢詞典」這將是很多事件的小處理。也許每個事件做10到100次迭代而不是一次? – Macke
@Macke:我想你也可以使用* QTimer *。不過,看不出這會如何讓事情變得更容易。是的,你可以在'yield'之前做多次迭代,但是你必須調用'processEvents()'來更新它們之間的GUI。通過使用一次迭代,您不必擔心這一點。請注意,這只是一個「概念驗證」,OP的任務是根據他/她的需求調整它。 –
線程呢?由於PYQT應該有自己的線程,是否可以在線程上完成? – zebov