下面的程序應該計數和int並在標籤中顯示它的值。 但過了一段時間,GUI停止工作,而循環連續。PyQt 4用戶界面凍結
from PyQt4 import QtGui,QtCore
import sys
class main_window(QtGui.QWidget):
def __init__(self,parent=None):
#Layout
QtGui.QWidget.__init__(self,parent)
self.bt=QtGui.QPushButton('crash')
self.lbl=QtGui.QLabel('count')
ver=QtGui.QHBoxLayout(self)
ver.addWidget(self.bt)
ver.addWidget(self.lbl)
self.cnt=0
self.running=False
self.connect(self.bt,QtCore.SIGNAL("clicked()"),self.count)
def count(self):
self.running=True
while self.running:
self.cnt+=1
print self.cnt
self.lbl.setText(str(self.cnt))
self.repaint()
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
mw=main_window()
mw.show()
sys.exit(app.exec_())
任何幫助?
我試圖儘可能簡化我的問題,所以是的,計劃停止按鈕。 放入一段時間睡眠命令甚至會使gui更快地崩潰。 – tillsten 2009-12-20 20:32:09
您最好使用QTimer(http://doc.trolltech.com/3.3/qtimer.html)而不是while循環,並根據需要啓動/停止它。 – Li0liQ 2009-12-20 20:45:15
此外,如果您使用單線程,只要執行while循環,您的停止按鈕將不起作用。所以,正如我所說的,嘗試使用QTimer。 – Li0liQ 2009-12-20 20:47:28