在我的代码中,我试图为青蛙游戏制作一个加载屏幕,但是由于某种原因,我遇到一个问题,即我显示图片,然后执行.sleep
函数,然后在顶部显示标签但是它会同时显示两个代码,只是在应该运行1秒钟后运行代码,任何人都可以帮忙吗?
以下是我的代码:
from tkinter import *
import tkinter as tk
import time
window = Tk()
window.geometry("1300x899")
LoadingScreen = PhotoImage(file = "FroggerLoad.gif")
Loading = Label(master = window, image = LoadingScreen)
Loading.pack()
Loading.place(x = 65, y = 0)
time.sleep(1)
FroggerDisplay = Label(master = window, font ("ComicSans",100,"bold"),text = "Frogger")
FroggerDisplay.pack()
FroggerDisplay.place(x = 500, y = 300)
window.mainloop()
答案 0 :(得分:0)
在启动time.sleep(1)
之前使用window.mainloop()
时,仅在1秒钟后创建窗口,并且FroggerDisplay
标签将与之同时创建。因此,您现在不能使用time.sleep(seconds)
。
但是,您可以使用window.after(ms, func)
方法,并将time.sleep(1)
和{之间的所有代码放入函数中{1}}。请注意,与window.mainloop()
不同的是,您必须给时间time.sleep(seconds)
(第一个参数)毫秒。
下面是编辑后的代码:
window.after
PS:1)为什么同时使用from tkinter import *
def create_fd_label():
frogger_display = Label(root, font=("ComicSans", 100, "bold"), text="Frogger") # create a label to display
frogger_display.place(x=500, y=300) # place the label for frogger display
root = Tk() # create the root window
root.geometry("1300x899") # set the root window's size
loading_screen = PhotoImage(file="FroggerLoad.gif") # create the "Loading" image
loading = Label(root, image=loading_screen) # create the label with the "Loading" image
loading.place(x=65, y=0) # place the label for loading screen
root.after(1000, create_fd_label) # root.after(ms, func)
root.mainloop() # start the root window's mainloop
和.pack(...)
方法-Tkinter将忽略第一个方法(此处为.place(...)
)。
2)最好使用.pack(...)
小部件来创建游戏-与标签支持透明性且易于使用的标签不同。例如:
Canvas
注意:您可能需要更改from tkinter import *
root = Tk() # create the root window
root.geometry("1300x899") # set the root window's size
canv = Canvas(root) # create the Canvas widget
canv.pack(fill=BOTH, expand=YES) # and pack it on the screen
loading_screen = PhotoImage(file="FroggerLoad.gif") # open the "Loading" image
canv.create_image((65, 0), image=loading_screen) # create it on the Canvas
root.after(1000, lambda: canv.create_text((500, 300),
font=("ComicSans", 100, "bold"),
text="Frogger")) # root.after(ms, func)
root.mainloop() # start the root window's mainloop
的坐标。