检查tkinter小部件是否可见

Dan*_*iel 5 python tkinter

我需要能够检查tkinter小部件是否可见(如果已调用它packgrid方法).

我目前正在做以下事情:

def is_visible(widget):
    try:
        widget.pack_info()
    except tk.TclError:
        # pack_info raises if pack hasn't been
        # called yet.
        return bool(widget.grid_info())
        # grid_info returns {} if grid hasn't been
        # called yet.
    else:
        return True
Run Code Online (Sandbox Code Playgroud)

有没有什么方法可以通过使用标准的widget属性,或通过其他一些不那么"hacky"的解决方案来改进这些代码?

PRM*_*reu 7

您可以尝试widget.winfo_ismapped():

检查窗口是否已创建.此方法检查Tkinter是否已创建与底层窗口系统中的窗口小部件对应的窗口(X窗口,Windows HWND等).

返回:如果已创建窗口,则返回true值.

  • 与 [`winfo_viewable()`](/sf/answers/1837257831/) 有区别吗? (2认同)