Spec-Zone.ru › Tcl/Tk

wm

Имя
wm — Связь с диспетчером окон
Синтаксис
Описание
wm aspect window ?minNumer minDenom maxNumer maxDenom?
wm attributes window
wm attributes window ?option?
wm attributes window ?option value option value...?
-alpha
-fullscreen
-topmost
-disabled
-toolwindow
-transparentcolor
-modified
-notify
-titlepath
-transparent
-type
desktop
dock
toolbar
menu
utility
splash
dialog
dropdown_menu
popup_menu
tooltip
notification
combo
dnd
normal
-zoomed
wm client window ?name?
wm colormapwindows window ?windowList?
wm command window ?value?
wm deiconify window
wm focusmodel window ?active|passive?
wm forget window
wm frame window
wm geometry window ?newGeometry?
wm grid window ?baseWidth baseHeight widthInc heightInc?
wm group window ?pathName?
wm iconbitmap window ?bitmap?
wm iconbitmap window ?-default? ?image?
wm iconify window
wm iconmask window ?bitmap?
wm iconname window ?newName?
wm iconphoto window ?-default? image1 ?image2 ...?
wm iconposition window ?x y?
wm iconwindow window ?pathName?
wm manage widget
wm maxsize window ?width height?
wm minsize window ?width height?
wm overrideredirect window ?boolean?
wm positionfrom window ?who?
wm protocol window ?name? ?command?
wm resizable window ?width height?
wm sizefrom window ?who?
wm stackorder window ?isabove|isbelow window?
wm state window ?newstate?
wm title window ?string?
wm transient window ?master?
wm withdraw window
Управление геометрией
Управление геометрией сеткой
Ошибки
Примеры
См. также
Ключевые слова

Имя

wm — Связь с диспетчером окон

Синтаксис

wmoption window ?args?

Описание

Команда wm используется для взаимодействия с диспетчерами окон, чтобы управлять такими элементами, как заголовок окна, его геометрия или значения при изменении размеров. Команда wm может принимать различные формы в зависимости от аргумента option. Все формы ожидают по крайней мере один дополнительный аргумент window, который должен быть именем пути к основному окну.

Допустимые формы команды wm:

wm aspect window ?minNumer minDenom maxNumer maxDenom?
Если minNumer, minDenom, maxNumer и maxDenom указаны, то они будут переданы диспетчеру окон, и диспетчер окон должен использовать их для принудительного задания диапазона допустимых соотношений сторон для window. Соотношение сторон window (ширина/длина) будет ограничено значением между minNumer/minDenom и maxNumer/maxDenom. Если minNumer и т. д. заданы как пустые строки, то любые существующие ограничения на соотношение сторон будут удалены. Если minNumer и т. д. указаны, то команда возвращает пустую строку. В противном случае она возвращает список Tcl, содержащий четыре элемента: текущие значения minNumer, minDenom, maxNumer и maxDenom (если ограничения на соотношение сторон не действуют, то возвращается пустая строка).
wm attributes window
wm attributes window ?option?
wm attributes window ?option value option value...?
Эта подкоманда возвращает или устанавливает платформенно-специфические атрибуты, связанные с окном. Первый вариант возвращает список платформенно-специфических флагов и их значений. Второй вариант возвращает значение для указанного параметра. Третий вариант устанавливает одно или несколько значений. Значения следующие:

Все платформы поддерживают следующие атрибуты (хотя пользователям X11 следует ознакомиться с примечаниями ниже):

-alpha
Указывает уровень прозрачности альфа-канала верхнего уровня. Принимает значения от 0.0 (полностью прозрачно) до 1.0 (непрозрачно). Значения вне этого диапазона будут ограничены. Там, где не поддерживается, значение -alpha остаётся равным 1.0.
-fullscreen
Размещает окно в режиме, занимающем весь экран, без рамок и охватывающим область общего использования (например, меню «Пуск» и панель задач в Windows, док-станцию и строку меню в OSX, общие декорации окон в X11).
-topmost
Указывает, является ли это верхним окном (отображается над всеми другими окнами).

В Windows можно установить следующие атрибуты.

-disabled
Указывает, находится ли окно в состоянии отключения.
-toolwindow
Указывает окно стиля инструмента (как определено в MSDN).
-transparentcolor
Указывает индекс прозрачного цвета верхнего уровня. Принимает любое значение цвета, принимаемое Tk_GetColor. Если задано пустая строка (по умолчанию), прозрачный цвет не используется. Поддерживается в Windows 2000/XP+. Там, где не поддерживается, значение -transparentcolor остаётся равным {}.

В Mac OS X можно установить следующие атрибуты.

-modified
Указывает состояние модификации окна (определяет, содержит ли элемент закрытия окна индикатор модификации и является ли прокси-иконка перетаскиваемой).
-notify
Указывает состояние уведомления о процессе (подскакивание значка приложения в док-станции).
-titlepath
Указывает путь к файлу, на который ссылается иконка прокси-окна (которую можно перетаскивать и опускать вместо иконки файла в Finder).
-transparent
Делает область содержимого окна прозрачной и отключает тень окна. Для эффективной работы прозрачности необходимо установить фон верхнего уровня на цвет с некоторым альфа-каналом, например, «systemTransparent».

В X11 можно установить следующие атрибуты. Они не поддерживаются всеми диспетчерами окон и не будут иметь никакого эффекта в устаревших WMs.

-type
Запрашивает, что диспетчер окон должен интерпретировать окно как окно указанного типа(ов). Это может привести к тому, что окно будет оформлено по-другому или управляется иначе, хотя то, что произойдёт, полностью зависит от диспетчера окон. Можно использовать список типов в порядке предпочтения. Следующие значения сопоставлены с константами, определёнными в спецификации EWMH (использование других возможно, но не рекомендуется):
desktop
указывает на функцию рабочего стола,
dock
указывает на функцию док-станции/панели,
toolbar
указывает на окно панели инструментов, которое должно действовать от имени другого окна, как указано в wm transient,
menu
указывает на вырванное из контекста меню, которое должно действовать от имени другого окна, как указано в wm transient,
utility
указывает на служебное окно (например, палитра или набор инструментов), которое должно действовать от имени другого окна, как указано в wm transient,
splash
указывает на стартовый экран, отображаемый во время запуска приложения,
dialog
указывает на общее диалоговое окно, которое должно действовать от имени другого окна, как указано в wm transient,
dropdown_menu
указывает на выпадающее меню, вызванное из строки меню, которое обычно также должно быть настроено на перенаправление наложения (с помощью wm overrideredirect),
popup_menu
указывает на всплывающее меню, которое обычно также должно быть настроено на перенаправление наложения (с помощью wm overrideredirect),
tooltip
указывает на окно подсказки, которое обычно также должно быть настроено на перенаправление наложения (с помощью wm overrideredirect),
notification
указывает на окно, которое предоставляет уведомления о фоновых событиях, которое обычно также должно быть настроено на перенаправление наложения (с помощью wm overrideredirect),
combo
указывает на выпадающий список элемента управления ComboBox, который обычно также должен быть установлен на перенаправление наложения (с помощью wm overrideredirect),
dnd
указывает на окно, представляющее собой элемент, который перетаскивается, которое обычно также должно быть настроено на перенаправление наложения (с помощью wm overrideredirect),
normal
указывает на окно без специального толкования.
-zoomed
Запрашивает, чтобы окно было максимизировано. Это то же самое, что wm state zoomed в Windows и Mac OS X.

В X11 изменения атрибутов окна выполняются асинхронно. Запрос значения атрибута возвращает текущее состояние, которое может не совпадать с последним установленным значением, если диспетчер окон ещё не обработает запрос или если он не поддерживает данный атрибут.

wm client window ?name?
Если name указан, эта команда сохраняет name (который должен быть именем хоста, на котором выполняется приложение) в свойстве WM_CLIENT_MACHINE window для использования диспетчером окон или диспетчером сеансов. В этом случае команда возвращает пустую строку. Если name не указан, команда возвращает последнее заданное имя в команде wm client для window. Если name указан как пустая строка, команда удаляет свойство WM_CLIENT_MACHINE из window.
wm colormapwindows window ?windowList?
Эта команда используется для управления свойством WM_COLORMAP_WINDOWS, которое предоставляет диспетчерам окон информацию о окнах, имеющих собственные таблицы цветов.

Если windowList не указан, команда возвращает список, элементы которого являются именами окон в свойстве WM_COLORMAP_WINDOWS. Если windowList указан, он состоит из списка имён путей окон; команда перезаписывает свойство WM_COLORMAP_WINDOWS указанными окнами и возвращает пустую строку. Свойство WM_COLORMAP_WINDOWS обычно должно содержать список внутренних окон в window, чьи таблицы цветов отличаются от их родителей.

Порядок окон в свойстве указывает порядок приоритетов: диспетчер окон попытается установить как можно больше таблиц цветов, начиная с начала этого списка, когда window получает фокус таблицы цветов. Если window не включён среди окон в windowList, Tk неявно добавляет его в конец свойства WM_COLORMAP_WINDOWS, чтобы его таблица цветов имела наименьший приоритет. Если команда wm colormapwindows не вызвана, Tk автоматически установит свойство для каждого окна верхнего уровня ко всем внутренним окнам, чьи таблицы цветов отличаются от их родителей, за которым следует сам верхний уровень; порядок внутренних окон неопределён. См. документацию ICCCM для получения дополнительной информации о свойстве WM_COLORMAP_WINDOWS.

wm command window ?value?
Если value указан, эта команда сохраняет value в свойстве WM_COMMAND window для использования диспетчером окон или диспетчером сеансов и возвращает пустую строку. Value должен иметь правильную структуру списка; элементы должны содержать слова команды, используемой для вызова приложения. Если value не указан, то команда возвращает последнее значение, установленное в команде wm command для window. Если value указан как пустая строка, команда удаляет свойство WM_COMMAND из window.
wm deiconify window
Организует отображение window в обычном (не свёрнутом) виде. Это делается путем отображения окна. Если окно никогда не отображалось, то эта команда не отобразит окно, но гарантирует, что при первом отображении окно будет отображено в развёрнутом виде. В Windows развернутое окно также будет поднято и получит фокус (станет активным окном). Возвращает пустую строку.
wm focusmodel window ?active|passive?
Если active или passive предоставлены в качестве необязательного аргумента команды, то они задают модель фокусировки для window. В этом случае команда возвращает пустую строку. Если дополнительный аргумент не указан, то команда возвращает текущую модель фокусировки для window.

Модель фокусировки active означает, что window будет захватывать фокус ввода для себя или своих потомков, даже в моменты, когда фокус находится в другом приложении. Passive означает, что window никогда не будет захватывать фокус: диспетчер окон должен передать фокус window в соответствующее время. Однако после того, как фокус был передан window или одному из его потомков, приложение может переназначить фокус среди потомков window. Модель фокусировки по умолчанию passive, и команда Tk focus предполагает пассивную модель фокусировки.

wm forget window
window будет скрыто с экрана и больше не будет управляться wm. Окна, созданные командой toplevel, будут обрабатываться как окна frame после того, как они перестанут управляться wm, однако настройка -menu будет сохранена, и меню вернутся, когда виджет будет снова управляться.
wm frame window
Если window был перегруппирован менеджером окон в декоративную рамку, команда возвращает идентификатор окна, специфичный для платформы, для самой внешней рамки, содержащей window (окно, родитель которого является корневым или виртуальным корневым). Если window не был перегруппирован менеджером окон, команда возвращает идентификатор окна, специфичный для платформы, для window.
wm geometry window ?newGeometry?
Если newGeometry указан, геометрия window изменяется, и возвращается пустая строка. В противном случае возвращается текущая геометрия для window (это самая последняя геометрия, указанная либо путем ручного изменения размера, либо в команде wm geometry). NewGeometry имеет формат =widthxheight±x±y, где любой из =, widthxheight или ±x±y может быть опущен. Width и height — положительные целые числа, указывающие желаемые размеры window. Если window сетчатый (см. УПРАВЛЕНИЕ ГЕОМЕТРИЕЙ НА ОСНОВЕ СЕТКИ ниже), размеры указываются в единицах сетки; в противном случае они указываются в пикселях.

X и y указывают желаемое расположение window на экране в пикселях. Если x предшествует +, он указывает количество пикселей между левым краем экрана и левым краем границы window; если предшествует -, то x указывает количество пикселей между правым краем экрана и правым краем границы window. Если y предшествует +, он указывает количество пикселей между верхом экрана и верхом границы window; если предшествует -, он указывает количество пикселей между нижней частью границы window и нижней частью экрана.

Если newGeometry указан как пустая строка, любая существующая геометрия, указанная пользователем для window, отменяется, и окно вернется к размеру, запрошенному внутренне его виджетами.

Обратите внимание, что это связано с winfo geometry, но не то же самое. Это может только запрашивать геометрию и всегда отражает текущее понимание Tk фактического размера и местоположения window, тогда как wm geometry позволяет как устанавливать, так и запрашивать понимание менеджера окон размера и местоположения окна. Это может значительно отличаться, например, чтобы отразить добавление декоративных элементов к window, таких как строки заголовков, и менеджеры окон не обязаны точно следовать запросам, сделанным через эту команду.

wm grid window ?baseWidth baseHeight widthInc heightInc?
Эта команда указывает, что window должен управляться как окно с сеткой. Она также указывает связь между единицами сетки и пикселями. BaseWidth и baseHeight указывают количество единиц сетки, соответствующих размерам в пикселях, запрошенным внутренне window с помощью Tk_GeometryRequest. WidthInc и heightInc указывают количество пикселей в каждой горизонтальной и вертикальной единице сетки. Эти четыре значения определяют диапазон допустимых размеров для window, соответствующих ширинам и высотам на основе сетки, которые являются неотрицательными целыми числами. Tk передаст эту информацию менеджеру окон; при ручном изменении размера менеджер окон ограничит размер окна одним из этих допустимых размеров.

Кроме того, при ручном изменении размера менеджер окон будет отображать текущий размер окна в единицах сетки, а не в пикселях. Если baseWidth и т. д. указаны как пустые строки, то window больше не будет управляться как окно с сеткой. Если baseWidth и т. д. указаны, то возвращаемое значение — пустая строка.

В противном случае возвращаемое значение — список Tcl, содержащий четыре элемента, соответствующие текущим baseWidth, baseHeight, widthInc и heightInc; если window в данный момент не является сетчатым, возвращается пустая строка.

Примечание: эта команда не должна быть необходима очень часто, поскольку процедура библиотеки Tk_SetGrid и параметр setGrid обеспечивают более простой доступ к той же функциональности.

wm group window ?pathName?
Если pathName указан, он указывает имя пути для лидера группы связанных окон. Менеджер окон может использовать эту информацию, например, чтобы закрыть отображение всех окон в группе, когда лидер группы свернут. PathName может быть указан как пустая строка, чтобы удалить window из любой ассоциации группы. Если pathName указан, команда возвращает пустую строку; в противном случае она возвращает имя пути текущего лидера группы window или пустую строку, если window не является частью какой-либо группы.
wm iconbitmap window ?bitmap?
Если bitmap указан, он указывает имя растрового изображения в стандартных форматах, принимаемых Tk (см. запись руководства Tk_GetBitmap для получения подробной информации). Это растровое изображение передается менеджеру окон для отображения в значке window, и команда возвращает пустую строку. Если для bitmap указана пустая строка, то любое текущее растровое изображение значка отменяется для window. Если bitmap указан, команда возвращает пустую строку. В противном случае она возвращает имя текущего растрового изображения значка, связанного с window, или пустую строку, если у window нет растрового изображения значка. В операционной системе Windows поддерживается дополнительный флаг:
wm iconbitmap window ?-default? ?image?
Если указан флаг -default, значок применяется ко всем окнам верхнего уровня (существующим и будущим), к которым еще не был применен другой конкретный значок. В дополнение к типам растровых изображений также принимается полная спецификация пути к любому файлу, содержащему допустимый значок Windows (обычно файлы .ico или .icr), или любой файл, для которого оболочка назначила значок. Tcl сначала проверит, содержит ли файл значок, затем, если у него есть назначенный значок, и, наконец, если это не удалось, проверит наличие растрового изображения.
wm iconify window
Обеспечивает свертывание window. Если window еще не был отображен впервые, эта команда обеспечит его появление в свернутом состоянии при его окончательном отображении.
wm iconmask window ?bitmap?
Если bitmap указан, он указывает имя растрового изображения в стандартных форматах, принимаемых Tk (см. запись руководства Tk_GetBitmap для получения подробной информации). Это растровое изображение передается менеджеру окон для использования в качестве маски вместе с параметром iconbitmap: там, где маска имеет нули, значок отображаться не будет; там, где она имеет единицы, будут отображаться биты из растрового изображения значка. Если для bitmap указана пустая строка, любая текущая маска значка отменяется для window (это эквивалентно указанию растрового изображения всех единиц). Если bitmap указан, команда возвращает пустую строку. В противном случае она возвращает имя текущей маски значка, связанной с window, или пустую строку, если маска не активна.
wm iconname window ?newName?
Если newName указан, он передается менеджеру окон; менеджер окон должен отобразить newName внутри значка, связанного с window. В этом случае в качестве результата возвращается пустая строка. Если newName не указан, команда возвращает текущее имя значка для window или пустую строку, если имя значка не было указано (в этом случае менеджер окон обычно будет отображать заголовок окна, как указано в команде wm title).
wm iconphoto window ?-default? image1 ?image2 ...?
Устанавливает значок строки заголовка для window на основе именованных фотоизображений. Если указан -default, это также применяется ко всем будущим созданным окнам верхнего уровня. Данные в изображениях берутся как снимок во время вызова. Если изображения позже изменятся, это не отразится на значках строки заголовка. Принимается несколько изображений, чтобы можно было указать разные размеры изображений (например, 16x16 и 32x32). Менеджер окон может масштабировать предоставленные значки до подходящего размера.

В Windows изображения упаковываются в структуру значка Windows. Это переопределит ico, указанный для wm iconbitmap, и наоборот.

В X изображения упорядочиваются в свойство _NET_WM_ICON X, которое поддерживают большинство современных менеджеров окон. wm iconbitmap может существовать одновременно. Рекомендуется использовать не более 2 значков, размещая больший значок первым.

На Macintosh это сейчас ничего не делает.

wm iconposition window ?x y?
Если x и y указаны, они передаются менеджеру окон как подсказка о том, где разместить значок для window. В этом случае возвращается пустая строка. Если x и y указаны как пустые строки, любая существующая подсказка о положении значка отменяется. Если ни x, ни y не указаны, команда возвращает список Tcl, содержащий два значения, которые являются текущими подсказками о положении значка (если подсказки не активны, возвращается пустая строка).
wm iconwindow window ?pathName?
Если pathName указан, это имя пути для окна, которое будет использоваться в качестве значка для window: когда window свернут, pathName будет отображен в качестве значка, а когда window развернут, pathName будет снова закрыт. Если pathName указан как пустая строка, любая существующая ассоциация окна значка для window будет отменена. Если указан аргумент pathName, возвращается пустая строка. В противном случае команда возвращает имя пути текущего окна значка для window или пустую строку, если для window в настоящее время не указано окно значка. Сообщения о нажатии кнопки отключены для window до тех пор, пока он является окном значка; это необходимо, чтобы позволить менеджерам окон «владеть» этими событиями. Примечание: не все менеджеры окон поддерживают понятие окна значка.
wm manage widget
Указанный widget станет автономным окном верхнего уровня. Окно будет украшено строкой заголовка менеджера окон и т. д. С этой командой можно использовать только виджеты frame, labelframe и toplevel. Попытка передать любой другой тип виджета приведет к ошибке. Попытка управлять виджетом toplevel безвредна и ничего не дает. См. также УПРАВЛЕНИЕ ГЕОМЕТРИЕЙ.
wm maxsize window ?width height?
Если заданы width и height, они задают максимальные допустимые размеры для window. Для сетчатых окон размеры задаются в единицах сетки; в противном случае они задаются в пикселях. Менеджер окон ограничит размеры окна значением, меньшим или равным width и height. Если width и height заданы, команда возвращает пустую строку. В противном случае она возвращает список Tcl с двумя элементами, которые представляют собой максимальную ширину и высоту, действующие в настоящее время. Максимальный размер по умолчанию равен размеру экрана. Дополнительную информацию см. в разделах об управлении геометрией ниже.
wm minsize window ?width height?
Если заданы width и height, они задают минимальные допустимые размеры для window. Для сетчатых окон размеры задаются в единицах сетки; в противном случае они задаются в пикселях. Менеджер окон ограничит размеры окна значением, большим или равным width и height. Если width и height заданы, команда возвращает пустую строку. В противном случае она возвращает список Tcl с двумя элементами, которые представляют собой минимальную ширину и высоту, действующие в настоящее время. Минимальный размер по умолчанию составляет один пиксель по каждой размерности. Дополнительную информацию см. в разделах об управлении геометрией ниже.
wm overrideredirect window ?boolean?
Если задан boolean, он должен иметь правильную форму булевого значения, и флаг override-redirect для window устанавливается в это значение. Если boolean не задан, возвращаются 1 или 0, чтобы указать, установлен ли флаг override-redirect для window. Установка флага override-redirect для окна приводит к тому, что оно игнорируется менеджером окон; помимо прочего, это означает, что окно не будет переродировано из корневого окна в декоративную рамку, и пользователь не сможет управлять окном с помощью обычных механизмов менеджера окон.

Обратите внимание, что флаг override-redirect гарантируется только при первом отображении окна или при отображении после изменения состояния с withdrawn на normal. Некоторые, но не все, платформы будут реагировать в дополнительные моменты времени.

wm positionfrom window ?who?
Если задан who, он должен быть либо program, либо user, или сокращенным вариантом одного из этих двух. Это указывает, был ли текущий позиционирование window запрошен программой или пользователем. Многие менеджеры окон игнорируют начальные позиции, запрошенные программой, и просят пользователя вручную позиционировать окно; если задано user, менеджер окон должен позиционировать окно в заданном месте, не спрашивая пользователя о помощи. Если who задан как пустая строка, то текущий источник позиционирования отменяется. Если who задан, команда возвращает пустую строку. В противном случае возвращаются user или program, чтобы указать источник текущей позиции окна, или пустая строка, если источник еще не задан. Большинство менеджеров окон интерпретируют «отсутствие источника» как эквивалентное program. Tk автоматически установит источник позиционирования в user при вызове команды wm geometry, если источник не был явно установлен как program.
wm protocol window ?name? ?command?
Эта команда используется для управления протоколами менеджера окон, такими как WM_DELETE_WINDOW. Name — это имя атома, соответствующего протоколу менеджера окон, например, WM_DELETE_WINDOW или WM_SAVE_YOURSELF или WM_TAKE_FOCUS. Если заданы name и command, то command ассоциируется с протоколом, заданным name. Name будет добавлен в свойство WM_PROTOCOLS window, чтобы сообщить менеджеру окон, что приложение имеет обработчик протокола для name, и command будет вызываться в будущем всякий раз, когда менеджер окон отправляет сообщение клиенту для этого протокола. В этом случае команда возвращает пустую строку. Если задан name, но не задан command, то возвращается текущая команда для name, или пустая строка, если для name не определен обработчик. Если command задано как пустая строка, то текущий обработчик для name удаляется, и он удаляется из свойства WM_PROTOCOLS window; возвращается пустая строка. Наконец, если не задано ни name, ни command, команда возвращает список всех протоколов, для которых в настоящее время определены обработчики для window.

Tk всегда определяет обработчик протоколов для WM_DELETE_WINDOW, даже если вы не запросили его с помощью wm protocol. Если появляется сообщение WM_DELETE_WINDOW, когда вы не определили обработчик, Tk обрабатывает сообщение, уничтожив окно, для которого оно было получено.

wm resizable window ?width height?
Эта команда управляет возможностью пользовательского изменения размера окна верхнего уровня. Если заданы width и height, они являются булевыми значениями, определяющими, можно ли изменять ширину и высоту window пользователем. В этом случае команда возвращает пустую строку. Если width и height опущены, команда возвращает список с двумя элементами 0/1, которые указывают, можно ли изменять ширину и высоту window. По умолчанию окна можно изменять размер в обоих направлениях. Если изменение размера отключено, размер окна будет соответствовать размеру, заданному последним интерактивным изменением размера или командой wm geometry. Если такого действия не было, будет использоваться естественный размер окна.
wm sizefrom window ?who?
Если задан who, он должен быть либо program, либо user, или сокращенным вариантом одного из этих двух. Это указывает, был ли текущий размер window запрошен программой или пользователем. Некоторые менеджеры окон игнорируют размеры, запрошенные программой, и просят пользователя вручную задать размер окна; если задано user, менеджер окон должен предоставить окну его заданный размер, не спрашивая пользователя о помощи. Если who задан как пустая строка, то текущий источник размера отменяется. Если who задан, команда возвращает пустую строку. В противном случае возвращаются user или program, чтобы указать источник текущего размера окна, или пустая строка, если источник еще не задан. Большинство менеджеров окон интерпретируют «отсутствие источника» как эквивалентное program.
wm stackorder window ?isabove|isbelow window?
Команда stackorder возвращает список окон верхнего уровня в порядке стекирования, от нижнего к верхнему. При передаче одного окна верхнего уровня возвращаемый список рекурсивно включает все дочерние окна окна, которые являются окнами верхнего уровня. Возвращаются только те окна верхнего уровня, которые в настоящее время отображаются на экране. Команда stackorder также может использоваться для определения того, расположено ли одно окно верхнего уровня над или под вторым окном верхнего уровня. При передаче двух аргументов окна, разделенных либо isabove, либо isbelow, булевый результат указывает, расположено ли первое окно над или под вторым окном в порядке стекирования.
wm state window ?newstate?
Если задан newstate, состояние окна будет изменено на новое состояние; в противном случае возвращается текущее состояние window: normal, iconic, withdrawn, icon или (только для Windows и Mac OS X) zoomed. Разница между iconic и icon заключается в том, что iconic относится к окну, которое было свёрнуто (например, с помощью команды wm iconify), а icon относится к окну, единственной целью которого является быть иконкой для другого окна (с помощью команды wm iconwindow). Состояние icon нельзя установить.
wm title window ?string?
Если задан string, он будет передан менеджеру окон для использования в качестве заголовка window (менеджер окон должен отображать эту строку в строке заголовка window). В этом случае команда возвращает пустую строку. Если string не задан, команда возвращает текущий заголовок window. Заголовок окна по умолчанию равен его имени.
wm transient window ?master?
Если задан master, менеджер окон получает информацию о том, что window является временным окном (например, раскрывающимся меню), работающим от имени master (где master — путь к окну верхнего уровня). Если master задан как пустая строка, window больше не отмечается как временное окно. В противном случае команда возвращает путь к текущему master окна window или пустую строку, если window в настоящее время не является временным окном. Временное окно будет отражать изменения состояния в master и наследовать состояние master при первоначальном отображении. Попытка сделать окно временным окном для самого себя является ошибкой. Менеджер окон также может декорировать временное окно по-другому, удаляя некоторые функции, обычно присутствующие (например, кнопки минимизации и максимизации), но это полностью зависит от менеджера окон.
wm withdraw window
Подготавливает window к скрытию со экрана. Это приводит к тому, что окно становится неотображаемым и забывается менеджером окон. Если окно никогда не отображалось, эта команда отображает окно в состоянии withdrawn. Не все менеджеры окон, похоже, знают, как обрабатывать окна, которые отображаются в состоянии withdrawn. Примечание: иногда кажется необходимым скрыть окно, а затем снова отобразить его (например, с помощью wm deiconify), чтобы некоторые менеджеры окон обратили внимание на изменения в атрибутах окна, таких как группа.

Управление геометрией

По умолчанию окно верхнего уровня отображается на экране в своем естественном размере, который определяется внутренне его виджетами и менеджерами геометрии. Если естественный размер окна верхнего уровня изменяется, размер окна изменяется соответственно. Окно верхнего уровня можно задать размер, отличный от естественного, двумя способами. Во-первых, пользователь может изменить размер окна вручную с помощью средств менеджера окон, таких как маркеры изменения размера. Во-вторых, приложение может запросить определенный размер для окна верхнего уровня с помощью команды wm geometry. Эти два случая обрабатываются Tk одинаково; в обоих случаях запрашиваемый размер переопределяет естественный размер. Вы можете вернуть окно к своему естественному размеру, вызвав wm geometry с пустой строкой geometry.

Обычно окно верхнего уровня может иметь любой размер от одного пикселя по каждой размерности до размера экрана. Однако вы можете использовать команды wm minsize и wm maxsize для ограничения диапазона допустимых размеров. Диапазон, заданный wm minsize и wm maxsize, применим ко всем видам изменения размера, включая естественный размер окна, а также ручные изменения размера и команду wm geometry. Вы также можете использовать команду wm resizable для полного отключения интерактивного изменения размера в одном или обоих измерениях.

Команды wm manage и wm forget могут использоваться для открепления и прикрепления окон. После того, как виджет управлялся командой wm manage, все остальные подкоманды wm могут использоваться с этим виджетом. Только виджеты, созданные с помощью команды toplevel, могут иметь прикреплённое меню через опцию конфигурации -menu. Виджет toplevel может использоваться как фрейм и управляться любым другим менеджером геометрии после использования команды wm forget. Любое меню, связанное с виджетом toplevel, будет скрыто, когда он управлятся другим менеджером геометрии. Меню снова появятся, как только окно будет управляться командой wm. Все пользовательские bindtags для виджетов в поддереве, у которых виджет верхнего уровня изменяется с помощью команд wm manage или wm forget, должны быть переделаны для корректировки пути виджета верхнего уровня в bindtags. Bindtags, которые не были настроены, переделывать не нужно.

Управление геометрией с сеткой

Управление геометрией с сеткой происходит, когда один из виджетов приложения поддерживает диапазон полезных размеров. Это происходит, например, в текстовом редакторе, где полосы прокрутки, меню и другие элементы оформления имеют фиксированный размер, но виджет редактирования может поддерживать любое количество строк текста или символов в строке. В этом случае обычно желательно, чтобы пользователь мог указать количество строк или символов на строку, либо с помощью команды wm geometry, либо путём интерактивного изменения размера окна. В случае с текстом, и в других интересных случаях также, только дискретные размеры окна имеют смысл, такие как целые числа строк и символов на строку; произвольные пиксельные размеры бесполезны.

Управление геометрией с сеткой обеспечивает поддержку этого типа приложений. Tk (и менеджер окон) предполагают, что внутри приложения существует некоторая сетка, и что приложение должно изменять свой размер в терминах единиц сетки, а не пикселей. Управление геометрией с сеткой обычно вызывается путём включения опции setGrid для виджета; оно также может быть вызвано командой wm grid или путём вызова Tk_SetGrid. В каждом из этих подходов конкретный виджет (или иногда код в целом в приложении) определяет соотношение между целочисленными размерами сетки для окна и пиксельными размерами. Чтобы вернуться к управлению геометрией без сетки, вызовите команду wm grid с пустыми строками аргументов.

Когда управление геометрией с сеткой включено, все размеры, указанные в командах wm minsize, wm maxsize и wm geometry, обрабатываются как единицы сетки, а не пиксельные единицы. Интерактивное изменение размера также выполняется чётным количеством единиц сетки, а не пикселей.

Ошибки

Большинство существующих менеджеров окон имеют ошибки, которые влияют на работу команды wm. Например, некоторые изменения не вступят в силу, если окно уже активно: окно должно быть скрыто и отображено, чтобы изменения произошли.

Примеры

Окно с фиксированным размером, которое тоже сообщает о фиксированном размере:
toplevel .fixed
wm title     .fixed "Fixed-size Window"
wm resizable .fixed 0 0

Простое окно-диалог, центрированное на экране:

# Create and arrange the dialog contents.
toplevel .msg
label  .msg.l  -text "This is a very simple dialog demo."
button .msg.ok -text OK -default active -command {destroy .msg}
pack .msg.ok -side bottom -fill x
pack .msg.l  -expand 1    -fill both

# Now set the widget up as a centred dialog.

# But first, we need the geometry managers to finish setting
# up the interior of the dialog, for which we need to run the
# event loop with the widget hidden completely...
wm withdraw .msg
update
set x [expr {([winfo screenwidth .]-[winfo width .msg])/2}]
set y [expr {([winfo screenheight .]-[winfo height .msg])/2}]
wm geometry  .msg +$x+$y
wm transient .msg .
wm title     .msg "Dialog demo"
wm deiconify .msg

См. также

toplevel, winfo

Licensed under Tcl/Tk terms
https://www.tcl.tk/man/tcl/TkCmd/wm.htm

Licensed under Tcl/Tk terms
https://www.tcl.tk/man/tcl/TkCmd/wm.htm

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API