Группировка окон в tkinter

У меня есть приложение tkinter с главным окном (Tk) и дополнительным окном (Toplevel).

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

Установка className в Tk и установка class в Toplevel для имени моего приложения, похоже, меняет имя WM_CLASS, но не ресурс, поэтому я думаю, что они не группируются. xprop WM_CLASS в окнах показывает выбранное мной имя для обеих записей на Tk: WM_CLASS(STRING) = "myapp", "Myapp". Для верхнего уровня он показывает tk_uid для первого элемента: WM_CLASS(STRING) = "140626444609872", "Myapp".

Я также пытался установить заголовки окон, но, похоже, это не имело значения.


person Jim Hunziker    schedule 29.11.2016    source источник


Ответы (1)


Вы можете использовать команду wm group для группировки окон вместе. Некоторые операционные системы/менеджеры окон могут не учитывать этот параметр.

В tkinter вы можете сделать это, вызвав group в экземпляре Toplevel с корневым экземпляром Tk в качестве аргумента.

Ссылки: wm (tk), wm (tkinter)

person Brad Lanam    schedule 30.11.2016
comment
Это сработало! Оказывается, WM_CLASS был не тем, что мне было нужно. Пожалуйста, добавьте к своему ответу, что в tkinter вам нужно сделать top_level.group(root), где top_level — это верхний уровень, а root — ваш экземпляр Tk. Спасибо! - person Jim Hunziker; 01.12.2016
comment
Собственно редактировал сам. - person Jim Hunziker; 01.12.2016