Я работаю с окном Toplevel в python Tkinter, и я не могу заставить встроенные виджеты отображаться до завершения моего другого кода. Рамка появляется, он правильно выполняет мой другой код, но виджет text/progressbar появляется только в том случае, если я каким-то образом прерываю цикл. Рамка успешно уничтожается в конце. Смотри ниже.Виджеты Tkinter Toplevel не отображаются - python
Вот мой Toplevel код:
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()
http://stackoverflow.com/questions/23145696/tkinter-toplevel-window-not-getting-displayed может быть полезным –