首页 > 解决方案 > 为什么我在顶层窗口中的进度条没有移动?

问题描述

我实际上正在创建一个包含搜索数据的 gui。我想显示一个加载进度条(不确定)以显示正在加载的结果。我希望这个进度条在一个新的顶层窗口中,但我试图放置它但它没有起初显示。所以经过多次研究,我让它出现在屏幕上,但它有一个问题。它打开带有进度条的窗口,一切都冻结了,进度条本身不起作用。但是窗口会按时销毁。我希望进度条移动,使其看起来有响应,以便用户了解正在发生的事情。我启动进度条就在加载结果之前,然后开始加载包含 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 从不同的文件中加载并在此之后被销毁

标签: pythontkinter

解决方案


也许你可以试试这段代码!

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


推荐阅读