为什么我在顶层窗口中的进度栏​​没有移动?

时间:2019-07-17 19:40:03

标签: python tkinter

我实际上正在创建一个包含搜索数据的图形用户界面。我想显示一个加载进度条(不确定)以显示正在加载结果。我希望这个进度条在新的顶层窗口中,但是我尝试将其放置最初没有显示。因此,经过大量研究,我让它出现在屏幕上,但存在问题。它会打开带有进度条的窗口,所有内容都会冻结,并且进度条本身无法正常工作,但是窗口会被及时破坏。我希望进度条移动,使其看起来具有响应性,以便用户知道发生了什么事情。在加载结果之前,然后开始加载结果,其中包括for循环2-3次,然后收集所有结果,然后完全销毁顶层窗口。 一切都在发生,请接受新窗口的冻结,进度条不会移动。

我已经尽力了。

class Loading:
    def __init__(self,title):
        self.title = title
        self.window = Toplevel()
        self.window.geometry('350x40+100+100')
        self.window.title(self.title)
        self.window.lift()
        self.window.grab_set()
        self.window.focus()

    def start(self):
        self.pbar = Progressbar(self.window, orient="horizontal",length=300, 
         mode="indeterminate")
        self.pbar.place(x=10,y=5,height = 20,width = 300)
        print('starting loading')
        self.pbar.start()
        self.window.update()

    def stop(self):
        self.window.destroy()

我希望我的顶级窗口显示进度条移动,直到所有rseults从不同的文件加载,然后在此之后销毁

1 个答案:

答案 0 :(得分:0)

也许您可以尝试以下代码段!

from tkinter import *
from tkinter.ttk import *

root = Tk()
root.geometry('100x100')


def progressbar():
    pwin = Toplevel(root)
    pwin.geometry('350x40+100+100')
    pwin.title('Sample progressbar')
    pbar = Progressbar(pwin, orient="horizontal", length=300,
                       mode="indeterminate")
    pbar.place(x=10, y=5, height=20, width=300)
    print('starting loading')
    pbar.start()
    pwin.update()


Button(root, text='PBAR', command=progressbar).pack()
root.mainloop()

然后,您可以在加载完成后使用pwin.destroy()破坏progressbar