如何在显示标签之前暂停我的代码

时间:2019-06-11 19:08:37

标签: python tkinter

在我的代码中,我试图为青蛙游戏制作一个加载屏幕,但是由于某种原因,我遇到一个问题,即我显示图片,然后执行.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()

1 个答案:

答案 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 的坐标。