Im в настоящее время пытается изменить изображение в виджере метки tkinter, используя привязку к ключу возврата. После нажатия клавиши возврата я хочу, чтобы изображение изменилось на «im2», затем подождите 2 секунды и снова измените на «im3». код я использую до сих пор:Изображение в метке не меняет меня после вызова функции
window = tk.Tk()
window.title("Testwindow")
window.geometry("800x800")
window.configure(background='grey')
# images
im1_path = "im1.gif"
im2_path = "im2.gif"
im3_path = "im3.gif"
im1 = ImageTk.PhotoImage(Image.open(im1_path))
im2 = ImageTk.PhotoImage(Image.open(im2_path))
im3 = ImageTk.PhotoImage(Image.open(im3_path))
panel = tk.Label(window, image = im1)
panel.pack(side = "bottom", fill = "both", expand = "yes")
def callback(e):
panel.configure(image = im2)
panel.image = im2
time.sleep(2)
panel.configure(image = im3)
panel.image = im3
window.bind("<Return>", callback)
window.mainloop()
Но вместо того, чтобы изменить изображение в два раза только меняется один раз в «IM3» 2 секунды после нажатия кнопки возврата, так или иначе не отображается первое изменение. Кто-нибудь знает, почему?
изменения не отражаются в пользовательском интерфейсе, пока он выполняет код , Обновления происходят только в 'mainloop()'. – msw
Также см. Http://stackoverflow.com/questions/30284270/why-does-time-sleep-pause-tkinter-window-before-it-opens и http://stackoverflow.com/questions/33175457/time-sleep -equivalent-on-tkinter –
@ PM2Ring, Спасибо большое! –