【发布时间】:2021-09-20 22:37:47
【问题描述】:
谁能解释我如何正确使用主循环? 我正在尝试根据条件更新图像,问题是一切似乎都可以正常工作,但画布上的图像没有改变。
from tkinter import *
class Panel():
def __init__(self, master):
self.master=master
self.frame1= Frame(master, width=500, height=500)
self.frame1.pack()
self.canvas1 = Canvas(self.frame1, width=1000, height=1000)
self.canvas1.grid(row=0 , column=0)
self.canvas1.pack()
self.images=[]
self.images.append(PhotoImage(file="download-icones-png-1.png"))
self.images.append(PhotoImage(file="Download-Icon.png"))
self.number = 0
self.image_on_canvas = self.canvas1.create_image(0, 0, anchor = NW, image = self.images[self.number])
#self.update_image()
def update_image(self):
if(self.number == 1):
print("Current number is:",self.number)
self.canvas1.itemconfig(self.image_on_canvas, image=self.images[self.number])
self.number = 0
print("The number change to:", self.number)
self.canvas1.after(2000, self.update_image)
elif(self.number==0):
print("Current number is:",self.number)
self.number = 1
self.canvas1.itemconfig(self.image_on_canvas, image=self.images[self.number])
print("The number change to:", self.number)
self.canvas1.after(2000, self.update_image)
def Main():
root = Tk()
cp=Panel(root)
cp.update_image()
root.mainloop()
Main()
谢谢
解决方案:
self.canvas1.after(2000, self.update_image)
必须在 if 语句之外
【问题讨论】:
-
尝试取消注释
self.update_image()then 而不是在 if 语句中将self.canvas1.after(2000, self.update_image)放在函数的开头/结尾。 -
我将 self.canvas1.after(2000, self.update_image) 放在函数之外并且正在工作。谢谢
标签: python user-interface tkinter