Как сделать так, чтобы два виджета верхнего уровня не могли быть открыты одновременно? - PullRequest
0 голосов
/ 06 июля 2010

У меня есть виджет верхнего уровня, который создается при нажатии кнопки. Как сделать так, чтобы при повторном нажатии той же кнопки виджет верхнего уровня все еще был открыт, и он просто перемещал виджет верхнего уровня в фокус?

1 Ответ

1 голос
/ 06 июля 2010

Представьте, что у вас есть следующий метод в классе.Этот метод вызывается при нажатии кнопки.У вас также будет атрибут экземпляра, определенный в методе __init__: self.toplevel = None.

def button_press(self):
    if self.toplevel is None:
        self.toplevel = ... # another method to create toplevel widget
    else:
        # set focus to self.toplevel
        # you can use self.toplevel.deiconify() if self.toplevel is minimised
        # also look at self.toplevel.lift() to bring the window to the top

Вам также потребуется сбросить self.toplevel на None, когда виджет верхнего уровня уничтожен.

Также посмотрите на метод focus_set виджетов.Возможно, вам придется установить атрибут take_focus на True для виджета верхнего уровня.Но, возможно, вы хотите установить фокус на конкретный виджет (например, текстовое поле) в виджете верхнего уровня.

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