Проверьте, если окно в фоновом режиме Tkinter - PullRequest
1 голос
/ 28 февраля 2020

Итак, я пытаюсь сделать приложение на tkinter. Я только начал изучать, как работает этот модуль.

В моем приложении у меня есть окно root и дочернее окно (с верхним уровнем), и я устанавливаю дочерний элемент всегда сверху. Когда я минимизирую свое root окно, дочернее окно также минимизируется, потому что я определил это условие. Моя проблема, когда я выбираю другое окно. Когда я делаю это, дочернее окно все еще остается сверху, и я хочу знать, есть ли способ узнать, находится ли мое окно root в фоновом режиме, иначе: я в настоящее время не работаю над этим (как root.winfo_... функция).

Я могу привести другие примеры, поскольку я чувствую, что я не объясняю свою проблему так, как вы понимаете. Я также могу предоставить свой код, но я думаю, что сейчас это необходимо.

1 Ответ

0 голосов
/ 28 февраля 2020

Вопрос : Проверьте, находится ли окно в фоновом режиме

Используя tk.self.winfo_containing(..., вы можете определить, отображается ли виджет, здесь окно root, в Верхний уровень . В этом примере центр данного окна используется как видимая точка.

Примечание : при перемещении окна результат может быть False.


Ссылка : - Tkinter.Widget.winfo_conisting-method

Возвращает виджет в заданной позиции или Нет


import tkinter as tk


class App(tk.Tk):
    def __init__(self):
        super().__init__()

        self.is_toplevel()

    def is_toplevel(self):
        width, height, x, y = self.winfo_width(), self.winfo_height(), \
                              self.winfo_rootx(), self.winfo_rooty()

        if (width, height, x, y) != (1, 1, 0, 0):
            is_toplevel = self.winfo_containing(x + (width // 2),
                                                y + (height // 2)
                                                ) is not None

            print('is_toplevel: {}'.format(is_toplevel))

        self.after(2000, self.is_toplevel)


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

Протестировано с Python: 3,5 - 'TclVersion': 8,6 'TkVersion': 8,6 - Linux
Примечание : подтверждено, работает на Windows.
Может не работать на MACOS .

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