[英]Python Tkinter label not destroying
所以我正在尝试用 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()
到目前为止,这是我当前的代码,我知道它看起来很大,但是对于这个问题可以忽略很多。
至于程序如何工作,您输入您的姓名并进入下一个窗口。 在那里您可以按下提交按钮并输入一些文本,以及询问提示。
当您按下提示按钮时,您会在屏幕上看到一些文本,当您提交正确答案(在本例中为“测试”)时,文本应该消失。 但事实并非如此。 关于我做错了什么的任何想法?
问题是您使用的是局部变量,但期望在您第二次调用该函数时以某种方式记住该局部变量。 您的代码所做的就是创建一个标签,然后立即销毁它刚刚创建的标签。 如果您希望它销毁之前创建的那个,您必须将其存储在一个全局变量中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.