2013-12-21 71 views
0

我有事件循環的問題。要了解,我想在一些循環中更新標籤/文本瀏覽器/ lineEdit 文本,而沒有按下停止按鈕。Python與Qt,事件循環工作

def __init__(self): 
    QtGui.QMainWindow.__init__(self) 
    self.ui = Ui_MainWindow() 
    self.ui.setupUi(self) 
    self.ui.btnStart.clicked.connect(self.btnStart_Clicked) 
    self.ui.btnStop.clicked.connect(self.btnStop_Clicked) 
    self.startTime = dt.datetime(2013, 1, 1, 0, 0, 0) 
    self.nowTime = dt.datetime(2013, 1, 1, 0, 0, 0) 
    self.ui.lineStart.setText(self.startTime.strftime("%Y-%m-%d %H:%M")) 
    self.ui.lineNow.setText(self.nowTime.strftime("%Y-%m-%d %H:%M")) 
    self.ui.textBrowser.setText(self.nowTime.strftime("%Y-%m-%d %H:%M")) 



def btnStart_Clicked(self): 
    print(12) 
    while (not self.btnStop_Clicked()): 
     print(23) 
     self.nowTime += dt.timedelta(minutes = 25) 
     self.ui.textBrowser.setText(self.nowTime.strftime("%Y-%m-%d %H:%M")) 
     time.sleep(2) 
+0

檢查錯誤日誌 – Valeriy

+0

什麼是你所面臨的問題? – lpapp

回答

2

Qt在空閒時更新它的Gui。爲了克服這個問題,你應該使用線程或產生你的更新函數,例如通過使用定時器來更新。以下是我用來重新安排每100ms更新的一些代碼。用例與你的相似。

self.timer = QtCore.QTimer(self.wid) 
    self.timer.timeout.connect(self.UpdateTab) 
    self.timer.start(100) 
1

請立即更新,請使用processEvents

while (not self.btnStop_Clicked()): 
    self.nowTime += dt.timedelta(minutes = 25) 
    self.ui.textBrowser.setText(self.nowTime.strftime("%Y-%m-%d %H:%M")) 
    QtGui.qApp.processEvents() 
    time.sleep(2)