Метка Python Tkinter не уничтожает - PullRequest
0 голосов
/ 27 октября 2018

Итак, я пытаюсь создать программу с помощью 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 голосов
/ 27 октября 2018

Проблема в том, что вы используете локальную переменную, но ожидаете, что эта локальная переменная будет каким-то образом запомнена при втором вызове функции.Все, что делает ваш код - это создает метку, а затем немедленно уничтожает тот, который он только что создал .Если вы хотите, чтобы он уничтожил созданный ранее, вам придется сохранить его в глобальной переменной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...