使用PyQt4的QProgressBar的奇怪行为

时间:2011-11-29 23:01:08

标签: python linux qt pyqt progress

我有这个代码示例:

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。 相反,尽管屏幕上打印了所有值,但进度条仅显示其中的一些值。此外,条形图出现在值== 5.我知道如何使用QBasicTimer()获得适当的结果,但为什么这个不起作用?我犯了一个愚蠢的错误吗?

1 个答案:

答案 0 :(得分:1)

尝试添加

QApplication.processEvents()

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