Я пишу приложение, используя модуль tkinter в Python.Часть кода, с которой у меня возникают проблемы:
def sceneChange():
global num
num = num + 1
currentScene = scenes[num]
global label
label.destroy()
label = tk.Label(window, image = currentScene)
label.pack()
time1 = dt.datetime.utcnow().minute + dt.datetime.utcnow().second / 60
testTime = time1 + 4.44 / 60 # ~5 secs in the future
while dt.datetime.utcnow().minute + dt.datetime.utcnow().second / 60 < testTime:
pass
label.destroy()
num = num + 1
currentScene = scenes[num]
label = tk.Label(window, image = currentScene)
label.pack()
Используется в:
b = tk.Button(label, text = "Start", command = sceneChange, height = 1, width = 10)
b.place(x = 440, y = 48)
Команда label.pack перед циклом while не отображается в моем окне.Я пытаюсь заставить его отображаться в течение 5 секунд, а затем переключить изображение на что-то другое.Но это не так.Вся помощь будет оценена.Если я сделал что-то не так в форматировании моего вопроса, пожалуйста, дайте мне знать, чтобы я мог его улучшить :).Весь код ниже:
import tkinter as tk
import datetime as dt
window = tk.Tk()
window.title("Game")
scenes = [tk.PhotoImage(file = "TitleScreen.gif"), tk.PhotoImage(file = "ControlsScreen.gif"), tk.PhotoImage(file = "game.gif")]
num = 0
currentScene = scenes[num]
label = tk.Label(window, image = currentScene)
def sceneChange():
global num
num = num + 1
currentScene = scenes[num]
global label
label.destroy()
label = tk.Label(window, image = currentScene)
label.pack()
time1 = dt.datetime.utcnow().minute + dt.datetime.utcnow().second / 60 # current time
testTime = time1 + 4.44 / 60 # ~5 secs in the future
while dt.datetime.utcnow().minute + dt.datetime.utcnow().second / 60 < testTime:
pass
label.destroy()
num = num + 1
currentScene = scenes[num]
label = tk.Label(window, image = currentScene)
label.pack()
label.pack()
b = tk.Button(label, text = "Start", command = sceneChange, height = 1, width = 10)
b.place(x = 440, y = 48)
b1 = tk.Button(label, text = "Quit", command = exit, height = 1, width = 10)
b1.place(x = 440, y = 78)
label.mainloop()