urllib.urlretrieve文件使GUI窗口不响应

2024-04-26 12:24:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Panda3D制作一个游戏,我正在制作一个下载程序来下载最新的更新。如果您不知道Panda3D是什么,请想象一下我所说的GUI是一个Tkinter窗口:P。我使用的函数是:

def doDownload():
    urllib.urlretrieve("http://hiddenfile/hi.txt", "hi.txt", reporthook=report)

def report(count, blockSize, totalSize):
    percent = int(count*blockSize*100/totalSize)
    gui.downloadBar['value'] = percent

但是,这使得GUI窗口没有响应,而控制台窗口是正常的。如果它没有响应,用户会认为它被卡住了,并结束它的进程,他们的游戏数据将被破坏。我试过在不同的线程上运行,比如:

def doDownload():
    threading.Thread(target=__doDownload).start()

def __doDownload():
    urllib.urlretrieve("http://hiddenfile/hi.txt", "hi.txt", reporthook=report)

def report(count, blockSize, totalSize):
    percent = int(count*blockSize*100/totalSize)
    gui.downloadBar['value'] = percent

但它甚至没有下载。有没有办法在没有窗口(例如Tkinter窗口)没有响应的情况下下载文件?你知道吗


Tags: reporttxt游戏tkinterdefcountguiurllib