Как сделать, чтобы при наведении курсора на кнопку она появлялась в другом рандомном месте?

Задумка в том, чтобы когда наводишь курсор на кнопку, она появлялась в другом рандомном месте, то есть чтобы на неё по факту невозможно было нажать.

Я новичок в программировании и не совсем понимаю как это сделать.

Вот код (я не понимаю, как удалять старую кнопку и проделывать всё то же при наведении на новую):

from tkinter import*
from random import *

# я пыталась создать функцию, чтобы новая кнопка появлялась в другом месте
def in_btn(event):
    x = randrange(0, 240)
    y = randrange(0, 110)
    btn2 = Button(text='Нет')
    btn2.place(x=x, y=y)

root = Tk()
root.geometry('240x110')

label = Label(text='something')
label.place(x=65, y=1)

btn1 = Button(text='Да')
btn1.place(x=5, y=80)

btn2 = Button(text='Нет')
btn2.place(x=179, y=80)
btn2.bind('<Enter>', in_btn)

root.mainloop()

https://controlc.com/29042c1d


Ответы (2 шт):

Автор решения: S. Nick

Попробуйте так:

from random import randrange
import tkinter as tk


class App(tk.Frame):
    def __init__(self, master):
        super().__init__(master)
        
        self.label = tk.Label(text='something')
        self.label.place(x=65, y=1)

        self.btn1 = tk.Button(text='Да')
        self.btn1.place(x=5, y=80)

        self.btn2 = tk.Button(text='Нет')
        self.btn2.place(x=179, y=80)
        self.btn2.bind('<Enter>', self.in_btn)

    def in_btn(self, event):
        x = randrange(0, 240)
        y = randrange(0, 110)
        self.btn2.place(x=x, y=y)


if __name__ == '__main__':
    root = tk.Tk()
    root.geometry('260x130')
    app = App(root)
    app.pack()
    root.mainloop()

введите сюда описание изображения

→ Ссылка
Автор решения: insolor

Просто не создавайте новую кнопку, а перемещайте существующую:

def in_btn(event):
    x = randrange(0, 240)
    y = randrange(0, 110)
    # btn2 = Button(text='Нет')  # не нужно
    btn2.place(x=x, y=y)

Если делать через удаление, то нужно объявить внутри функции переменную btn2 глобальной (т.к. мы собираемся менять эту переменную), плюс не забыть заново настроить кнопку (привязать обработчик события наведения, иначе переместится только первоначально созданная кнопка, а новые будут стоять на месте):

def in_btn(event):
    global btn2
    x = randrange(0, 240)
    y = randrange(0, 110)
    btn2.destroy()
    btn2 = Button(text='Нет')
    btn2.bind('<Enter>', in_btn)
    btn2.place(x=x, y=y)
→ Ссылка