tkinter - 使用平滑的 "fading" 动画将帧隐藏到右侧

tkinter - make a frame hide to the right with smooth "fading" animation

我做了一个简单的程序,主要 window 有一个框架 hideout 会慢慢移出屏幕

但是不行

import tkinter as tk
from tkinter import ttk
import time

root = tk.Tk()
root.geometry('360x640')

hideout = tk.Frame(root, background= '#fff', width = 360, height= 640)
def initial(*args):
    for i in range(361):
        time.sleep(0.01)
        about.place(x=i,y=0)

root.after(0,initial)
root.mainloop()

这里有什么问题?

您正在使用未定义的变量:在 about 上调用 place() 时,您可能是指 hideout

“褪色”可以直接用root.after回调控制;使用 time.sleep 将在动画期间阻止您的 GUI;这是不可取的。

这是一个工作示例:

import tkinter as tk

def initial(t=0):
    hideout.place(x=t, y=0)
    if t > 360:
        return
    root.after(10, initial, t+1)

if __name__ == '__main__':

    root = tk.Tk()
    root.geometry('360x640')
    hideout = tk.Frame(root, background='#fff', width=360, height=640)

    initial()
    root.mainloop()