Почему не получается удалить кнопку на 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()
→ Ссылка