我遇到的问题是,当我尝试使用 time.sleep(3) 将第一个函数(StartUpScr)小部件在屏幕上保留 3 秒,然后删除放置在屏幕上的所有小部件,然后继续放置下一个函数(MenuScr)小部件。我已成功使用 destroy() 删除第一个小部件并将其替换为第二个小部件,但由于某种原因,在函数和主程序中的任何位置输入 time.sleep(3) 时,而不是第一个小部件保留3 秒,然后被替换,它会延迟程序的启动,产生一个空白屏幕,然后快速闪过第一个屏幕到第二个屏幕。
from tkinter import *
import tkinter
import time
window = tkinter.Tk()
window.title("BINARY-SUMS!!!")
window.geometry("1000x800")
window.wm_iconbitmap('flower3.ico')
window.configure(background='lavender')
def StartUpScr():
StartUpScr = tkinter.Label(window, text="FIRST-SCREEN!!!",fg = "Aqua",bg = "Lavender",font = ("Adobe Gothic Std B", 90, "bold" )).pack()
StartUpLabel = tkinter.Label(window, text="Developed by Robert Bibb 2016",bg = "Lavender",font = ("Calibri Light (Headings)", 10, "italic" ))
StartUpLabel.pack()
StartUpLabel.place(x = 400, y = 775)
def MenuScr():
StartUpScr = tkinter.Label(window, text="SECOND-SCREEN!!!",fg = "green",bg = "Lavender",font = ("Adobe Gothic Std B", 85, "bold" ))
StartUpScr.pack()
if __name__ == "__main__":
StartUpScr()
time.sleep(3)
for widget in window.winfo_children():
widget.destroy()
MenuScr()
最佳答案
time.sleep() 在这里不起作用,因为它会停止程序的执行,您必须使用 after...并且在 GUI 编程中使用 sleep 也是一个不好的做法。
root.after(time_delay, function_to_run, args_of_fun_to_run)
所以在你的情况下它会喜欢
def destroy():
#destroy here
for widget in window.winfo_children():
widget.destroy()
以及 if 语句之后 -
if __name__ == "__main__":
StartUpScr()
window.after(3000, destroy)
MenuScr()
关于python - Time.sleep() 函数放置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38545275/