tkinter back ground并没有改变

时间:2017-06-26 17:19:31

标签: python tkinter

我正在为一个大学项目写一个小游戏,我已经创建了一个chagnes屏幕的功能,这当前有效,但是当我调用show screen功能以便背景改变并调用游戏功能时,tkinter停止工作它运行前3个函数然后破坏第4个但是没有任何反应,start_game()函数中的print语句出现在命令行中,但是上面的3个语句似乎什么也没做,我的tkinter小部件冻结了。并保持在当前屏幕上,而不是更新。

def showGameSurvival():
   clearScreen()
   changeBackground("Survival")
   createBackButton(showMain, 1003, 492)
   start_game()

我不确定我是如何得到这个因为我不太了解错误本身,因为没有错误消息,我需要线程或什么? 非常感谢,汤姆。

def changeBackground(image):
    filename = PhotoImage(file = filePath + image + ".png")
    background_label = Label(root, image=filename)
    background_label.image = filename
    background_label.place(x=0, y=0, relwidth=1, relheight=1)

def clearScreen():
    for widget in root.winfo_children():
        widget.destroy()

关于最近评论的代码:

def showGameSurvival():
    clearScreen()
    changeBackground("Survival")
    createBackButton(showMain, 1003, 492)
    print('1')
    time.sleep(5)
    print('2')

1 个答案:

答案 0 :(得分:1)

以下是您最新评论的示例。我们可以使用after()方法来执行您尝试完成的等待时间。

请记住,如果您使用.sleep()整个应用程序将会睡眠,而不仅仅是您正在使用的功能。

from tkinter import *

root = Tk()

def showGameSurvival():
    #do stuff
    print('1')
    #do other stuff
    root.after(5000, lambda: print('2')) # 1000 for every full second
    #do more stuff

showGameSurvival()

root.mainloop()