是否可以使用动画在运行时简单地移动Tkinter TopLevel()窗口?我想到了一个由按钮触发的平滑的moveInAnimation。
下面是一些代码片段:
from Tkinter import Toplevel
class MoveInTopLevel(Toplevel):
'''
Animated MoveInToplevel.
'''
def __init__(self, *args, **kwargs):
Toplevel.__init__(self, *args, **kwargs)
self.overrideredirect(1)
def move_in_from_bottom(self, rootHeight):
y = rootHeight
y = max(y-1, 0)
s = "100x100+0+" + str(y)
print s
self.geometry(s)
self.deiconify()
if y > 0:
self.after(5, self.move_in_from_bottom(y))例如,在mainFunction中调用如下所示:
window = MoveInTopLevel()
window.move_in_from_bottom(480) # That's some resolution (height)当我运行这个程序时,在最终位置(0,0)正确地显示了窗口,所有坐标都从(0,479)打印到(0,0)。但是中间没有显示窗口,我叫deiconify()。
有人能帮我吗?我很困惑。^^
谢谢已经提前了。欢迎光临!
发布于 2015-01-25 17:10:08
请看这一行代码:
self.after(5, self.move_in_from_bottom(y))在这一行代码中,您将在调用后之前立即调用self.move_in_from_bottom,并将该调用(None)的结果传递给after命令。
after方法需要对函数的引用。一个常见的方法是使用lambda,尽管functools.partial也运行得很好。
下面是一个使用lambda的示例:
self.after(5, lambda y=y: self.move_in_from_bottom(y))https://stackoverflow.com/questions/28138115
复制相似问题