gpt4 book ai didi

python - Tkinter 顶级小部件不显示 - python

转载 作者:太空宇宙 更新时间:2023-11-03 17:47:00 26 4
gpt4 key购买 nike

我正在 python Tkinter 中使用顶级窗口,在我的其他代码完成之前,我似乎无法显示嵌入的小部件。框架显示出来,它正确地循环遍历我的其他代码,但是文本/进度条小部件仅在我以某种方式中断循环时才显示。最后框架被成功销毁。见下文。

这是我的顶级代码:

class ProgressTrack:
def __init__(self, master, variable, steps, application):
self.progress_frame = Toplevel(master)
self.progress_frame.geometry("500x140+30+30")
self.progress_frame.wm_title("Please wait...")
self.progress_frame.wm_iconbitmap(bitmap="R:\\CHPcomm\\SLS\\PSSR\\bin\\installation_files\\icon\\PSIDiaryLite.ico")

progress_text = Canvas(self.progress_frame)
progress_text.place(x=20,y=20,width=480,height=60)
progress_text.create_text(10, 30, anchor=W, width=460, font=("Arial", 12), text="Please do not use " + application + " during execution. Doing so, will interrupt execution.")

self.progress_bar = Progressbar(self.progress_frame, orient='horizontal', length=440, maximum=steps, variable=variable, mode='determinate')
self.progress_bar.place(x=20,y=100,width=450,height=20)

我从以下类的实例中调用它,该类是在用户单击主窗口上的按钮时创建的:

class Checklist:
def __init__(self, master, var):
self.progress = ProgressTrack(master, 0, 5, 'Microsoft Word')

while var:
#MY OTHER CODE
self.progress.progress_bar.step()
self.progress.progress_frame.destroy()

最佳答案

你必须知道tkinter是单线程的。此外,窗口(以及您在屏幕上看到的所有内容)仅在空闲(不执行任何操作)或调用 w.update_idletasks() 时更新其外观,其中 w 是任何小部件。这意味着当您处于循环中并更改进度条时,在循环完成之前屏幕上不会发生任何事情。

所以你的新代码现在可以是

    while var:
#MY OTHER CODE
self.progress.progress_bar.step()
self.progress.progress_frame.update_idletasks()
self.progress.progress_frame.destroy()

关于python - Tkinter 顶级小部件不显示 - python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29634742/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com