Команда взаимодействия с менеджером окон.
ОПИСАНИЕ Команда wm предназначена для взаимодействия с менеджером окон и обеспечивает таким образом управление такими атрибутами окон, как заголовок, размеры и размещение, возможность изменять размер. Команда имеет несколько форм в зависимости от используемых опций. Во всех формах команда предполагает наличие по крайней мере одного аргумента имени toplevel окна.
Ниже перечислены возможные формы команды.
Если аргументы minNumer, minDenom, maxNume и maxDenom заданы, они передаются менеджеру окон, который использует их для определения допустимых пропорций окна. Пропорции (отношение ширина высота) могут быть в диапазоне от minNumer/minDenom до maxNumer/maxDenom. Если аргументы minNumer и т.д. определены как пустые строки, то существующие ограничения на пропорции отменяются. Если аргументы minNumer и т.д. заданы, то команда возвращает пустое значение. В противном случае она возвращает список из четырех элементов текущих значений minNumer, minDenom, maxNumer, и maxDenom (если ограничения не заданы, возвращается пустая строка).
wm client window name
wm colormapwindows window ?windowList?
Эта команда используется для управления свойством WM_COLORMAP_WINDOWS, которое обеспечивает менеджер окон информацией об окнах, имеющих собственную палитру. Если аргумент windowListне задан, команда возвращает список окон, имеющих собственную палитру. Если аргумент задан, он представляет собой список полных имен окон. Команда изменяет старое значение свойства на новое и возвращает пустую строку. Список окон перечисляет внутренние окна, палитра которых отличается от палитры их логических предков. Порядок, в котором перечислены окна, указывает порядок, в котором менеджер окон просматривает окна, пытаясь разместить новые цвета в палитре. Не указанные в списке окна обрабатываются в последнюю очередь. Если команда не использовалась, Tk автоматически устанавливает свойство для каждого toplevel окна. В списке перечисляются все его внутренние окна, имеющие собственную палитру, в случайном порядке. В конце списка указывается само toplevel окно. Более подробно свойство WM_COLORMAP_WINDOWS описано в (1).
wm command window value
Если аргумент value задан, команда сохраняет его значение в свойстве окна WM_COMMAND, которое используется менеджером окон или менеджером сессий. В этом случае команда возвращает пустую строку. Аргумент value должен содержать список, элементы которого являются словами команды, используемой для запуска приложения (см. также wmuse).
Если аргумент value не задан, команда возвращает последнее установленное ранее значение свойства. Если аргумент name определен как пустая строка, свойство окна WM_COMMAND удаляется.
wm deiconify window
Заставляет окно появиться на экране в нормальном виде (а не в виде иконки, например,). Если окно ранее не появлялось на экране, выполнение команды не приведет к его появлению, но она гарантирует, что если в будущем окно появится, оно появится в нормальном виде. Команда возвращает пустую строку.
wm focusmodel windowactive|passive
Если тип фокуса для (active или passive) окна указан в команде, он определяет какой тип фокуса будет использоваться. В этом случае команда возвращает пустую строку. Если тип фокуса не указан, команда возвращает текущее значение типа. Активный тип фокуса означает, что окно запрашивает фокус ввода себе или своим потомкам, даже если в этот момент фокус находится в другом приложении. Пассивный фокус означает, что окно не запрашивает фокус, а получает его от менеджера окон. Однако, после того, как окно или один из его потомков получил фокус, приложение может передать его другому потомку окна. По умолчанию устанавливает пассивный фокус.
wm frame window
Если окно заключено менеджером окон в декоративную рамку, команда возвращает идентификатор самой внешней рамки, которая содержит окно (окно, являющееся потомком корневого окна или виртуального корневого окна). Вид идентификатора зависит от платформы. Если окно не заключено в рамку, возвращается идентификатор окна, вид которого также зависит от платформы.
wm geometry window newGeometry
Если задан аргумент newGeometry, размеры и размещение окна изменяются, а команда возвращает пустую строку. В противном случае возвращается последняя информация о размерах и размещении окна (независимо от того, была ли она задана путем изменения размеров окна вручную или с помощью команды wm). Аргумент newGeometry должен быть задан в следующем виде =ширинаxвысота╠x╠y, где любая из частей =ширинаxвысота или ╠x╠y может быть опущена. Ширина и высота должны быть положительными целыми числами, задающими желаемый размер окна. Если для окна задана сетка (см. .Управление окнами с сеткой.), размеры указываются в шагах сетки. В противном случае размеры указываются в пикселях. X и Y определяют желаемое размещение окна на экране в пикселях. Если перед x стоит .+., то величина x определяет расстояние от левого края экрана до левого края окна, в противном случае x задает расстояние от правого края экрана до правого края окна. Если перед y стоит .+., то величина y определяет расстояние от верхнего края экрана до верхнего края окна, в противном случае y задает расстояние от низа экрана до нижнего края окна. Если аргумент newGeometry задан как пустая строка, текущие установленные пользователем размеры окна отменяются и окно приобретает размеры, определяемые размерами составляющих его виджетов.
wm grid window baseWidth baseHeight widthInc heightInc
Замечание. Потребность в использовании команды wm grid возникает относительно редко, поскольку той же функциональности поведения окна можно добиться, например, с помощью опции setGrid в командах создания виджетов.
wm group window pathName
Если аргумент pathName указан, окно
pathName становится лидером группы для window.
Менеджер окон использует эту информацию, например, для того,
чтобы одновременно выводить с экрана все окна группы, если
сворачивается лидер группы. Если аргумент pathName
представлен пустой строкой, окно window выводится из
состава группы.
Если аргумент pathName задан, команда возвращает пустую
строку. В противном случае команда возвращает имя текущего лидера
группы для окна window или пустую строку, если лидер не
определен.
wm iconbitmap window bitmap
Если аргумент bitmap задан, он определяет имя растрового образа, которое передается менеджеру окон для использования в качестве иконки. Имя образа может быть задано в одной из следующих форм:
wm iconify window
Команда сворачивает указанное окно. Если окно еще не было размещено на экран, оно появится, когда это произойдет, в виде иконки.
wm iconmask window bitmap
Если аргумент bitmap задан, он определяет имя растрового образа, которое передается менеджеру окон для использования в качестве маски для иконки. Там, где маска имеет значение .0., образ иконки не отображается; там, где маска имеет значение .1., маска рисуется. Имя образа может быть задано в одной из следующих форм:
wm minsize window width height
wm overrideredirect window boolean
wm positionfrom window who
Если изменение размеров окна пользователем запрещено, то либо сохраняются те размеры окна, которые были получены в результате последнего выполненного пользователем изменения размеров, либо размеры окна устанавливаются с помощью команды wm geometry. Если этих действий не было, используются размеры окна, определяемые размерами составляющих его виджетов.
По умолчанию toplevel-окна при появлении на экране имеют размеры, определяемые размерами составляющих его виджетов (.естественные. размеры). Если изменяются размеры или состав виджетов, то изменяется и размер toplevel-окна. Для toplevel-окна размеры, отличные от .естественных., могут быть заданы двумя способами. Первый пользователь может изменить размеры окна вручную, используя стандартные механизмы менеджера окон. Второй приложение может запросить изменение размеров окна с помощью команды wm geometry. Оба зти способа обрабатываются в Tk единообразно. Размеры окна изменяются на новые, отличные от .естественных.. Чтобы вернуть .естественные. размеры окна, нужно выполнить команду wm geometry с пустой строкой в качестве аргумента, задающего размеры и размещение окна.
Обычно размеры окна могут изменяться произвольно в диапазоне от 1 пикселя до размеров экрана. Однако, с помощью команд wm minsize и wm maxsize можно изменить область возможных размеров окна. Эти ограничения будут использоваться при всех способах изменения размеров окна, в том числе и при ручном изменении, и при изменении размеров и состава его виджетов, приводящем к изменению его .естественных. размеров. С помощью команды wm resizable можно полностью запретить изменение размеров окна каким-либо способом в одном или в обоих направлениях.
Окна с сеткой используются, если один из виджетов окна имеет ограниченное множество .разумных. размеров. Например, в текстовом редакторе, где полосы прокрутки, меню и т. д. имеют фиксированный размер, а поле редактирования текста может содержать произвольное число строк или букв в строке. В этом случае желательно дать пользователю возможность устанавливать непосредственно число строк или букв в строке при изменении размеров окна как вручную, так и с помощью команды wm geometry. Как в случае с текстом, так и в других аналогичных, .разумным. является не всякий размер окна в пикселях, а только размеры, соответствующие целому числу строк или букв в строке.
Введение сетки обеспечивает механизм для реализации этих требований. Tk (и менеджер окон) предполагают существование сетки в окне, и что .разумными. являются только размеры, выраженные в целых шагах сетки, а не в произвольном числе пикселей. Обычно сетка устанавливается с помощью опции setGrid для соответствующего виджета. Она может также устанавливаться с помощью команды wm grid. В любом случае с помощью виджета или кода приложения определяются размеры окна в пикселях, соответствующие целым размерам в шагах сетки. Чтобы отменить сетку, нужно выполнить команду wm grid с пустой строкой, задающей сетку.
Если сетка задана, все определения размеров в командах wm minsize, wm maxsize и wm geometry считаются заданными в шагах сетки, а не в пикселях. Ручное изменение размеров окна также производится в целых шагах сетки.
Как оказалось, большинство существующих менеджеров окон имеют некоторые ошибки, которые проявляются при выполнении команды wm. Например, некоторые изменения не производятся в окне, если оно активно. Окно должно быть выведено с экрана и возвращено обратно, чтобы изменения выполнились.