2016-11-29 3 views
2

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

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

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

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

ответ

3

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

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

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

+0

Это сработало! Оказывается, WM_CLASS не то, что мне нужно. Добавьте к своему ответу, что в tkinter вам нужно сделать top_level.group (root), где top_level - это Toplevel, а root - ваш экземпляр Tk. Благодаря! –

+0

На самом деле отредактировал его. –

Смежные вопросы