QProgressBar 与 PyQt4 的奇怪行为
Posted
技术标签:
【中文标题】QProgressBar 与 PyQt4 的奇怪行为【英文标题】:Strange behavior of QProgressBar with PyQt4 【发布时间】:2011-11-29 23:01:07 【问题描述】:我有这个代码示例:
import sys
import time
from PyQt4.QtGui import *
from PyQt4.QtCore import *
class Bar(QDialog):
def __init__(self, parent=None):
super(Bar, self).__init__()
self.pbar = QProgressBar(self)
self.pbar.setValue(0)
layout = QHBoxLayout()
layout.addWidget(self.pbar)
self.setLayout(layout)
def main(self):
for value in range(1, 100):
time.sleep(1)
print value
self.pbar.setValue(value)
app = QApplication(sys.argv)
form = Bar()
form.show()
form.main()
app.exec_()
我希望进度条的值每秒增加 1。 相反,尽管所有值都打印在屏幕上,但进度条只显示其中的一部分。此外,该条仅在 value == 5 时出现。我知道如何使用 QBasicTimer() 获得适当的结果,但为什么这个不起作用?我犯了一个愚蠢的错误吗?
【问题讨论】:
【参考方案1】:尝试添加一个
QApplication.processEvents()
就在 print value
之后(这应该会强制 UI 更新)。
【讨论】:
以上是关于QProgressBar 与 PyQt4 的奇怪行为的主要内容,如果未能解决你的问题,请参考以下文章
如何在 PyQt4 中使用 setRowHeight 和 resizeRowToContents 调整行的大小?