qt - 如何流畅地显示QProgressBar?

标签 qt pyqt pyside qprogressbar

我正在 MacOSX 上学习 Pyside QProgressBar。当我像下面一样使用 QProgressBar 时,它仅指示 0% 或 100%。如何流畅地制作一个QProgressBar?有什么办法可以做到这一点吗?

from PySide.QtGui import QApplication, QProgressBar, QWidget
from PySide.QtCore import QTimer
import time

app = QApplication([])
pbar = QProgressBar()
pbar.setMinimum(0)
pbar.setMaximum(100)

pbar.show()

def drawBar():
    global pbar
    pbar.update()

t = QTimer()
t.timeout.connect(drawBar)
t.start(100)

for i in range(1,101):
    time.sleep(0.1)
    pbar.setValue(i)

app.exec_()

最佳答案

删除此代码:

for i in range(1,101):   # this won't work, because
    time.sleep(0.1)      # Qt's event loop can't run while
    pbar.setValue(i)     # you are forcing the thread to sleep

而是添加一个全局变量 p:

p = 0

并在您的drawBar()函数中增加它:

def drawBar():
    global pbar
    global p
    p = p + 1
    pbar.setValue(p)
    pbar.update()

关于qt - 如何流畅地显示QProgressBar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24645585/

相关文章:

c++ - 寻找合适的数据存储和搜索引擎

python - 找不到 PySide SVG 图像格式?

python - PyQt4、QThread 和打开大文件而不卡住 GUI

python pyqt QPainter 小部件不显示在布局中

Python Qt 绑定(bind) : How to increase the width of lines with width 0

python - 中断 QThread sleep

qt - 直接显示 9 声子错误 "Pins cannot connect"

qt - 删除QLineEdit的边框

python - PyQt4:加载qtsql表时显示进度条

python - 如何在 PySide 和 Python 3.X 中将字节写入 QDataStream?