但过了一会儿,GUI停止工作,而循环继续.
from PyQt4 import QtGui,QtCoreimport sysclass 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_())
有帮助吗?
解决方法def count(self): self.running=True while self.running: self.cnt+=1 print self.cnt self.lbl.setText(str(self.cnt)) self.repaint()
你有没有考虑过这个无限循环的退出?例如. self.running =假.
GUI可能会停止工作,因为它没有足够的时间来执行重绘.您可能希望在循环中添加一些time.sleep以等待GUI重新绘制.
更新:您应该使用QTimer而不是简单的while循环来实现您正在实施的行为.
总结以上是内存溢出为你收集整理的python – PyQt 4 UI冻结全部内容,希望文章能够帮你解决python – PyQt 4 UI冻结所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)