我正在運行使用由我的腳本放在一起的LaTeX構建一組PDF的慢速過程。Tkinter盒子包裝在循環中很慢
這些PDF內置在for循環中。我想要顯示一個狀態窗口,爲每個學生添加一行循環,以便您可以看到進度。我一直在用print
這樣做,但我想要的東西與我已經轉移到的Tkinter接口很好地集成。
我有這樣的:
ReStatuswin = Toplevel(takefocus=True)
ReStatuswin.geometry('800x300')
ReStatuswin.title("Creating Reassessments...")
Rebox2 = MultiListbox(ReStatuswin, (("Student", 15), ("Standard", 25), ("Problems", 25)))
Rebox2.pack(side = TOP)
OKR = Button(ReStatuswin, text='OK', command=lambda:ReStatuswin.destroy())
OKR.pack(side = BOTTOM)
,然後循環:
for row in todaylist:
,然後,在循環中,在PDF作出後,
Rebox2.insert(END, listy)
它插入行很好,但它們都在整個循環完成後才顯示出來(與ReBox2窗口本身一起)。
任何想法是什麼導致延遲顯示?
謝謝!
嘗試在每行插入後調用'Rebox2.w.update_idletasks()'。更新顯示的某些任務(如調整大小和重繪窗口小部件)被稱爲空閒任務,因爲它們通常被延遲到應用程序處理事件完成。這會迫使應用程序在正常應用程序空閒之前發生。如果你還在循環之前調用它,它應該使ReBox2窗口本身更快顯示。 – martineau
@martineau感謝您的建議。它不喜歡.w.update;它是一個多列表框,而不是標準列表框,所以這可能是問題所在。我拿出了.w,它跑了,但沒有更新更快。 – DeltaG
這是一個錯字,對不起。應該是'Rebox2.update_idletasks()' - 即沒有'.w'。 – martineau