Python Tkinter как скрыть виджет, не удаляя его - PullRequest
0 голосов
/ 03 июля 2018

Я знаю, что подобные вещи много просили, но я пытался понять это в течение двух часов, и я никуда не денусь. Я хочу иметь кнопку в окне Tkinter, которая видна только при наведении мыши. До сих пор мне не удавалось сделать кнопку невидимой в первую очередь (я знаком с событиями и прочим, вопрос не в этом). Pack_forget () не будет работать, потому что я хочу, чтобы виджет оставался на месте. Я хотел бы как-нибудь сделать это, как я указал в коде ниже:

import tkinter as tki

class MyApp(object):

    def __init__(self, root_win):
        self.root_win = root_win
        self.create_widgets()

    def create_widgets(self):
        self.frame1 = tki.Frame(self.root_win)
        self.frame1.pack()
        self.btn1 = tki.Button(self.frame1, text='I\'m a button')
        self.btn1.pack()
        self.btn1.visible=False #This doesnt't work

def main():
    root_win = tki.Tk()
    my_app = MyApp(root_win)
    root_win.mainloop()

if __name__ == '__main__':
    main()

Есть ли способ установить видимость виджетов напрямую? Если нет, какие еще варианты есть?

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Вы можете попробовать использовать событие для вызова функции. Если для кнопки происходит «Enter», тогда вызовите функцию, которая вызывает pack () и если для кнопки происходит «Выйти», тогда вызовите функцию, которая вызывает pack_forget ().

Проверьте эту ссылку для описания события: Список всех событий Tkinter

Если вы хотите, чтобы ваша кнопка оставалась в определенном месте, вы можете использовать place (x, y) вместо pack ()

0 голосов
/ 03 июля 2018

Используйте сетку как менеджер геометрии и используйте:

self.btn1.grid_remove()

который запомнит свое место.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...