我正在尝试进行一个下载操作,它有一个自动进行的进度条。在
当我运行这段代码时,进度条工作得很好,但是当我用鼠标点击表单时,程序就停止工作了。在
import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import urllib
app = QApplication(sys.argv)
app.setStyle('Cleanlooks')
label = QLabel()
progressx = QProgressBar(label)
url = "http://l3cdn.riotgames.com/ShellInstaller/EUNE/LeagueofLegends_EUNE_Installer_9_15_2014.exe"
name = url.split('/')[-1]
def report(count, blockSize, totalSize):
global percent
percent = int(count*blockSize*100/totalSize)
sys.stdout.write("\r%d%%" % percent + ' complete')
progressx.setValue(percent)
label.show()
urllib.urlretrieve(url, name, reporthook=report)
sys.exit(app.exec_())
这是进度条:
我不想通过在循环中调用
show
来更新UI,而是调用QtGui.QApplication.processEvents()
:或者,如果它仍然不能按您的预期工作,您可以尝试使用QThread在它自己的线程中实现下载过程,并将进度传递给带有信号和槽结构的进度条。如果你需要的话,我可以给你举个例子。在
相关问题 更多 >
编程相关推荐