python – PyQt 4 UI冻结

python – PyQt 4 UI冻结,第1张

概述以下程序应该只计数和int并在标签中显示其值. 但过了一会儿,GUI停止工作,而循环继续. from PyQt4 import QtGui,QtCoreimport sysclass main_window(QtGui.QWidget): def __init__(self,parent=None): #Layout QtGui.QWid 以下程序应该只计数和int并在标签中显示其值.
但过了一会儿,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冻结所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1194445.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存