1
假设我有收集文件和稍后复制的任务。收集QProgressBar时显示出一些不确定的“繁忙”状态。在这个过程之后,我们将复制收集的文件并显示进度。 问题是,我可以做任何事情,但不能连续进行。向下是PySide中的小代码,它通过按下QButton 1和2来显示这个工作,但不是在连续任务中。请帮忙。如何实现QProgressBar从“繁忙”模式到标准进度模式的转换?
import sys, time
from PySide.QtGui import *
from PySide.QtCore import *
class WidgetWithBar(QWidget):
def __init__(self):
super(WidgetWithBar, self).__init__()
self.progress = QProgressBar(self)
self.progress . setAlignment(Qt.AlignJustify)
self.progress . setValue(0)
button1 = QPushButton("Waiting for Job", self)
button1 . clicked.connect(self.wait)
button2 = QPushButton("Doing Job", self)
button2 . clicked.connect(self.go)
self.layout = QVBoxLayout()
self.layout.addWidget(self.progress)
self.layout.addWidget(button1)
self.layout.addWidget(button2)
self.setLayout(self.layout)
def wait(self):
self.progress.setRange(0,0)
# -- this two lines to comment out
#time.sleep(2)
#self.go()
# -- EOLines to comment out
def go(self):
n = 20
self.progress.setRange(0,n)
# DO SOMETHING TO SHOW THE PROGRESS
for t in range(n):
time.sleep(.1)
self.progress.setValue(t+1)
def main():
app = QApplication(sys.argv)
w = WidgetWithBar()
w.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
所以,如果我注释掉上两条线,要使用只需按下一个按钮,进度条就不会显示“忙”模式在所有启动这两个功能!