【问题标题】:Strange behavior of QProgressBar with PyQt4QProgressBar 与 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() 获得适当的结果,但为什么这个不起作用?我犯了一个愚蠢的错误吗?

【问题讨论】:

    标签: python linux qt pyqt progress


    【解决方案1】:

    尝试添加一个

    QApplication.processEvents()
    

    就在 print value 之后(这应该会强制 UI 更新)。

    【讨论】:

      猜你喜欢
      • 2012-01-19
      • 2021-10-30
      • 2022-01-20
      • 2018-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-24
      相关资源
      最近更新 更多