显示旋转的电扇
#想显示宣传的电扇,先调用tkinter,制作了一个画布,绘制了一个静态的电扇,设置了一个按钮,希望调用zhuan()函数(通过循环,删除之前的电扇,绘制新电扇)想让它转起来。执行的时候,点按钮后一直没有转起来,是什么原因。有没有什么好的解决方案from tkinter import *
class Fan:
def __init__(self):
window=Tk()
self.canvas1=Canvas(window,width=500,height=500,bg="white")
self.canvas1.pack()
self.canvas1.create_arc(100, 100, 400, 400, start=0 , extent=20 , fill="red", tags="Arc1")
self.canvas1.create_arc(100, 100, 400, 400, start=90 , extent=20 , fill="red", tags="Arc2")
self.canvas1.create_arc(100, 100, 400, 400, start=180, extent=20 , fill="red", tags="Arc3")
self.canvas1.create_arc(100, 100, 400, 400, start=270, extent=20 , fill="red", tags="Arc4")
b1=Button(window,text="zhuan",command=self.zhuan)
b1.pack()
window.mainloop()
def zhuan(self):
i=0
while True:
self.canvas1.delete("Arc1","Arc2","Arc3","Arc4")
self.canvas1.create_arc(100,100,400,400,start=i,extent=20,fill="red",tags="Arc1")
self.canvas1.create_arc(100, 100, 400, 400, start=90 + i, extent=20 , fill="red", tags="Arc2")
self.canvas1.create_arc(100, 100, 400, 400, start=180 + i, extent=20 , fill="red", tags="Arc3")
self.canvas1.create_arc(100, 100, 400, 400, start=270 + i, extent=20, fill="red", tags="Arc4")
i+=1
Fan() 没玩过这东东
你可以先把其他代码注释掉或者暂时删除,单独试一下delete好不好用 wp231957 发表于 2020-4-9 13:24
没玩过这东东
你可以先把其他代码注释掉或者暂时删除,单独试一下delete好不好用
之前试过,好用~ tkinter刷新一下就行了
from tkinter import *
class Fan:
def __init__(self):
self.window=Tk()
self.canvas1=Canvas(self.window,width=500,height=500,bg="white")
self.canvas1.pack()
self.canvas1.create_arc(100, 100, 400, 400, start=0 , extent=20 , fill="red", tags="Arc1")
self.canvas1.create_arc(100, 100, 400, 400, start=90 , extent=20 , fill="red", tags="Arc2")
self.canvas1.create_arc(100, 100, 400, 400, start=180, extent=20 , fill="red", tags="Arc3")
self.canvas1.create_arc(100, 100, 400, 400, start=270, extent=20 , fill="red", tags="Arc4")
b1=Button(self.window,text="zhuan",command=self.zhuan)
b1.pack()
self.window.mainloop()
def zhuan(self):
i=0
while True:
self.canvas1.delete("Arc1","Arc2","Arc3","Arc4")
self.canvas1.create_arc(100,100,400,400,start=i,extent=20,fill="red",tags="Arc1")
self.canvas1.create_arc(100, 100, 400, 400, start=90 + i, extent=20 , fill="red", tags="Arc2")
self.canvas1.create_arc(100, 100, 400, 400, start=180 + i, extent=20 , fill="red", tags="Arc3")
self.canvas1.create_arc(100, 100, 400, 400, start=270 + i, extent=20, fill="red", tags="Arc4")
self.window.update()
i+=1
Fan()
snaker 发表于 2020-4-9 16:49
tkinter刷新一下就行了
Exception in Tkinter callback
Traceback (most recent call last):
File "D:\python\lib\tkinter\__init__.py", line 1705, in __call__
return self.func(*args)
File "D:/PyCharm Community Edition 2019.3.4/PycharmProjects/untitled/Tkinter/习题16(未解决).py", line 23, in zhuan
self.canvas1.delete("Arc1","Arc2","Arc3","Arc4")
File "D:\python\lib\tkinter\__init__.py", line 2514, in delete
self.tk.call((self._w, 'delete') + args)
_tkinter.TclError: invalid command name ".!canvas"
谢谢,现在已经可以执行了。执行完毕后,又出现了上面的问题是怎么回事呢? stoic 发表于 2020-4-9 17:04
Exception in Tkinter callback
Traceback (most recent call last):
File "D:\python\lib\tkinter\_ ...
不影响,一直在循环里,没有退出循环就关闭tkinter就会出现这个问题
页:
[1]