Я пытаюсь удалить ярлык после того, как игрок нажмет любую клавишу. Однако оболочка Python отображает сообщение об ошибке. Как мне это исправить?
Я пробовал label.destroy()
, но, поскольку у меня уже есть метка, которая вызывает эту функцию, функция label.destroy()
не работает.
from tkinter import *
root = Tk()
def testing(event):
print("You have pressed a key.")
root.unbind_all('<Key>')
label.destroy() # There are two of these.
def countdown(count, label):
label['text'] = count
if count > -1:
root.after(1000, countdown, count-1, label)
elif count == 0:
label['text'] = 'Time \nExpired'
elif count < 0:
label.destroy() # The second "label.destroy()"
# any_key = root.create_text(250, 400, anchor=CENTER, font=('Calibri', 20), text='Press any key to start.')
# I commented the previous line out because that was my previous code.
any_key = Label(root, anchor=CENTER, font=('Calibri', 20), text='Press any key to start.')
any_key.place(250, 400) # Error 2
root.bind('<Key>', testing)
label = Label(root, anchor=CENTER, font=('Calibri', 48))
label.place(x=50, y=100)
countdown(10, label)
root.bind_all('<Key>', testing)
root.pack()
root.mainloop()
Я надеялся, что эта программа удалит метку с именем any_key
, но она даже не появилась до того, как я нажал клавишу. Кроме того, Tkinter показывает ошибку, которая отображает TypeError: place_configure() takes from 1 to 2 positional arguments but 3 were given
, хотя я дал только 2 аргумента для размещения метки any_key
. Если вы закомментируете any_key.place()
, появится еще одна ошибка: Исключение в Tkinter callback
Traceback (most recent call last):
File "C:\Users\kevin\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py", line 1705, in __call__
return self.func(*args)
File "C:\Users\kevin\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py", line 749, in callit
func(*args)
File "C:\Users\kevin\AppData\Local\Programs\Python\Python37\Programs\Tests\test 8.py", line 22, in countdown
label['text'] = count
File "C:\Users\kevin\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py", line 1492, in __setitem__
self.configure({key: value})
File "C:\Users\kevin\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py", line 1485, in configure
return self._configure('configure', cnf, kw)
File "C:\Users\kevin\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py", line 1476, in _configure
self.tk.call(_flatten((self._w, cmd)) + self._options(cnf))
_tkinter.TclError: invalid command name ".!canvas.!label2"
Как мне исправить эти ошибки?