2013-12-21 40 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)