Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyQt4与进度条一起崩溃_Python_Progress Bar_Pyqt4 - Fatal编程技术网

Python PyQt4与进度条一起崩溃

Python PyQt4与进度条一起崩溃,python,progress-bar,pyqt4,Python,Progress Bar,Pyqt4,我正在尝试进行一个下载操作,该操作有一个自动进行的进度条 当我运行此代码时,进度条工作正常,但当我在窗体中单击鼠标时,程序停止工作 import sys from PyQt4.QtGui import * from PyQt4.QtCore import * import urllib app = QApplication(sys.argv) app.setStyle('Cleanlooks') label = QLabel() progressx = QProgressBar(label)

我正在尝试进行一个下载操作,该操作有一个自动进行的进度条

当我运行此代码时,进度条工作正常,但当我在窗体中单击鼠标时,程序停止工作

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_())
这是进度条:


我将调用QtGui.QApplication.processEvents,而不是通过在循环中调用show来更新UI:


或者,如果它仍然不能按照您的意愿工作,您可以尝试使用在自己的线程中实现下载过程,并使用信号和插槽结构将进度传递给进度条。如果您需要,我可以为您提供一个示例。

请将回溯添加到您的帖子中,或者如果您没有回溯,请提供一个更详细的解释,说明如果您尝试运行您的程序会发生什么。啊,thx很多您的回溯都是最好的:
import sys
from PyQt4 import QtGui
import urllib

app = QtGui.QApplication(sys.argv)
app.setStyle('Cleanlooks')

progressx = QtGui.QProgressBar()
progressx.show()

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)

    QtGui.QApplication.processEvents()

urllib.urlretrieve(url, name, reporthook=report)
sys.exit(app.exec_())