在tkinter中对窗口进行分组

3
我有一个tkinter应用程序,其中包括一个主窗口(Tk)和一个附加窗口(Toplevel)。
我希望这些窗口在窗口管理器(GNOME Shell)中组合在一起。我认为必须同时设置WM_CLASS资源和WM_CLASS名称,以便两个窗口都具有相同的设置,才能实现这一点。
在Tk上设置className,并在Toplevel上设置class为我的应用程序名称似乎更改了WM_CLASS名称,但未更改资源,这就是我认为它们没有分组的原因。在窗口上运行xprop WM_CLASS命令,可以看到Tk的两个条目都选择了我选择的名称:“WM_CLASS(STRING)=“ myapp”,“ Myapp””。对于Toplevel,则显示第一个元素的tk_uid:“WM_CLASS(STRING)=“ 140626444609872”,“ Myapp””。
我还尝试设置窗口的标题,但似乎没有任何区别。
1个回答

4
您可以使用wm group命令将窗口分组。但是某些操作系统/窗口管理器可能不会尊重此设置。
在tkinter中,您可以通过在Toplevel实例上调用group并将根Tk实例作为参数来实现此操作。
参考资料:wm (tk)wm (tkinter)

这个方法可行!原来 WM_CLASS 不是我需要的。请在你的回答中加入,在 tkinter 中,你需要执行 top_level.group(root),其中 top_level 是 Toplevel,root 是你的 Tk 实例。谢谢! - Jim Hunziker
我自己编辑了它。 - Jim Hunziker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接