我做了第一个简单的tkinter工具。它通过FTP连接到服务器并上传文件(它用于餐馆的菜单卡以便在他们的服务器上运行)。 这一切都很好。 我试图制作一个表明上传的动画。而且有一个问题。
self.anim = Canvas(self, width=500, height=300) # Canvas for Animation
self.anim.grid(column=0, row=5)
self.animation()
在那里我通过create_...
方法绘制了一台PC,然后应该是什么卡,缩小屏幕并上升。运行我看到5个运行中的4个运行它应该如何显示(到目前为止),但有时它看起来它呈现动画两次(因子的第二个双倍)并且这些是重叠的,缩放两倍大并且远远超出意图停止......
这不是一个好兆头,相同的输入,不同的输出。有谁能解释为什么会这样?
x0, y0, x1, y1 = (185, 100, 190, 110) # menucard
ix0, iy0, ix1, iy1 = (187, 102, 189, 104) # menucard's "image"
self.speisekarte = self.anim.create_rectangle(x0, y0, x1, y1, # menucard
outline='#bbb', fill='#fef',
stipple='gray75', tag='karte')
self.karteimg = self.anim.create_rectangle(ix0, iy0, ix1, iy1, # menucard's "image"
outline='#f77', fill='#f57',
stipple='gray50', tag='karte')
self.anim.create_line(185, 100, 185, 109, tag='karte')
self.anim.update()
for z in range(13):
self.anim.after(100, self.zoom())
for z in range(50):
self.anim.after(50, self.move())
self.anim.create_text(350, 50, text='O N L I N E !', fill='#f57')
def zoom(self):
self.anim.scale('karte', 185, 110, 1.09, 1.06)
self.anim.update()
def move(self):
self.anim.move('karte', 2, -1)
self.anim.update()
答案 0 :(得分:0)
@furas帮我解决了问题。从那里我必须找到退出该功能的方法。我现在发现了一个例子,所以现在它对我有用:
def animdrawUpload(self):
while self.move():
pass
return True
def move(self):
if self.anim.coords('karte')[0] > 300:
return False
self.anim.move('karte', 2, -1)
self.anim.update()
self.anim.after(100, self.move)
return True
最终我不得不希望我在windows10上得到相同的结果;)