Почему не получается удалить кнопку на tkinter?
Всем привет! Короче, у меня не получается удалить кнопку. Вот код:
import random
from tkinter import *
import time
import os
import sys
root=Tk()
root.title('Deadman')
root.geometry('300x150')
vibor_kategory=Label(root,text='Выберите категорию слов:',font=15)
slova_sport = Button(root, text='Спорт')
btn_start=Button(root, text='Играть', width=30, height=10, bg='white', fg='black',)
def deadsports(event):
slova_sport.destroy() #попытка удаления
vibor_kategory.destroy()
def dead_game_start(event):
btn_start.destroy()
vibor_kategory.pack(fill='both')
slova_sport.bind("<Button-2>", deadsports)
slova_sport.pack(fill='both')
btn_start.bind("<Button-1>", dead_game_start)
btn_start.pack(fill='both')
root.mainloop()
Может ли это быть из за того что действие происходит внутри другого ивента??
Ответы (1 шт):
Автор решения: KiryxaKart
→ Ссылка
Проблема заключается в том, что ты пытаешься привязать событие к кнопке slova_sport после того, как она уже была уничтожена. Функция deadsports уничтожает кнопку slova_sport, а затем функция dead_game_start пытается привязать событие к этой уже уничтоженной кнопке.
Вместо этого ты должен привязать событие к кнопке slova_sport до того, как она будет уничтожена. Вот исправленный код:
import random
from tkinter import *
import time
import os
import sys
root=Tk()
root.title('Deadman')
root.geometry('300x150')
vibor_kategory=Label(root,text='Выберите категорию слов:',font=15)
slova_sport = Button(root, text='Спорт')
btn_start=Button(root,text='Играть', width=30, height=10, bg='white', fg='black',)
def deadsports(event):
slova_sport.destroy()
vibor_kategory.destroy()
def dead_game_start(event):
btn_start.destroy()
vibor_kategory.pack(fill='both')
slova_sport.pack(fill='both')
slova_sport.bind("<Button-2>", deadsports)
btn_start.bind("<Button-1>", dead_game_start)
btn_start.pack(fill='both')
root.mainloop()