检查窗口是否在后台 Tkinter

2024-01-22

所以,我正在尝试制作一个应用程序tkinter。我刚刚开始学习这个模块的工作原理。

在我的应用程序中,我有一个根窗口和一个子(顶级)窗口,并且我将子窗口设置为始终位于顶部。当我最小化根窗口时,子窗口也会最小化,因为我已经定义了该条件。我的问题是当我选择其他窗口时。当我这样做时,子窗口仍然保持在顶部,我想知道是否有办法知道我的根窗口是否在后台,又名:我目前没有处理它(就像root.winfo_...功能)。

我可以提供其他例子,因为我觉得我没有以您理解的方式解释我的问题。 我也可以提供我的代码,但我认为现在这是必要的。


Question:检查窗口是否在后台

Using tk.self.winfo_containing(...您可以确定是否有一个小部件,这里是root窗口,显示在顶层。 在此示例中,给定窗口的中心用作visible point.

Note:当您移动窗口时,结果可能是False.


参考: - Tkinter.Widget.winfo_containing-method http://effbot.org/tkinterbook/widget.htm#Tkinter.Widget.winfo_containing-method

返回给定位置的小部件,或者 None


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
Note: 已确认,正在运行Windows.
可能无法正常工作MACOS.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检查窗口是否在后台 Tkinter 的相关文章

随机推荐