在 tkinter 中分组 windows

Grouping windows in tkinter

我有一个 tkinter 应用程序,它有一个主要的 window(一个 Tk)和一个额外的 window(一个 Toplevel)。

我希望这些 windows 在 window 管理器 (GNOME Shell) 中组合在一起。我认为有必要将 WM_CLASS 资源和 WM_CLASS 名称都设置为相同的 windows 才能实现这一点。

在 Tk 上设置 className 并将 Toplevel 上的 class 设置为我的应用程序名称似乎更改了 WM_CLASS 名称而不是资源,这就是为什么我认为它们不是分组。 windows 上的 xprop WM_CLASS 显示了我为 Tk 上的两个条目选择的名称:WM_CLASS(STRING) = "myapp", "Myapp"。对于 Toplevel,它显示第一个元素的 tk_uid:WM_CLASS(STRING) = "140626444609872", "Myapp".

我也试过设置windows的标题,不过好像没什么区别。

您可以使用 wm group 命令将 windows 组合在一起。某些操作系统/window 管理员可能不遵守此设置。

在 tkinter 中,您可以通过以根 Tk 实例作为参数在 Toplevel 实例上调用 group 来完成此操作。

参考文献:wm (tk), wm (tkinter)