Скрыть кнопку в Tkinter - PullRequest
       5

Скрыть кнопку в Tkinter

0 голосов
/ 12 ноября 2018

Я хочу скрыть кнопку tkinter, но не когда пользователь нажимает на нее. Я просто хочу скрыть это, в случайное время. Как я это сделаю в Python? Ниже приведен код, который я пробовал:

self.startGame = Button(self.canvas, text="Start", background='white', command = self.startGame, font=("Helvetica"))
self.startGame.place(x=770, y=400)

Сокрытие этого:

 self.startGame.bind('<Button-1>', self.hide_me)

 def hide_me(self, event):
    print('hide me')
    event.widget.pack_forget()

Он даже не входит в функцию hide_me.

1 Ответ

0 голосов
/ 13 ноября 2018

Как указано в комментариях, вы должны использовать place_forget() для виджетов, которые были установлены на экране с помощью place().

То же самое относится к pack() и grid(). Вы бы использовали pack_forget() и grid_forget() соответственно.

Вот модифицированный пример вашего кода.

import tkinter as tk

class Example(tk.Tk):
    def __init__(self):
        super().__init__()
        canvas = tk.Canvas(self)
        canvas.pack()
        self.startGame = tk.Button(canvas, text="Start", background='white', font=("Helvetica"))
        self.startGame.place(x=150, y=100)
        self.startGame.bind('<Button-1>', self.hide_me)

    def hide_me(self, event):
        print('hide me')
        event.widget.place_forget()

if __name__ == "__main__":
    Example().mainloop()

Тем не менее, вам не нужно связывать здесь. Просто используйте лямбда-оператор в вашей команде следующим образом:

import tkinter as tk

class Example(tk.Tk):
    def __init__(self):
        super().__init__()
        canvas = tk.Canvas(self)
        canvas.pack()
        self.startGame = tk.Button(canvas, text="Start", background='white', font=("Helvetica"),
                                   command=lambda: self.hide_me(self.startGame))
        self.startGame.place(x=150, y=100)

    def hide_me(self, event):
        print('hide me')
        event.place_forget()

if __name__ == "__main__":
    Example().mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...