Python Tkinter标签未破坏

时间:2018-10-27 11:05:38

标签: python tkinter

因此,我正在尝试使用tkinter编写程序,到目前为止,一切都已经达到了希望,并且我几乎实现了想要的目标。 但是我在销毁标签方面遇到了问题。

from tkinter import *
root = Tk()
root.geometry("500x500")

def controleerAntwoord(gekozenHeld, submit, eersteHintButton):
    antwoord = entry.get()
    if antwoord == gekozenHeld:
        submit.destroy()
        eersteHintButton.destroy()
        eersteHint("destroy", button)
        startspel()


def eersteHint(superheldHint, button):
    hintTextLabel = Label(root, text = "First hint: ")
    hintLabel = Label(root, text = superheldHint)
    if superheldHint != "destroy":
        hintTextLabel.pack()
        hintLabel.pack()
        button.destroy()
    if superheldHint == "destroy":
        hintTextLabel.destroy()
        hintLabel.destroy()

def startspel():
    entry.delete(0, 'end')
    gekozenHeld = "test"
    superheldHint1 = 'hey'
    eersteHintButton = Button(root, text = "Give First Hint", command = lambda: eersteHint(superheldHint1, eersteHintButton))
    submit = Button(root, text = "Submit Answer",foreground = "blue",     command = lambda: controleerAntwoord(gekozenHeld, submit, eersteHintButton))
    eersteHintButton.pack(side = BOTTOM)
    entry.pack(side = BOTTOM)
    submit.pack(side = BOTTOM, pady = 20)



def start_up():
    name = entry.get().strip()
    if name != "":
        button.destroy()
        giveName.destroy()
        startspel()


giveName = Label(root, text="Insert your name: ")
entry = Entry(root)
button = Button(root, text="Enter", command=start_up)
entry.pack()
button.pack()

root.mainloop()

到目前为止,这是我当前的代码,我知道它看起来很大,但是对于这个问题,很多代码都可以忽略。

关于程序的工作方式,请输入名称,然后转到下一个窗口。 在那里,您可以按“提交”按钮并输入一些文本,并要求提示。

当您按下提示按钮时,您会在屏幕上看到一些文本,并且在提交正确的答案(在这种情况下为“测试”)时,该文本应该消失。但事实并非如此。 关于我在做什么错的任何想法吗?

1 个答案:

答案 0 :(得分:0)

问题是您正在使用局部变量,但是希望该局部变量在第二次调用该函数时能被记住。您所做的所有代码就是创建一个标签,然后立即销毁它刚刚创建的标签。如果您希望它销毁先前创建的变量,则必须将其存储在全局变量中。