gpt4 book ai didi

python - PyQt 4 用户界面卡住

转载 作者:太空宇宙 更新时间:2023-11-03 12:29:47 25 4
gpt4 key购买 nike

下面的程序应该只计算 int 并在标签中显示它的值。但过了一会儿,GUI 停止工作,而循环仍在继续。

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_())

有什么帮助吗?

最佳答案

您没有让 Qt 的事件循环运行,因此 GUI 没有响应。此外,不需要 repaint()QLabel.setText() 将重新绘制标签。它所做的只是排队一个额外的绘画事件,但这永远不会得到处理。

您需要做的是将 self.repaint() 替换为 QtGui.QApplication.processEvents()。这将使应用程序有机会在您处于循环中时处理任何未决事件(包括重绘以及 UI 交互)。

关于python - PyQt 4 用户界面卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1936868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com