Python 3: urllib.request.urlopen与Progressb

2024-10-01 09:36:06 发布

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

我是Python新手,在获取一些HTML文件/url的内容并用progressbar显示状态时遇到了一个问题:

这是我使用的相关代码:

进度条:

def createProgressbar(self):
        self.progressbarVar = StringVar()
        self.progressbar = ttk.Progressbar( self.masterWindow, variable=self.progressbarVar, length=400, maximum=100, mode='determinate' )
        self.progressbar.place(x=100, y=760)

        self.progressbarStatus = Label( self.masterWindow, text='Please wait ...', bg='#fafafa', fg='#333', bd=0 )
        self.progressbarStatus.place(x=100, y=730)

阅读HTML:

^{pr2}$

一般来说,这很好,但是当循环被处理时,整个界面只显示一个beachball(macos)。在循环的末尾,progressbar从0直接跳到100%。在

有没有更好的方法,不用挂断接口?在


Tags: 文件代码进度条selfurl内容状态def
1条回答
网友
1楼 · 发布于 2024-10-01 09:36:06

不要一次性读取数据,那样会阻塞UI。相反,通过将字节量传递给open.read(),例如open.read(1024),读取少量数据(例如8192/1024字节)。读取数据后,使用app.update()刷新UI,假设app是Tk实例(在代码的某个地方,您应该为Tk()分配一些变量)。将其放入while循环中,并在read()函数返回一个空字节字符串(b"")时停止while查找,表示下载完成。不确定为什么progressbar从0跳到100%,我将运行代码并进行调查。在

相关问题 更多 >