Встроенные команды Tk
Safe Tk, loadTk
Команда загружает Tk в безопасный ИНТЕРПРЕТАТОР.
СИНТАКСИС
::safe::loadTk slave ?-use
windowId?
ОПИСАНИЕ
Режим Safe Tk основан на режиме Safe Tcl,
обеспечивающем ограниченный и опосредованный доступ к автозагрузке и пакетам
для безопасных интерпретаторов. Safe Tk добавляет способность
конфигурирования интерпретатора для безопасных Tk операций и загрузки Tk в
безопасные интерпретаторы.
Команда ::safe:: запускает необходимые структуры данных в безопасном
интерпретаторе и загружает в него Tk. Команда возвращает имя безопасного
интерпретатора.
При работе с Tk в безопасном интерпретаторе необходимо следовать правилам
поддержания безопасности, а также специальным рекомендациям для работы с Tk.
СМ. ТАКЖЕ
safe(n),
interp(n),
library(n),
load(n),
package(n),
source(n),
unknown(n)
bell
Команда подает звуковой сигнал.
СИНТАКСИС
ОПИСАНИЕ
Команда bell подает сигнал громкоговорителем
дисплея для window. Если этот аргумент не задан, то по умолчанию
используется дисплей главного окна приложения. В некоторых случаях команда
гасит работающий в данный момент хранитель экрана (screen-saver), и окно снова
становится видимым.
Bind
bind— привязка скриптов Tcl к X событиям. Команда назначает
событиям ввода от “Мыши” и клавиатуры (Х событиям) исполнение скрипта Tcl.
СИНТАКСИС
bind тег
bind тег последовательность
bind тег последовательность скрипт
bind тег последовательность+скрипт
ОПИСАНИЕ
Команда bind привязывает Tcl скрипты к X
событиям. Если заданы все три аргумента команды, то при каждом наступлении
события последовательность в окне (окнах), описанных тегом,
будет выполняться скрипт (скрипт Tcl). Если аргументу скрипт
предшествует знак ‘+’, то скрипт добавляется к уже существующим привязкам к
последовательности; в противном случае он замещает все имеющиеся
привязки. Если аргумент скрипт пуст, то все имеющиеся привязки к
последовательности отменяются, и последовательность становится
несвязанной. Если аргумент скрипт присутствует, то команда bind
возвращает пустую строку.
Если при отсутствии аргумента скрипт аргумент
последовательность задан, то команда возвращает скрипт, привязанный к
данной последовательности, или, в случае отсутствия такого скрипта, пустую
строку. Если не задан ни один из аргументов последовательность и
скрипт, то команда возвращает список, элементами которого служат все
последовательности, имеющие привязки к окну тег.
Аргумент тег перечисляет окна, к которым выполняется привязка. Если
значение аргумента начинается с точки, скажем ‘.a.b.c’, то оно должно
представлять собой путь к окну; в противном случае оно может быть произвольной
строкой. Каждому окну приписан некоторый список тегов, и привязка к данному
окну осуществляется, если значение аргумента тег присутствует в этом
списке. Команда bindtags позволяет приписать окну произвольный набор
тегов привязки; кроме того, по умолчанию окнам приписаны следующие теги:
- тег, являющийся именем внутреннего окна, приписывается этому окну;
- тег, являющийся именем окна верхнего уровня, приписывается этому окну и
всем его внутренним окнам;
- тег, являющийся именем класса примитивов, скажем Button,
приписывается всем примитивам этого класса;
- тег с именем all приписывается всем окнам приложения.
ОБРАЗЦЫ СОБЫИЙ
Аргумент последовательность представляет собой
последовательность одного или нескольких образцов событий. Каждый образец
может быть записан в одном из трех видов. В простейшем случае это символ
ASCII, скажем ‘a’ или ‘|’. Этот символ не может быть ‘пробелом’
или знаком ‘<’. Этот вид образцов соответствует событию KeyPress для
конкретной клавиши. Образцы второго вида длиннее, однако, этот вид носит более
общий характер. Его синтаксис выглядит следующим образом:
<модификатор-модификатор-тип-детализация>
Образец события целиком заключен в угловые скобки. Внутри угловых скобок
располагаются несколько модификаторов (быть может, ни одного), тип события и
дополнительная порция информации (детализация), указывающая конкретную
кнопку или комбинацию клавиш. Одно из полей тип или детализация
должно обязательно присутствовать, остальные могут быть опущены. Поля
разделяются пробелами или дефисами.
Третья форма образца используется для задания поименованного виртуального
события, определенного пользователем. У нее следующий синтаксис:
<<имя>>
Образец события целиком заключен в двойные угловые скобки. Внутри этих
скобок содержится определенное пользователем имя виртуального события. С
виртуальным событием нельзя комбинировать модификаторы, такие как
Shift или Control. Привязки к виртуальному событию
можно создавать до описания самого события; при динамическом изменении этого
описания все окна, привязанные к событию, будут обращаться к новому описанию.
МОДИФИКАТОРЫ
Модификаторы могут быть следующими:
Control |
Mod2, M2 |
Shift |
Mod3, M3 |
Lock |
Mod4, M4 |
Button1, B1 |
Mod5, M5 |
Button2, B2 |
Meta, M |
Button3, B3 |
Alt |
Button4, B4 |
Double |
Button5, B5 |
Triple |
Mod1, |
M1 |
Если в строке приведено несколько элементов,
разделенных запятыми, то они взаимозаменяемы. У большинства модификаторов есть
очевидное X значение. Например, модификатор Button 1 требует нажатия
кнопки 1 для наступления события. Чтобы привязка соответствовала данному
событию, среди модификаторов события должны содержаться все модификаторы,
заданные в образце события. Кроме того событие может содержать и другие
модификаторы, не приведенные в описании привязки. Например, при нажатии кнопки
1 одновременно с нажатием клавиш Shift и Ctrl событие подойдет
под образец <Control-Button-1>, но не подойдет под
образец <Mod1-Button-1>. Если ни один из модификаторов не был
задан, то в событии может присутствовать любая комбинация модификаторов.
Модификаторы Meta и M заменяют любой из
идентификаторов от M1 до M5, ассоциированный с
метаклавишами на клавиатуре (коды клавиш Meta_R и Meta_L). При
отсутствии метаклавиш или в случае, если они не ассоциированы ни с каким
модификатором, модификаторы Meta и M не будут соответствовать
никакому событию. Аналогично модификатор Alt заменяет любой из
модификаторов, ассоциированных с alt-клавишами на клавиатуре (коды клавиш
Alt_L и Alt_R).
Модификаторы Doubleи Triple обеспечивают удобную обработку
двойного щелчка “Мыши” и других повторяющихся событий. Они требуют, чтобы
данное событие повторилось дважды или трижды, и накладывают ограничения на
время и место его повторения: для того, чтобы последовательность событий
подходила под образец Double или Triple, промежуток времени
между событиями должен быть коротким, а “Мышь” не должна сдвигаться. Например,
комбинация <Double-Button-1> эквивалентна паре
<Button-1><Button-1> с дополнительными
временными и пространственными ограничениями.
ТИПЫ СОБЫТИЙ
Значением поля тип может быть любой из стандартных типов X
событий, а также некоторые дополнительные сокращения. Ниже приведен список
всех допустимых значений. Два имени, составляющие пару, синонимичны.
ButtonPress |
Button |
Expose |
Map |
ButtonRelease |
FocusIn |
Motion |
|
Circulate |
FocusOut |
Property |
|
Colormap |
Gravity |
Reparent |
|
Configure |
KeyPress |
Key Unmap |
|
Destroy |
KeyRelease |
Visibility |
|
Enter |
Leave |
Activate |
Deactivate |
Последней частью длинной спецификации события является детализация.
Для типов ButtonPress и ButtonRelease это номер кнопки (1-5).
Если номер кнопки задан, то под образец подойдет только событие на указанной
кнопке; если номер кнопки не задан, то под образец подойдет событие на любой
из кнопок. Замечание: задание номера кнопки отличается от задания модификатора
кнопки: в первом случае требуется, чтобы кнопка была нажата или отжата; во
втором — чтобы какая-то другая кнопка была отжата при наступлении события.
Если номер кнопки задан, то поле тип можно опустить: по умолчанию оно
будет иметь значение ButtonPress. Например, спецификатор
<1> эквивалентен спецификатору
<ButtonPress-1>.
Для типов KeyPressи KeyRelease детализацию можно
указать в виде описателя X клавиши. В их число входят все алфавитно-цифровые
символы ASCII (например, описательa служит для описания символа ASCII
‘a’), а также описатели для неалфавитно-цифровых символов (описатель
comma для запятой) и описатели для всех не ASCII-клавиш клавиатуры
(Shift_L для левой клавиши верхнего регистра, F1 для первой
функциональной клавиши при ее наличии). Мы не приводим здесь полный список
клавиш. Он меняется от системы к системе, и его можно найти в других частях X
документации. При необходимости можно получить описатель клавиши с помощью
обозначения %K, описанного ниже. Если приведена детализация
описателя клавиши, то поле тип может отсутствовать, по умолчанию
принимается значение KeyPress. Например, спецификатор
<Control-comma> эквивалентен спецификатору
<Control-KeyPress-comma>.
ПОДСТАНОВКИ И СКРИПТЫ ПРИВЯЗКИ
Аргумент скрипт команды bind
должен быть скриптом Tcl; при каждом наступлении события происходит выполнение
этого скрипта. Команда выполняется тем же интерпретатором, что и
команда bind,
причем интерпретация происходит на верхнем уровне (доступны только значения
глобальных переменных). Если в скрипте есть символы ‘%’, то его
исполнение не будет осуществляться непосредственно. Каждый символ ‘%’ и
символ, следующий за ним, заменяются данными о происшедшем событии, в
результате чего генерируется новый скрипт. Подстановка осуществляется в
соответствии с приводимым ниже списком символов. Если не оговорено противное,
то подставляемая строка представляет собой десятичное содержимое указанного
поля события. Некоторые подстановки допустимы только для событий определенных
типов: при использовании их с событиями других типов результат подстановки не
определен.
%% Заменяется однократным процентом.
%# Номер последнего обработанного сервером запроса
клиента (сериальное поле события).
Допустимо для событий всех типов
.
%a Поле выше события,
отформатированное как шестнадцатеричное число.
Допустимо только для событий Configure.
%b Номер нажатой или отпущенной
кнопки.
Допустимо только для событий ButtonPress и
ButtonRelease.
%c Поле счетчик события.
Допустимо только для событий Expose.
%d Поле детализация
события.
Символы ‘%d’ заменяются строкой детализации.
Для событий
Enter, Leave, FocusIn, FocusOut
строка
должна быть одной из следующих:
NotifyAncestor |
NotifyNonlinearVirtual |
NotifyDetailNone |
NotifyPointer |
NotifyInterior |
NotifyPointerRoot |
NotifyNonlinear |
NotifyVirtual |
Для прочих событий подставляемая строка не определена.
%f |
Поле фокус события (0 или 1).
Допустимо только для событий Enter и
Leave. |
%h |
Поле высота события. Допустимо только для событий
Configure и Expose. |
%k |
Поле код_клавиши события. Допустимо только для
событий KeyPress и KeyRelease. |
%m |
Поле режим события. Подставляется одна из строк
NotifyNormal, NotifyGrab, NotifyUngrab или
NotifyWhileGrabbed. Допустимо только для событий
Enter,FocusIn, FocusOut и
Leave. |
%o |
Поле подавить_перенаправление события.Допустимо
только для событий Map,Reparent и
Configure. |
%p |
Поле размещать события. Строка
подстановки имеет вид PlaceOnTop или PlaceOnBottom.
Допустимо только для событий
Circulate. |
%s |
Поле состояние события. Для событий ButtonPress,
ButtonRelease, Enter, KeyPress, KeyRelease, Leave и
Motion происходит подстановка десятичного числа. Для события
Visibility подставляется одна из строк isibilityUnobscured,
VisibilityPartiallyObscured или
VisibilityFullyObscured. |
%t |
Поле время события. Допустимо только для
событий, содержащих поле время. |
%w |
Поле ширина события. Допустимо только для
событий Configure и Expose. |
%x |
Поле x события. Допустимо только для событий,
содержащих поле x. |
%y |
Поле y события.Допустимо только для событий,
содержащих поле y. |
%A |
Заменяется символом ASCII, отвечающим происшедшему
событию,или пустой строкой, если событию не соответствуетникакой
символ ASCII (например, нажата клавиша верхнего регистра). Работу по
переводу события в ASCII символ выполняет XLookupString.
Допустимо только для событий KeyPress и
KeyRelease. |
%B |
Поле ширина_бордюра события.Допустимо только для
событий Configure. |
%E |
Поле послать_событие события.Допустимо для событий
всех типов. |
%K |
Код клавиши, соответствующей данному событию,
представленный текстовой строкой. Допустимо только для событий
KeyPress и KeyRelease. |
%N |
Код клавиши, соответствующей данному событию,
представленный десятичным числом. Допустимо только для событий
KeyPress и KeyRelease. |
%R |
Идентификатор корневого окна события.Допустимо только для
событий содержащих поле корень |
%S |
Идентификатор подокна события, представленный в виде
шестнадцатиричного числа. Допустимо только для событий
содержащих поле подокно. |
%T |
Поле тип события. Допустимо для событий всех
типов. |
%W |
Путь к окну, к которому отнесено событие (поле окно
события). Допустимо для событий всех типов. |
%X |
Поле x_корень события. При использовании
виртуально-корневого менеджера окон подставляемое значение равняется
x-координате в виртуальном корне. Допустимо только для событий
ButtonPress, ButtonRelease, KeyPress, KeyRelease и
Motion. |
%Y |
Поле y_корень события. При использовании
виртуально-корневого менеджера окон подставляемое значение
равняется y-координате в виртуальном корне. Допустимо только для
событий ButtonPress, ButtonRelease, KeyPress,
KeyRelease и
Motion. |
Строка подстановки
для %-замещения форматируется как обычный элемент списка Tcl. Это означает,
что при наличии в строке пробелов она заключается в фигурные скобки, а
специальным символам, таким как `$' и `{' может предшествовать обратная косая
черта. Такая строка нормально обрабатывается синтаксическим анализатором Tcl
при выполнении скрипта. Строки подстановки по большей части являются числами
или корректно определенными строками как, например, Above; такие строки
не нуждаются ни в каком специальном форматировании. Чаще всего форматирования
требуют строки, замещающие %A. Если, например, скрипт имеет вид
insert %Aи вводимым символом является открывающая
квадратная скобка, то реально исполняемым скриптом будет
insert \[т.е. в качестве первого аргумента
insert получит исходную строку подстановки (открывающую квадратную
скобку). Если бы обратная косая черта не была добавлена, Tcl не смог бы
правильно обработать скрипт.
НЕСКОЛЬКО ПРИВЯЗОК,
ОТВЕЧАЮЩИХ ОБРАЗЦУ
Данному X событию может отвечать несколько привязок. Если эти
привязки соответствуют различным тегам, то все они выполняются по
очереди. По умолчанию сначала исполняется привязка для примитива, затем
привязка класса, затем привязка верхнего уровня и привязка
all. Этот порядок для конкретного окна можно поменять с
помощью команды bindtags, которая позволяет также выполнить
дополнительные привязки к окну.
Управление обработкой скриптов, отвечающих
образцу, осуществляется командами continue и
break в
привязанном скрипте. При выполнении команды continue
выполнение текущего привязанного скрипта прерывается и Tk переходит к
выполнению скриптов, соответствующих остальным тегам. При выполнении
команды break
выполнение текущего привязанного скрипта прерывается и никакие другие скрипты
не выполняются.
Если данному событию соответствует несколько привязок с одним и тем же
тегом, то из них выбирается наиболее конкретная привязка и выполняется ее
скрипт. Выбор наиболее конкретной привязки осуществляется по следующим
критериям:
а) образец события, задающий конкретную кнопку или клавишу, более
конкретен, чем тот, в котором такой спецификации не задано;
б) более длинная последовательность (по числу отвечающих образцу событий)
конкретнее более короткой;
в) если модификаторы первого образца содержатся среди модификаторов
второго, то образец с большим числом модификаторов более конкретен;
г) виртуальное событие, физический образец которого соответствует
последовательности, менее конкретно, чем тот же самый физический образец, не
связанный ни с каким виртуальным событием;
д) если последовательность отвечает двум или более виртуальным событиям, то
из них выбирается какое-нибудь одно, однако порядок выбора не определен.
Если в подходящей последовательности событий больше одного события, то
критерии (а) - (д) применяются ко всем событиям, начиная с самого последнего и
до самого первого события последовательности. Если критерии не позволяют
определить победителя, то победителем становится событие, зарегистрированное
последним.
Если одна и та же последовательность осуществляет переключение к двум (или
более) виртуальным событиям, и теги окон этих виртуальных событий совпадают,
то переключение произойдет лишь к одному из этих виртуальных событий,
выбранному случайным образом:
event add <<Paste>> <Control-y>
event add <<Paste>> <Button-2>
event add <<Scroll>> <Button-2>
bind Entry <<Paste>> {puts Paste}
bind Entry <<Scroll>> {puts Scroll}
При нажатии Control-y будет выполнена привязка
<<Paste>>, а при нажатии кнопки 2 — одна из привязок
<<Paste>> или <<Scroll>>, причем
определить какой именно будет эта привязка, невозможно.
Если X событие не подходит ни под одну из существующих привязок, то событие
игнорируется. Наступление не привязанного события не считается
ошибкой.
ПОСЛЕДОВАТЕЛЬНОСТИ
НЕСКОЛЬКИХ СОБЫТИЙ И ИГНОРИРУЕМЫЕ СОБЫТИЯ
Если аргумент последовательность в команде bind
состоит из нескольких образцов событий, то скрипт выполняется в случае, если
последние события (включая самое последнее) подходят под данную
последовательность. Это означает, например, что при неоднократном
последовательном нажатии кнопки 1 каждое из нажатий, за исключением самого
первого, отвечает образцу <Doudble-ButtonPress-1>. Если в
последовательности событий происходят посторонние события, то они
игнорируются, за исключением событий KeyPress и ButtonPress.
Например, нажатия на кнопку “1” будут соответствовать образцу
<Doudble-ButtonPress-1>, даже если их перемежают события
ButtonRelease или Motion. Кроме того событию
KeyPressможет предшествовать произвольная последовательность событий
KeyPress для модификаторов, среди которых нет модификаторов, нарушающих
соответствие образцу. Например, последовательности событий aBотвечает
нажатие на клавишу a, отпускание клавиши a, нажатие на клавишу
Shift и нажатие на клавишу b, так как нажатие на клавишу
модификатора Shift игнорируется. И, наконец, если последовательно
происходит несколько событий Motion, то для установления соответствия
привязке берется последнее из них.
ОШИБКИ
При возникновении ошибки в процессе исполнения привязанного скрипта
для выдачи сообщения об ошибке используется механизм bgerror.
Команда bgerror
исполняется на верхнем уровне (вне контекста любой из процедур
Tcl).
bindtags
Команда определяет, какие привязки относятся к окну и порядок
обработки.
СИНТАКСИС
bindtags window ?tagList?ОПИСАНИЕ
Когда с помощью команды bind
создается привязка, ей ставятся в соответствие имя окна, имя класса, ключевое
слово или какая-нибудь строка. Все эти формы называются тегами привязки (binding
tag). Каждое окно имеет список тегов привязки, определяющих, каким образом
обрабатываются события для данного окна. Когда в окне происходит событие, оно по
очереди сличается с каждым из тегов окна, и для каждого тега исполняется та
привязка, которая более всех соответствует событию и тегу.
Команда позволяет получать сведения о привязках окна и модифицировать их:
добавлять новые, удалять и замещать существующие.
bitmap
Встроенный тип изображений Tk, имеющих только два
цвета.СИНТАКСИС
image create bitmap ?name?
?options?ОПИСАНИЕ
В терминах языка Tcl/Tk, bitmap — это двухцветное изображение, пиксели
которого могут отображать один из двух заданных цветов или быть прозрачными.
Такое изображение имеет четыре аргумента: два цвета (переднего плана и фона) и
два двоичных файла, называемых source (источник) и mask (маска).
Оба файла задают значения '0' или "1" для пикселей прямоугольной области, оба
файла должны быть одной размерности. Пиксели, для которых в маске задано
значение "0", не отображают ничего (получается эффект прозрачности). Остальные
пиксели имеют либо цвет переднего плана, если значение в source для
пикселя равно "1", либо фоновый цвет в обратном случае.
Подобно всем прочим изображениям, двухцветные изображения создаются при
помощи команды image create. При создании нового bitmap Tk также
создает команду с именем этого изображения. Команда может использоваться для
выполнения различных операций над данным изображением.
button
Создание примитива кнопки и управление им.
СИНТАКСИС
button имяПути параметры
СТАНДАРТНЫЕ ПАРАМЕТРЫ
-activebackground |
-cursor |
-highlightthickness |
-takefocus |
-activeforeground |
-disabledforeground |
-image |
text |
-anchor |
-font |
-justify |
-textvariable |
-background |
-foreground |
-padx |
-underline |
-bitmap |
-highlightbackground |
-pady |
-wraplength |
-borderwidth |
-highlightcolor |
-relief |
|
Подробное описание этих параметров приведено в разделе options.
ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ
ПРИМИТИВА
Имя параметра: -command
Имя в Базе: command
Класс в
Базе: Command
Ассоциирует с кнопкой команду Tk. Обычно команда выполняется при
отпускании клавиши 1 "Мыши".
Имя параметра: -default
Имя в Базе: default
Класс в
Базе: Default
Задает одно из трех состояний изображения ободка кнопки: normal, active
или disabled. В активном состоянии кнопка имеет изображение по
умолчанию для данной платформы. В нормальном состоянии кнопка изображается в
виде, предусмотренном данной платформой для кнопок не по умолчанию; при этом
остается достаточно места для изображения кнопки по умолчанию. Нормальное и
активное состояние приводят к появлению кнопок одинакового размера. Отключенное
состояние приводит к выводу кнопки не по умолчанию, не оставляя при этом места
для кнопки по умолчанию. Кнопка в отключенном состоянии может быть меньше кнопки
в активном состоянии.
Имя параметра: -height
Имя в Базе: height
Класс в
Базе: Height
Задает желаемую высоту кнопки. Если в кнопке выводится изображение или
двуцветное изображение, то значение параметра задается в пикселях (т.е., в любом
виде, приемлемом для Tk_GetPixels); высота текстовой кнопки задается
числом строчек текста. Если параметр не задан, то высота кнопки вычисляется по
ее содержимому.
Имя параметра: -state
Имя в Базе: state
Класс в
Базе: State
Задает одно из трех состояний кнопки: normal, active или
disabled. В нормальном состоянии кнопка изображается с использованием
значений параметров foreground и background. В активном состоянии
кнопка обычно находится, если на ней расположен курсор. Кнопка в активном
состоянии изображается с использованием значений параметров activeForeground
и activeBackground. Отключенное состояние указывает на то, что кнопка
должна быть нечувствительной: привязки по умолчанию не приводят к запуску
примитива и нажатия на кнопку "Мыши" игнорируются. В этом состоянии изображение
кнопки определяется значениями параметров disabledForeground и
background.
Имя параметра: -width
Имя в Базе: width
Класс в
Базе: Width
Задает желаемую ширину кнопки. Если в кнопке выводится изображение или
двуцветное изображение, то значение параметра задается в пикселях (т.е., в любом
виде, приемлемом для Tk_GetPixels); ширина текстовой кнопки задается
числом символов. Если параметр не задан, то ширина кнопки вычисляется по ее
содержимому.
ОПИСАНИЕ
Команда button создает новое окно (задаваемое аргументом
имяПути) и превращает его в примитив кнопки. Детали изображения кнопки,
такие, как ее цвета, шрифт, текст и объемный вид задаются с помощью описанных
выше дополнительных параметров. Команда button возвращает аргумент
имяПути. В момент выполнения этой команды не должно существовать окна с
именем имяПути, но должен существовать его предок.
Кнопка представляет собой примитив, в котором выводится текстовая строка,
изображение или двуцветное изображение. Весь выводимый текст должен быть записан
одним шрифтом, однако он может занимать несколько строчек на экране (если в нем
есть символы перевода строки или задан параметр wrapLength). Один
из символов текста может быть подчеркнут (в соответствии со значением параметра
underline). В зависимости от значения параметра button кнопка
имеет три разных вида; кнопка может выглядеть выпуклой, вдавленной или плоской,
кроме того, она может мигать. При инициации кнопки (нажатием на клавишу 1
"Мыши", когда курсор "Мыши" находится на кнопке) выполняется команда Tcl,
указанная в параметре -command.
КОМАНДА ПРИМИТИВА
Команда button создает новую команду Tcl с именем
имяПути. С помощью этой команды можно выполнять различные операции над
примитивом. Ее общий вид
имяПути параметр арг арг ...
Параметр и аргументы уточняют поведение команды. Примитивы
кнопки допускают следующие формы команды:
имяПути cget параметр
Возвращает текущее значение параметра конфигурации с именем параметр.
Параметр может быть любым из параметров команды
button.имяПути configure параметр значение
параметр значение ...
Запрашивает значения параметров конфигурации примитива или изменяет их.
Если параметр не указан, то возвращает список, содержащий значения всех
допустимых в имениПути параметров (формат списка описан в
Tk_ConfigureInfo). Если параметр задан, а его новое значение —
нет, то команда возвращает часть полного списка, относящуюся к указанному
параметру. Если заданы одна или несколько пар параметр-значение, то указанным
параметрам примитива присваиваются новые значения, а команда возвращает пустую
строку. Параметр может быть любым из параметров команды
button.
имяПути flash
Заставляет кнопку мигать. Этот эффект достигается путем многократного
вывода изображения кнопки поочередно в активном и нормальном состоянии. По
окончании работы команды кнопка остается в том же состоянии (активном или
нормальном), что и перед началом ее выполнения. Если перед началом выполнения
команды кнопка находится в состоянии disabled, то команда
игнорируется.имяПути invoke
Выполняет команду Tcl, ассоциированную с кнопкой (при наличии такой
команды). Возвращаемое значение совпадает с возвращаемым значением команды Tcl
(или является пустой строкой, если с кнопкой никакой команды не ассоциировано).
Если перед началом выполнения команды кнопка находится в состоянии
disabled, то команда игнорируется.
При создании кнопки Tk, в соответствии с типом кнопки, автоматически
создает привязки к ней, определяющие ее поведение по умолчанию:
Кнопка становится активной при появлении над ней курсора "Мыши" и
дезактивируется, когда курсор ее покидает. В системе Windows привязка
активизируется только при нажатии клавиши "1" "Мыши" на кнопке.
При нажатии клавиши "1" "Мыши" на кнопке кнопка "вдавливается", а при
отпускании клавиши она восстанавливает свой первоначальный вид.
Если на кнопке клавиша "1" "Мыши" была нажата, а затем отпущена, то
выполняется команда, привязанная к данной кнопке. Этого, однако, не происходит,
если в момент отпускания клавиши "Мыши" курсор "Мыши" находился вне поля кнопки.
Если кнопка находится в фокусе ввода, то нажатие на клавишу пробела приводит
к выполнению команды, привязанной к этой кнопке.
Если кнопка находится в состоянии disabled, то все описанные выше
действия не приводят ни к какому результату: кнопка остается неактивной.
Поведение кнопки можно изменить с помощью новых привязок к конкретным
примитивам или путем переопределения привязок данного класса.
canvas
Создание примитивов канвы и работа с ними.
СИНТАКСИС
canvas имяПути параметры
СТАНДАРТНЫЕ ПАРАМЕТРЫ
-background |
-highlightthickness |
-insertwidth |
-takefocus |
-borderwidth |
-insertbackground |
-relief |
-xscrollcommand |
-cursor |
-insertborderwidth |
-selectbackground |
-yscrollcommand |
-highlightbackground |
-insertofftime |
-selectborderwidth |
-highlightcolor |
-insertontime |
-selectforeground |
Подробное описание параметров приведено в разделе options.
ПАРАМЕТРЫ,
СВЯЗАННЫЕ ИСКЛЮЧИТЕЛЬНО С ПРИМИТИВАМИ
Имя параметра: -closeenough
Имя в Базе: closeEnough
Класс в Базе: CloseEnough
Задает значение с плавающей точкой, указывающее расстояние от курсора
до объекта на экране, при котором курсор считается находящимся внутри
объекта. По умолчанию имеет значение “1.0”.
Имя параметра: -confine
Имя в Базе: confine
Класс в Базе: Confine
Булевское значение, указывающее, допустимо ли устанавливать вид канвы
вне области, заданной аргументом scrollRegion. По умолчанию имеет
значение истина, т.е. такая установка запрещена.
Имя параметра: -height
Имя в Базе: height
Класс
в Базе: Height
Задает желаемую высоту окна, которое примитив канвы должен запросить у
своего графического менеджера. Значение может иметь любой вид из описанных
ниже (см. "Координаты").
Имя параметра: -scrollregion
Имя в Базе:
scrollRegion
Класс в Базе: ScrollRegion
Задает список из четырех величин, описывающих координаты левой,
верхней, правой и нижней границы прямоугольной области. Эта область
используется для прокрутки и считается границей информации в канве. Каждая
из координат может иметь любой вид из описанных ниже в (см. "Координаты").
Имя параметра: -width
Имя в Базе: width
Класс в
Базе: width
Задает желаемую ширину окна, которое примитив канвы должен запросить у
своего графического менеджера. Значение может иметь любой вид из описанных
ниже (см. Координаты).
Имя параметра: -xscrollincrement
Имя в Базе:
xScrollincrement
Класс в Базе: Scrollincrement
Задает шаг горизонтальной прокрутки в любом из принятых видов для
расстояний на экране. Если указанная величина положительна, то
x-координата левой границы будет выбрана пропорциональной значению
xScrollincrement с четным коэффициентом пропорциональности. Кроме
того, шаг прокрутки (при нажатии на стрелки влево и вправо полосы прокрутки)
также принимает значение xScrollincrement. Если значение параметра
неположительно, то прокрутка выполняется без ограничений.
Имя параметра: -yscrollincrement
Имя в Базе:
yScrollincrement
Класс в Базе: Scrollincrement
Задает шаг вертикальной прокрутки в любом из принятых видов для
расстояний на экране. Если указанная величина положительна, то
y-координата верхней границы будет выбрана пропорциональной значению
yScrollincrement с четным коэффициентом пропорциональности. Кроме
того, шаг прокрутки (при нажатии на стрелки вверх и вниз полосы прокрутки)
также принимает значение yScrollincrement. Если значение параметра
неположительно, то прокрутка выполняется без ограничений.
ВВЕДЕНИЕ
Команда canvas создает новое окно (заданное аргументом
имяПути) и преобразует его в примитив канвы. С помощью описанных выше
дополнительных аргументов в строке команды или в базе данных параметров можно
задать такие характеристики канвы, как цвета или трехмерное представление.
Команда canvas возвращает свой аргумент имяПути. В момент
исполнения команды окно с именем имяПути должно отсутствовать, однако
его “родительское” должно существовать.
Примитивы канвы реализуют структурную графику. Канва изображает некоторый
набор элементов, таких как прямоугольники, окружности, линии или
текстовые элементы. Над элементами можно выполнять различные действия
(например, передвигать или перекрашивать их), и к ним можно приписывать
команды способом, аналогичным тому, как команда bind
привязывает команды к примитивам. Можно, например, приписать некоторую команду
событию <Button-1>, и эта команда будет выполняться всякий раз
при нажатии кнопки 1 на данном элементе. Таким образом, поведение элементов
канвы может определяться привязанным к ним скриптам Tcl.
СПИСОК ВЫВОДА
Элементы канвы упорядочены, так что при выводе на экран сначала
выводится первый элемент, за ним второй и так далее. Очередные выводимые
элементы заслоняют элементы, уже выведенные на экран; иногда про них говорят,
что они выводятся “поверх” первых. При создании нового элемента он заносится
на последнее место в списке, поверх всех элементов, созданных ранее. Порядок
элементов в списке можно поменять с помощью команд примитивов.
Элементы-окна представляют собой исключение из приведенного правила.
Базовая система управления окнами предполагает, что новое окно всегда
выводится поверх всех предыдущих. Кроме того, команды примитивов канвы не
влияют на порядок в стеке окон; вместо них надо использовать команды Tk raise и
lower.
ИДЕНТИФИКАТОРЫ И ТЕГИ
ЭЛЕМЕНТОВ
Есть два способа обращаться к элементам примитивов канвы — по
идентификатору и по тегу. У каждого элемента есть свой уникальный
идентификационный номер, присваиваемый при создании элемента. Идентификатор
элемента никогда не изменяется, и ни один идентификатор не используется дважды
на протяжении существования данного примитива канвы.
Кроме того, каждому элементу канвы можно приписать несколько тегов.
Тег — это просто строка символов, и он может быть иметь любой вид кроме
числового. Например, “x123” годится, а “1”23” нет. Один и тот же тег можно
приписывать нескольким элементам. Обычно это свойство используется для
объединения элементов по характерным признакам. Например, всем выбранным
элементам можно приписать тег “selected”.
Тег all приписан по умолчанию всем элементам канвы; с его помощью
выполняются операции на всех элементах канвы.
Тегом current автоматически управляет Tk. Он относится к текущему
элементу, находящемуся поверх всех остальных из тех, чья область покрывает
положение курсора. Если курсор “Мыши” расположен вне примитива канвы или если
он не накрывается никаким элементом, то тег current не приписывается
никакому элементу.
При указании элемента в командах примитивов канвы реализован следующий
подход: если описатель является числом, то это число интерпретируется как
идентификатор элемента. В противном случае описатель относится ко всем
элементам с таким тегом. Используемый ниже символ тегИлиИд указывает на
то, что соответствующий аргумент может быть тегом, которому отвечает несколько
(быть может, ни одного) элемента, или идентификатором, которому отвечает
единственный элемент. Некоторые команды примитивов могут работать одновременно
только с одним элементом; если символу тегИлиИд соответствует несколько
элементов, то такая команда обычно обрабатывает первый (самый нижний) элемент
списка вывода, к которому она применима. Исключения приведены ниже в описаниях
команд примитивов.
КООРДИНАТЫ
Все координаты канвы записываются в форме чисел с плавающей точкой.
Координаты и расстояния на экране задаются в виде чисел с плавающей точкой, за
которыми может следовать одна или несколько букв. Если буквы нет, то единицей
измерения расстояния является пиксель. Буква m указывает на измерение
расстояний в миллиметрах; буква c — в сантиметрах; i — в дюймах;
p — в точках принтера (1/72 дюйма). При перемещении по экрану вниз
y-координата увеличивается; x-координата возрастает при
перемещении по экрану вправо.
ПРЕОБРАЗОВАНИЯ
Обычно начало системы координат канвы расположено в верхнем левом
углу окна, содержащего канву. Положение начала координат относительно окна
можно изменить с помощью команд xview и yview. Обычно этой
возможностью пользуются при прокрутке. Канва не позволяет растягивать систему
координат или поворачивать ее по отношению к системе координат окна.
Отдельные элементы канвы можно сдвигать с помощью описываемых ниже команд
примитивов; их можно также растянуть или сжать, но нельзя повернуть.
ИНДЕКСЫ
Для указания на отдельные части текста в текстовых элементах
поддерживаются индексы. Индексы используются в командах вставки текста,
удаления части текста, установки курсора ввода. Индекс можно определить одним
из нескольких возможных способов; различные типы элементов поддерживают
индексы различных типов. Ниже приведено описание видов индексов; при введении
новых типов текстовых элементов имеет смысл обеспечить поддержку разумного
подмножества видов индекса. Отметим, что можно ссылаться на символ, следующий
непосредственно за последним символом текстового элемента; эта возможность
полезна, например, при вводе нового текста в конец элемента.
число
Десятичное число, указывающее положение нужного символа внутри текстового
элемента. "0" указывает на первый символ, “1” — на второй и т.д. Отрицательные
числа интерпретируются как 0, а числа, большие длины текстового элемента — как
если бы они равнялись этой длине.end
Указывает на символ, следующий непосредственно за последним символом
текстового элемента (совпадает с числом символов в
элементе).insert
Указывает на символ, непосредственно предшествующий курсору ввода.
sel.first
Указывает на первый выделенный символ в элементе. Если в элементе нет
выделенных символов, то такая форма запрещена.sel.last
Указывает на последний выделенный символ в элементе. Если в элементе нет
выделенных символов, то такая форма запрещена.@x,y
Указывает на символ в позиции (x,y), где x и y
заданы в координатной системе канвы. Если значения координат выходят за
пределы, занятые текстовым элементом, то берется первый или последний символ в
строке, ближайшей к указанной позиции.
КОМАНДА ПРИМИТИВА
Команда canvas создает новую команду Tcl с именем
имяПути. С помощью этой новой команды можно выполнять различные
операции над примитивами. Она имеет следующий общий вид:
имяПутипараметр аргумент аргумент ...
Параметр и аргументы уточняют поведение команды. В примитивах канвы могут
встречаться следующие команды примитивов:
имяПути addtagтег спец_поиска арг арг ...
Добавляет тег к списку тегов, связанному с каждым элементом,
удовлетворяющим ограничениям, заданным спец_поиска и аргументами (если
такого тега в списке еще нет). Если ни один элемент не удовлетворяет
наложенным ограничениям, то команда не производит никаких действий.
Результатом выполнения команды является пустая строка. Спец_поиска и
аргументы могут принимать следующие значения:
above тегИлиИд
Выделяет элемент, непосредственно следующий (расположенный поверх) за
элементом тегИлиИд в списке вывода. Если аргумент тегИлиИд
задает несколько элементов, то команда выполняется по отношению к
последнему (самому верхнему) из них.all
Выделяет все элементы канвы.
below тегИлиИд
Выделяет элемент, непосредственно предшествующий (расположенный ниже)
элементу тегИлиИд в списке вывода. Если аргумент тегИлиИд задает
несколько элементов, то команда выполняется по отношению к первому (самому
нижнему) из них.closest x y нимб начало
Выделяет элемент, ближайший к точке с координатами (x,y). Если
таких элементов несколько (например, несколько элементов накрывают эту точку),
то выделяется самый верхний из них. Нимб, если он задан, должен быть
неотрицательным числом. Всякий элемент, расстояние от которого до точки
(x,y) меньше, чем нимб, считается накрывающим эту точку.
Аргумент начало позволяет обходить по кругу все ближайшие к точке
элементы. Начало, если оно задано, представляет собой идентификатор или
тег элемента (в случае, если это тег, будет выбран первый элемент списка,
соответствующего данному тегу). В этой форме выделяется не самый верхний
элемент из ближайших, а самый верхний из тех ближайших элементов, которые ниже
элемента начало в списке вывода. В случае если таких элементов нет,
команда выполняется так же, как и в отсутствие аргумента
начало.enclosed x1 y1 x2 y2
Выделяет все элементы, заключенные внутри прямоугольника с углами
(x1,y1) и (x2,y2). Величина x1 должна быть не меньше, чем
x2, а y1 — не меньше, чем y2.overlapping
x1 y1 x2 y2I
Выделяет все элементы, перекрывающиеся с прямоугольником с углами
(x1,y1) и (x2,y2). Величина x1 должна быть не меньше, чем
x2, а y1 — не меньше, чем y2.withtag
тегИлиИд
Выделяет все элементы, заданные тегИлиИд.
имяПути bbox тегИлиИд тегИлиИд тегИлиИд
Возвращает список из четырех элементов — приближенных значений координат
прямоугольника, ограничивающего все элементы, заданные аргументами
тегИлиИд. Список имеет вид “x1 y1 x2 y2”, причем экранные
представления элементов находятся в области, ограниченной слева вертикальной
прямой с координатой x1, справа — вертикальной прямой с координатой
x2, сверху — горизонтальной прямой с координатой y1, снизу —
горизонтальной прямой с координатой y2. Значения координат могут
отличаться от точных на несколько пикселей. Если под описание тегИлиИд
не подходит ни один элемент или если у этих элементов прямоугольники вывода
пусты, то команда возвращает пустую строку.
имяПути bind тегИлиИд последовательность команда
Эта команда привязывает ко всем элементам, заданным аргументом
тегИлиИд, команду, которая выполняется всякий раз при
наступлении события, описываемого последовательностью, на одном из этих
элементов. Эта команда похожа на команду bind, за
исключением того, что она действует на элементах канвы, а не на целых
примитивах. Синтаксис последовательности и подстановки, выполняемые в команде
перед ее выполнением, подробно описаны в bind.
Если в команде заданы все аргументы, то создаваемая привязка замещает все
предыдущие привязки для той же последовательности и тегИлиИд (если
первый символ в команде “+”, то новая привязка присоединяется к уже
существующим, а не замещает их). В этом случае команда возвращает пустую
строку. Если аргумент команда опущен, то возвращается строка команды,
связанной с тегИлиИд и последовательностью (если такой команды
нет, то возникает ошибка). Если опущены оба аргумента команда и
последовательность, то результатом выполнения служит список всех
последовательностей, для которых определена привязка к
тегИлиИд.Привязки можно задавать только для событий,
связанных с клавиатурой или “Мышью” (таких как Enter, Leave, ButtonPress,
Motion и KeyPress), а также для виртуальных событий. При работе с
событиями в канве используется текущий элемент, определенный выше (см. “Идентификаторы
и теги элементов”). События Enter и Leave наступают,
когда элемент становится или перестает быть текущим; обратите внимание на
отличие этих событий от событий Enter и Leave для окон. События,
связанные с “Мышью”, наступают только для текущего элемента (если таковой
имеется; подробности см. ниже в описании команды примитива focus).
При использовании в привязке виртуального события привязка может подключиться
только, если в определении этого виртуального события участвует событие,
связанное с “Мышью” или клавиатурой.
Данному событию может соответствовать несколько привязок. Такое может
произойти, например, если одна привязка осуществляется к идентификатору
события, а другая — к одному из его тегов. В подобном случае выполняются все
привязанные события. Первым идет скрипт, привязанный к тегу all, затем
поочередно выполняются скрипты, привязанные к каждому из тегов элемента (в
порядке их следования), последней идет привязка к идентификатору элемента.
Если несколько привязок соответствует одному тегу, то выполняется лишь самая
конкретная из них. Команда continue
в скрипте прекращает его выполнение, команда break
прекращает выполнение скрипта и всех последующих скриптов для события, как и в
случае команды bind.
Если с помощью команды bind к
окну канвы были выполнены дополнительные привязки, то они выполняются после
привязок к элементам канвы, выполненных командой примитива bind.
имяПути canvasx xЭкрана шагСетки
По заданной x-координате xЭкрана окна возвращает
x-координату канвы, расположенной на этом месте. Если задан
шагСетки, то координата канвы округляется к ближайшему кратному единиц
шагаСетки.
имяПути canvasy yЭкрана шагСетки
По заданной y-координате yЭкрана окна возвращает
y-координату канвы, расположенной на этом месте. Если задан
шагСетки, то координата канвы округляется к ближайшему кратному единиц
шагаСетки.
имяПути cgetпараметр
Возвращает текущее значение параметра конфигурации, заданного аргументом
параметр.
имяПути cоnfigure параметр значение параметр значение
...
Сообщает текущие параметры конфигурации примитива или модифицирует их.
Если параметр не задан, то возвращает список всех текущих значений
параметров имениПути (формат списка приведен в описании
Tk_ConfigureInfo). Если параметр задан без указания значения, то
команда возвращает список, описывающий указанный параметр (этот список
совпадает с частью списка, возвращаемого при отсутствии параметра). Если
заданы одна или несколько пар параметр-значение, то команда присваивает
указанным параметрам примитива данные значения; результатом ее выполнения в
этом случае служит пустая строка. Параметр может принимать любые
значения, воспринимаемые командой canvas.
имяПути coords тегИлиИд x0 y0 ...
Сообщает текущие значения координат, определяющих элемент, или
модифицирует их. Если координаты не заданы, то возвращает список, составленный
из координат элемента, указанного аргументом тегИлиИд. Если координаты
заданы, то их значения замещают текущие значения координат означенного
элемента. Если тегИлиИд указывает на несколько элементов, то
команда выполняется для идущего первым в списке вывода.
имяПути create типx y x y ... параметр значение
...
Создает в имяПути новый элемент типа тип. Формат аргументов,
следующих за аргументом тип, зависит от значения типа, однако обычно эти
аргументы представляют собой координаты одной или нескольких точек, за
которыми следуют спецификации нескольких параметров элемента (быть может, ни
одного). Подробнее синтаксис этой команды описан ниже (см. Описания различных
типов).
имяПути dchars тегИлиИд первый последний
Удаляет символы с первого по последний включительно в
каждом элементе, подходящем под описание тегИлиИд. Если какие-либо из
этих элементов не поддерживают текстовых операций, то они пропускаются.
Аргументы первый и последний должны быть индексами символов в
элементе, заданными в соответствии с описанием, приведенным в разделе Индексы
. При опущенном аргументе последний его значение принимается по
умолчанию равным значению первый. Команда возвращает пустую
строку.
имяПути delete тегИлиИд тегИлиИд ...
Удаляет все элементы, подходящие под описание, заданное аргументами, и
возвращает пустую строку.
имяПути dtagтегИлиИд тегДляУдаления
Удаляет все теги тегДляУдаления из списка тегов, ассоциированного
с каждым из элементов, описываемых аргументом тегИлиИд. Если ни один из
тегов такого элемента не входит в тегДляУдаления, то никаких действий
не производится. Если аргумент тегДляУдаления отсутствует, то его
значение по умолчанию совпадает с тегИлиИд. Команда возвращает пустую
строку.
имяПути findкомандаПоиска арг арг ...
Команда возвращает список, состоящий из всех элементов, удовлетворяющих
критериям поиска, заданным аргументами командаПоиска и арг.
Аргументы командаПоиска и арг могут иметь любой вид,
воспринимаемый командой addtag. Список элементов представлен в виде
стека, в котором нижний элемент идет последним.
имяПути focus тегИлиИд
Устанавливает фокус клавиатуры для примитива канвы на элементе, заданном
аргументом тегИлиИд. Если под описание подходят несколько элементов, то
фокус устанавливается на тот из них, который идет первым в списке вывода из
элементов, поддерживающих курсор ввода. Если под описание не подходит ни один
из элементов или если ни один из подходящих элементов не поддерживает курсор
ввода, то фокусировка не меняется. Если тегИлиИд представляет собой
пустую строку, то ни один из элементов не оказывается в фокусе. Если аргумент
тегИлиИд не задан, то команда возвращает идентификатор элемента,
находящегося в фокусе или пустую строку, если такого элемента
нет.После установки фокуса на элемент в этом элементе будет
отображаться курсор ввода и все клавиатурные события будут направлены на этот
элемент. Элемент фокусировки канвы и окно фокусировки на экране (установленное
командой focus) совершенно независимы: элемент находится в фокусе ввода только
если (а) его канва является окном фокусировки и (б) сам элемент является
элементом фокусировки канвы. В большинстве случаев полезно вслед за командой
focus
примитива выполнять команду focus,
чтобы установить фокус на канве (если такая установка еще не была
произведена).
имяПути gettags тегИлиИд
Возвращает список, элементами которого служат теги, ассоциированные с
элементом, подходящим под описание тегИлиИд. Если под это описание
подходят несколько элементов, то список относится к тому из них, который идет
первым в списке вывода. Если элементов, подходящих под описание нет или если у
подходящего элемента нет тегов, то команда возвращает пустую
строку.
имяПути icursor тегИлиИд индекс
Устанавливает курсор ввода для элемента (элементов), подходящего под
описание тегИлиИд, в положение, непосредственно предшествующее символу,
заданному аргументом индекс. Если некоторые (быть может, все)
подходящие элементы не поддерживают курсор ввода, то над ними никаких действий
не производится. Допустимые формы аргумента индекс описаны выше (см. Индексы).
Замечание: фактическое высвечивание курсора ввода в элементе производится
только, если этот элемент находится в фокусе (см. описание команды примитива
focus),
однако положение курсора можно установить и в элементе вне фокуса. Команда
возвращает пустую строку.
имяПути insert тегИлиИд передЭтим строка
Вставляет строку перед символом, заданным аргументом
передЭтим, в каждом из элементов, подходящих под описание
тегИлиИд и поддерживающих курсор ввода. Возможные формы аргумента
передЭтим описаны выше (см. Индексы).
Команда возвращает пустую строку.
имяПути itemcget тегИлиИд параметр
Возвращает текущее значение параметра конфигурации с именем
параметр для элемента тегИлиИд. Команда аналогична команде
примитива cget, за исключением того, что она относится к отдельному элементу,
а не к примитиву в целом. Значение параметра может быть любым, допустимым для
команды примитива create, используемой для создания элемента. Если тег
тегИлиИд описывает несколько элементов, то команда применяется к
первому из них.
имяПути itemconfigure тегИлиИд параметр значение
параметр значение ...
Команда аналогична команде примитива configure за исключением
того, что она изменяет значения параметров элементов, а не всего примитива
канвы. Если аргумент параметр не задан, то команда возвращает список
значений параметров для первого элемента, подходящего под описание
тегИлиИд (формат списка описан в Tk_ConfigureInfo). Если
аргумент параметр задан, а аргумент значение отсутствует, то
команда возвращает список значений только указанного параметра (этот список
является подсписком списка, возвращаемого в отсутствие аргумента
параметр). Если задано несколько пар параметр-значение, то
команда устанавливает новые значения указанных параметров для каждого из
элементов тегИлиИд; в этом случае команда возвращает пустую строку.
Допустимые формы параметров и значений такие же, как в команде
примитива create, которая создает элементы. Допустимые параметры и
возможные их значения описаны ниже (см. описание отдельных типов
элементов).
имяПути lower тегИлиИд нижеЭтого
Передвигает все элементы, подходящие под описание тегИлиИд, в
списке вывода непосредственно перед элементом, заданным аргументом
нижеЭтого. Если под описание подходят несколько элементов, то они
передвигаются все, причем их относительный порядок сохраняется. Аргумент
нижеЭтого представляет собой тег или идентификатор; если он описывает
несколько элементов, то для размещения тегИлиИд используется первый из
них. Замечание: на элементы окон эта команда влияния не оказывает. Элементы
окон перекрывают элементы других типов и на порядок их расположения влияют
команды raise и
lower, а
не команды raise и lower примитивов канвы. Команда возвращает
пустую строку.
имяПути moveтегИлиИд xКоличество yКоличество
Сдвигает каждый из элементов, подходящих под описание тегИлиИд,
прибавляя к координатам каждой точки элемента координаты xКоличество и
yКоличество. Команда возвращает пустую строку.
имяПути postscript параметр значение параметр значение
...
Генерирует Postscript-представление для каждой канвы или для некоторых из
них. Если параметр имеет вид -file, то Postscript-представление
записывается в указанный файл, а команда возвращает пустую строку; в противном
случае возвращается сгенерированное Postscript-представление. Если
интерпретатор, владеющий канвой, помечен как безопасный, то операция
закончится неудачно, так как безопасным интерпретаторам не разрешается
записывать файлы. Если задан параметр -channel, то аргументом является
имя канала, открытого на вывод. Postscript-представление записывает в этот
канал; по окончании выполнения команды канал остается открытым для последующих
операций вывода. Postscript-представление создается в форме Encapsulated
Postscript в соответствии с соглашением Documentation Structuring Conventions,
v. 3.0. Замечание: по умолчанию Postscript-представление создается только для
информации, выводимой в окно канвы на экране. Только что созданная канва имеет
размер 1x1 пиксель, поэтому в Postscript ничего выведено не будет. Чтобы
преодолеть эту трудность, необходимо либо выполнить команду “update” и
дождаться пока окно достигнет своего нормального размера, либо задать размеры
канвы для печати параметрами -width и -height. Пары аргументов
параметр-значения используются для дополнительного управления
характеристиками печати. Команда поддерживает следующие параметры:
-colormap имяПеременной
ИмяПеременной должно быть именем массива, описывающего палитру в
Postscript. Значение каждого элемента этого массива должно кодировать
установку в Postscript определенного цвета, например,1.0 1.0 0.0
setrgbcolor”. При выводе информации о цвете в Postscript Tk проверяет,
есть ли в массиве имяПеременной элемент с таким же именем цвета. Если
это так, то Tk использует значение этого элемента как команду Postscript для
установки цвета. Если параметр -colormap не указан или если данному
цвету не соответствует никакой элемент массива, то Tk берет интенсивность
красного, голубого или зеленого X цвета.
-colormode режим
Задает способ вывода цветовой информации. Режим может принимать
значения color (для полноцветного вывода), gray (преобразует все
цвета к их серому аналогу), mono (переводит каждый цвет в черный или
белый).
-file имяФайла
Задает имя файла вывода. Если этот параметр не указан, то команда
возвращает результирующее Postscript-представление вместо записи его в
файл.
-fontmap имяПеременной
ИмяПеременной должно быть именем массива, описывающего
преобразование шрифтов. Каждый элемент массива должен представлять собой Tcl
список из двух элементов — имени и размера шрифта. При выводе Postscript
команд для конкретного шрифта Tk проверяет, описан ли в массиве имяПеременной
элемент с соответствующим именем. Если такой элемент есть, то в Postscript
используется информация, содержащаяся в нем. В противном случае Tk пытается
догадаться о том, какой шрифт использовать. Обычно эти попытки удаются только
для стандартных шрифтов, таких как Times, Helvetica и Courier, и только в
случае, если в имени X шрифта не пропущено ни одного дефиса перед размером.
Так, например, имя -*_-Courier-Bold-R-Normal--*_-120-*_ будет
воспринято нормально, а *Courier-Bold-R-Normal*120* — нет; дефисы нужны
Tk для распознавания имени шрифта.
-height размер
Задает высоту печатаемого поля канвы. По умолчанию имеет значение высоты
окна канвы.
-pageanchor якорь
Указывает, какая из выводимых точек канвы должна попасть в опорную точку
страницы печати (заданную параметрами -pagex и -pagey).
Например, задание -pageanchor n означает, что при печати верхняя
центральная точка окна канвы располагается в опорной точке страницы. По
умолчанию параметр имеет значение center.
-pageheight размер
Указывает на необходимость растяжения страницы печати в горизонтальном и
вертикальном направлении так, чтобы напечатанная в Postscript страница имела
высоту размер. Значением параметра должно быть число с плавающей
точкой, за которым следует символ c, если размер указан в сантиметрах,
i — в дюймах, m — в миллиметрах, p или ничего — в точках
принтерах (1/72 часть дюйма). По умолчанию имеет значение высоты выводимой
области экрана. Если заданы оба параметра -pageheight и
-pagewidth, то для растяжения используется значение параметра
-pagewidth (возможность неравномерного растяжения в двух направлениях
не предусмотрена).
-pagewidth размер
Указывает на необходимость растяжения страницы печати в горизонтальном и
вертикальном направлении так, чтобы напечатанная в Postscript страница имела
ширину размер. Параметр может принимать такие же значения, что и
параметр -pageheight. По умолчанию имеет значение ширины выводимой
области экрана. Если заданы оба параметра -pageheight и
-pagewidth, то для растяжения используется значение параметра
-pagewidth (возможность неравномерного растяжения в двух направлениях
не предусмотрена).
-pagex координата
Указывает x-координату опорной точки Postscript-страницы в любом
виде, приемлемом для -pageheight. В сочетании с параметрами
-pagey и -pageanchor позволяет задать размещение выводимой
области на Postscript-странице. По умолчанию задает координату центра
страницы.
-pagey координата
Указывает y-координату опорной точки Postscript-страницы в любом
виде, приемлемом для -pageheight. В сочетании с параметрами
-pagex и -pageanchor позволяет задать размещение выводимой
области на Postscript-странице. По умолчанию задает координату центра
страницы.
-rotate булевское
Булевское значение указывает, следует ли при печати повернуть страницу на
90 градусов. При обычном выводе ось x идет вдоль короткой стороны страницы
(ориентация “портрет”); после поворота она идет вдоль длинной стороны
(ориентация “пейзаж”). По умолчанию страница печатается без
поворота.
-width размер
Задает ширину печатаемого поля канвы. По умолчанию имеет значение ширины
окна канвы.
-x координата
Задает x-координату левого края печатаемой области канвы (в
координатах канвы, а не окна). По умолчанию совпадает с координатой левого
края окна.
-y координата
Задает y-координату верхнего края печатаемой области канвы (в
координатах канвы, а не окна). По умолчанию совпадает с координатой верхнего
края окна.
имяПути raise тегИлиИд вышеЭтого
Передвигает все элементы, подходящие под описание тегИлиИд, в
списке вывода непосредственно за элемент, заданный аргументом
вышеЭтого. Если под описание подходят несколько элементов, то они
передвигаются все, причем их относительный порядок сохраняется. Аргумент
вышеЭтого представляет собой тег или идентификатор; если он описывает
несколько элементов, то для размещения тегИлиИд используется последний
(самый верхний) из них. Замечание: на элементы окон эта команда влияния не
оказывает. Элементы окон перекрывают элементы других типов и на порядок их
расположения влияют команды raise и lower, а не команды raise и lower
примитивов канвы. Команда возвращает пустую строку.
имяПути scale тегИлиИд xЦентр yЦентр xКоэффициент
yКоэффициент
Растягивает или сжимает все элементы, подходящие под описание
тегИлиИд в координатном пространстве канвы. Аргументы xЦентр и
yЦентр задают координаты центра преобразования, а xКоэффициент и
yКоэффициент — коэффициенты растяжения по осям x и y
соответственно (значение “1.0” указывает на отсутствие растяжения). Расстояние
по оси x каждой точки, задающей положение элемента, от центра
растяжения увеличивается в xКоэффициент раз. Аналогично, расстояние по
оси y каждой точки, задающей положение элемента, от центра растяжения
увеличивается в yКоэффициент раз. Команда возвращает пустую
строку.
имяПути scanпараметр аргументы
Используется для сканирования канвы. Имеет две формы в зависимости от
значения параметра:
имяПути scanmark x y
Сохраняет x, y и текущий вид канвы для последующего использования
командами scan dragto. Обычно эта команда используется в сочетании с
нажатием клавиши “Мыши” в примитиве, а x и y являются
координатами курсора “ Мыши ”. Возвращает пустую строку.
scan dragto x y
Вычисляет разность между значениями координат x и y и
значениями тех же координат, сохраненными последней командой scan mark
на данном примитиве. Затем переносит изображение примитива на расстояние, в 10
раз превышающее вычисленную разность. Команда обычно связана с событиями
движения “ Мыши ” в примитиве и используется для скоростного перетаскивания
канвы в его окне. Возвращает пустую строку.
имяПути select параметр тегИлиИд аргумент
Производит действия над выделенными элементами тем или иным способом в
зависимости от значения параметра. Команда может иметь одну из описанных ниже
форм. В каждой из приведенных форм тегИлиИд должен описывать элемент,
допускающий индексирование и выделение; если под описание подходит несколько
элементов, то используется первый из них, допускающий индексирование и
выделение. Индекс представляет собой текстовое указание позиции в
тегИлиИд (см. описание в Индексы).
имяПути select adjust тегИлиИд индекс
Определяет ближайший к указанному аргументом индекс положению край
набора выделенных элементов в тегИлиИд и устанавливает новое значение
этого края в индекс (т.е. элемент индекс входит в выделение, а
соседний с ним — нет). Противоположный край выделения становится опорной
точкой для последующих команд select to. Если в текущий момент в
тегИлиИд выделения отсутствуют, то команда ведет себя точно так же, как
команда примитива select to. Возвращает пустую строку.
имяПути select clear
Очищает выделенные элементы в данном примитиве. Если таких элементов нет,
то не производит никаких действий. Возвращает пустую строку.
имяПути select from тегИлиИд индекс
Устанавливает опорную точку выделения непосредственно перед символом,
заданным аргументом индекс. Текущего выделения команда не меняет. Она
лишь фиксирует начало выделения для последующих команд select to.
Возвращает пустую строку.
имяПути select item
Возвращает идентификатор выделенного элемента, если выделение
представляет собой элемент канвы. Если в данной канве выделение отсутствует,
то команда возвращает пустую строку.
имяПути select to тегИлиИд индекс
Выделяет все символы между опорным символом выделения и символом,
указанным аргументом индекс, включая этот символ. Опорный символ
включается в выделение, только если значение аргумента индекс больше
номера опорного символа. Опорный символ устанавливается последней выполненной
на данном примитиве командой select adjust или select from. Если
опорный символ выделения в примитиве не входит в элемент, описываемый
аргументом тегИлиИд, то опорная точка устанавливается на символ,
указанный аргументом индекс. Команда возвращает пустую строку.
имяПути typeтегИлиИд
Возвращает тип элемента, описываемого аргументом тегИлиИд
(например, rectangle или text). Если тегИлиИд описывает
несколько элементов, то возвращается тип первого из них. Если ни один элемент
не подходит под описание тегИлиИд, токоманда возвращает пустую
строку.
имяПути xview аргументы
Используется для запроса горизонтального положения информации, выведенной
в окне канвы, и изменения этого положения. Команда может иметь одну из
следующих форм:
имяПути xview
Возвращает список, состоящий из двух элементов. Каждый из элементов
списка представляет собой вещественное число, заключенное между нулем и
единицей; эта пара чисел описывает видимый в окне горизонтальный интервал.
Так, например, если первое число равно .“2”, а второе .“6”, то 20% области
канвы оказывается невидимой слева от окна, в окне выводится 40% информации, и
еще 40% оказывается невидимой справа от окна.
имяПути xview movetoчисло
Передвигает область видимости так, что слева от окна остается невидимой
часть канвы, указанная аргументом число. Число должно быть заключено
между ‘0’ и “1”.
имяПути xview scrollколичество что
Сдвигает выводимый в окне текст вправо или влево, выравнивая его границу
в соответствии со значениями аргументов. Количество должно быть целым
числом, аргумент что может принимать значения units или
pages или быть сокращением одного из этих слов. Если аргумент
что принимает значение units, то выравнивание происходит
относительно единиц, указанных значением параметра xScrollIncrement
(если это значение положительно), или относительно десятой части ширины окна
(в противном случае). Если значением аргумента что является
pages, то единицей выравнивания служит величина в девять десятых ширины
окна. Если количество отрицательно, то видимая информация сдвигается
вправо, в противном случае — влево.
имяПути yview аргументы
Используется для запроса вертикального положения информации, выведенной в
окне канвы, и изменения этого положения. Команда может иметь одну из следующих
форм:
имяПути yview
Возвращает список, состоящий из двух элементов. Каждый из элементов
списка представляет собой вещественное число, заключенное между нулем и
единицей; эта пара чисел описывает видимый в окне вертикальный интервал. Так,
например, если первое число равно .“6”, а второе “1.0”, то в окне выводятся
нижние 40% области канвы (заданной значением параметра -scrollregion).
Эти значения совпадают со значениями, передаваемыми полосам прокрутки через
параметр -yscrollcommand.
имяПути yview movetoчисло
Передвигает область видимости так, что сверху от окна остается невидимой
часть канвы, указанная аргументом число. Число должно быть заключено
между ‘0’ и “1”.
имяПути yview scrollколичество что
Сдвигает выводимый в окне текст вверх или вниз, выравнивая его границу в
соответствии со значениями аргументов. Количество должно быть целым
числом, аргумент что может принимать значения units или
pages или быть сокращением одного из этих слов. Если аргумент
что принимает значение units, то выравнивание происходит
относительно единиц, указанных значением параметра yScrollIncrement
(если это значение положительно), или относительно десятой части высоты окна
(в противном случае). Если значением аргумента что является
pages, то единицей выравнивания служит величина в девять десятых высоты
окна. Если количество отрицательно, то видимая информация сдвигается
вниз, в противном случае — вверх.
ОБЗОР ТИПОВ ЭЛЕМЕНТОВ
Ниже описываются различные типы элементов, поддерживаемые
примитивами канвы. Каждый тип характеризуется, во-первых, формой команды
create, посредством которой создаются элементы этого типа, и,
во-вторых, набором параметров конфигурации элементов этого типа, которые можно
использовать в командах примитива create и itemconfigure.
Большинство типов не поддерживают выделение и индексирование и связанные с
этими операциями команды, такие как index или insert. Для типов,
поддерживающих указанные возможности, они описаны явно (пока речь идет только
о текстовых элементах).ДУГИ
Элементы типа arc выводятся на экран в виде отрезка дуги.
Дуга представляет собой отрезок овала, заключенный между двумя радиусами
(заданными параметрами -start и -extent); она изображается на
экране в одном из нескольких возможных видов в зависимости от значения
параметра -style. Дуги создаются командами примитива.
имяПути createarc x1 y1 x2 y2 параметр значение параметр
значение ...
Аргументы x1 y1 x2 y2 задают координаты противоположных углов
прямоугольной области, в которую вписан овал. За координатами следует
несколько пар параметр-значение, каждая из которых устанавливает
значение одного из параметров конфигурации элемента. Такие же пары
параметр-значение используются командами примитива itemconfigure
для изменения параметров конфигурации. Команда поддерживает следующие
параметры:
-extent угол
Задает величину сектора, содержащего дугу. Дуга простирается на
угол, отсчитываемый от начальной точки дуги, заданной параметром
-start. Угол может быть и отрицательным. Если его величина превосходит
360 градусов или оказывается меньше -360 градусов, то берется его значение по
модулю 360.
-fill цвет
Закрашивает цветом область, ограниченную дугой. Аргумент
цвет может принимать любое значение, воспринимаемое командой
Tk_GetColor. Если значением цвета является пустая строка, то
закрашивания не происходит. Пустая строка также принимается значением
параметра по умолчанию.
-outline цвет
Цвет задает цвет контура дуги. Этот параметр может принимать любое
значение, воспринимаемое командой Tk_GetColor. По умолчанию параметр
имеет значение black. Если в качестве параметра задана пустая строка,
то контур дуги не изображается.
-outlinestippleдвуцвет
Указывает, что контур дуги должен изображаться в соответствии с образцом
пунктира. Аргумент двуцвет указывает этот образец, он может принимать
любое значение, воспринимаемое командой Tk_GetBitmap. Если параметр
-outline не задан, то задание параметра -outlinestipple не
влияет на вывод. Если значением данного параметра является пустая строка, то
дуга будет рисоваться сплошной линией.
-start угол
Задает положение начала сектора, содержащего дугу. Угол задается в
градусах и отсчитывается против часовой стрелки от 3-часового положения
часовой стрелки. Он может быть как положительным, так и
отрицательным.
-stipple двуцвет
Указывает необходимость закрашивания области дуги в соответствии с
образцом пунктира. Допустимы любые значения, воспринимаемые командой
Tk_GetBitmap. Если параметр -fill не задан, то параметр
-stipple не оказывает влияния на вывод. Если значением параметра
-stipple является пустая строка, то выполняется сплошное
закрашивание.
-style тип
Задает тип изображения дуги. Если тип имеет значение
pieslice (по умолчанию), то область дуги имеет вид сектора,
ограниченного дугой и двумя радиусами, проведенными из центра овала к ее
концам. Тип chord указывает на то, что область имеет вид сегмента,
ограниченного дугой и отрезком, соединяющим ее концы. Тип arc означает,
что область дуги состоит из самой этой дуги. В последнем случае параметр
-fill игнорируется.
-tags списокТегов
Задает набор тегов, относящихся к элементу. СписокТегов
представляет собой список имен тегов, замещающий имеющиеся теги элемента.
СписокТегов может быть пустым.
-width ширинаКонтура
Задает ширину контура вокруг области дуги; значением параметра может быть
любое допустимое значение координат, описанное выше (см. “Координаты”).
Если значением параметра -outline является пустая строка, то параметр
-width не влияет на характер вывода. Широкий контур центрируется на
отрезках, ограничивающих область дуги. По умолчанию параметр имеет значение
“1.0”.
ДВУЦВЕТНЫЕ ЭЛЕМЕНТЫ
Элементы типа bitmap изображаются на экране с помощью двух
цветов: цвета фона и цвета переднего плана, Двуцветные изображения создаются
командой примитива
имяПути create bitmap x y параметр значение параметр
значение ...
Аргументы x и y задают координаты опорной точки двуцветного
изображения на экране (подробнее процедура размещения изображения описана ниже
при описании параметра -anchor). За координатами следует несколько пар
параметр-значение, каждая из которых устанавливает значение одного из
параметров конфигурации элемента. Такие же пары параметр-значение
используются для изменения значений параметров с помощью команды примитива
itemconfigure. Для двуцветных изображений допустимы следующие
параметры:
-anchor положениеОпоры
ПоложениеОпоры указывает способ размещения изображения по
отношению к его опорной точке. Параметр может принимать произвольное значение,
воспринимаемое командой Tk_GetAnchor. Так, если параметр имеет значение
center, то в опорной точке располагается центр изображения; значение
n указывает, что в опорной точке располагается верхняя центральная
точка изображения и т.д. По умолчанию параметр имеет значение
center.
-background цвет
Задает цвет, используемый для отображения пикселей двуцветного
изображения со значением “0”. Параметр может принимать любое значение,
воспринимаемое командой Tk_GetColor. Если параметр не задан или
цвет является пустой строкой, то пиксели со значением ‘0’ не выводятся,
что создает эффект прозрачности.
-bitmap двуцвет
Задает двуцветное изображение для вывода в элементе. Параметр может
принимать любое значение, воспринимаемое командой
Tk_GetBitmap.
-foreground цвет
Задает цвет пикселей двуцветного изображения, имеющих значение “1”.
Параметр может принимать любое значение, воспринимаемое командой
Tk_GetColor; по умолчанию его значение black.
-tags списокТегов
Приписывает элементу список тегов. СписокТегов представляет собой
список имен тегов, замещающий имеющиеся теги элемента. СписокТегов
может быть пустым.
ЛИНИИ
Элементы типа line выводятся на экран в виде прямо- или
криволинейной ломаной. Линии создаются командой примитива
имяПути create line x1 y1 ... xn yn параметр значение
параметр значение ...
Аргументы от x1 до yn задают координаты последовательности
из двух или более точек, соединенных отрезками. За координатами может
следовать произвольный набор пар параметр-значение, каждая из которых
устанавливает значение одного из параметров элемента. С помощью тех же пар
параметр-значения можно задать новые значения параметров командами
примитива itemconfigure. Команда поддерживает следующие
параметры:
-arrow где
Указывает, следует ли изображать стрелки на одном или обоих концах линии.
Значение где может быть одним из следующих: none (стрелки не
изображаются), first (изображается стрелка в начале линии), last
(изображается стрелка в конце линии) или both (стрелка изображается на
обоих концах).
-arrowshape форма
Описывает форму стрелки. Значением параметра должен быть список,
содержащий три элемента, каждый из которых представляет собой расстояние в
виде, описанном выше (см. “Координаты”).
Первый элемент списка задает расстояние вдоль линии от начала до острия
стрелки. Второй элемент задает расстояние вдоль линии от хвостовых концов
стрелки до ее острия, третий — расстояние от внешнего ребра линии до хвостовых
точек. Если параметр не задан, то Tk самостоятельно выбирает “разумную” форму
стрелки.
-capstyle стиль
Описывает способ изображения концов линии в отсутствие стрелок. Параметр
может принимать любое значение, воспринимаемое командой
Tk_GetCapstyle
(butt, projecting или round). По умолчанию имеет значение
butt. При наличии стрелок параметр игнорируется.
-fill цвет
Задет цвет изображаемой линии. Параметр может принимать любое значение,
воспринимаемое командой Tk_GetColor. Если значением параметра является
пустая строка, то линия будет прозрачной. По умолчанию цвет имеет значение
black.
-joinstyle стиль
Задает способ соединения отрезков линии в вершинах. Параметр может
принимать любое значение, воспринимаемое командой Tk_GetCapstyle (bevel,
miter или round). По умолчанию имеет значение miter. При
наличии всего двух вершин параметр игнорируется.
-smooth булевское
Параметр может принимать любое значение, воспринимаемое командой
Tk_GetBoolean. Указывает, нужно ли сглаживать ломаную, превращая ее в
кривую (в этом случае линия изображается в виде набора параболических
сплайнов: для первого и второго отрезка, для второго и третьего отрезка и
т.д.). В кривую можно вставлять прямолинейные отрезки, удваивая нужные
вершины.
-splinesteps число
Задает желаемую степень гладкости кривой: каждый сплайн будет
аппроксимирован числом прямолинейных отрезков. При опущенном параметре
-spline параметр -splinesteps игнорируется.
-stipple двуцвет
Указывает на необходимость пунктирного изображения линии; двуцвет
задает образец изображения в виде, воспринимаемом командой
Tk_GetBitmap. Если значением параметра является пустая строка (как,
например, по умолчанию), то линия изображается непрерывной кривой.
-tags списокТегов
Приписывает к элементу набор тегов. СписокТегов представляет собой
список имен тегов, замещающих все имеющиеся теги элемента. Он может быть
пустым.
-width ширинаЛинии
Задает ширину линии в произвольном виде, описанном выше (см. “Координаты“).
Центр широкой линии проходит через вершины. По умолчанию параметр имеет
значение ‘1.0’.ОВАЛЫ
Элементы типа oval появляются на экране в виде овальных или
круглых областей. Каждый овал может быть закрашенным и иметь контур. Овалы
создаются командой примитива
имяПути create oval x1 y1 x2 y2 параметр значение параметр
значение ...
Аргументы x1, y1, x2 и y2 задают координаты двух
диагонально противоположных углов прямоугольника, заключающего овал. Овал
включает в себя верхнюю и левую стороны прямоугольника, но не его нижнюю и
правую сторону. Если прямоугольник представляет собой квадрат, то овал будет
кругом, в противном случае он вытянут в одном из направлений. За координатами
может следовать произвольный набор пар параметр-значение, каждая пара
устанавливает значение одного из параметров. Такие же пары используются
командами примитива itemconfigure для изменения конфигурации элемента.
Команда поддерживает следующие параметры:
-fill цвет
Закрашивает цветом область, ограниченную овалом. Аргумент
цвет может принимать любое значение, воспринимаемое командой
Tk_GetColor. Если значением цвета является пустая строка, то
закрашивания не происходит. Пустая строка также принимается значением
параметра по умолчанию.
-outline цвет
Цвет задает цвет контура овала. Этот параметр может принимать любое
значение, воспринимаемое командойTk_GetColor. По умолчанию параметр
имеет значение black. Если в качестве параметра задана пустая строка,
то контур овала не изображается.
-stipple двуцвет
Указывает на необходимость закрашивания внутренности овала в соответствии
с образцом пунктира. Допустимы любые значения, воспринимаемые командой
Tk_GetBitmap. Если параметр -fill не задан, то параметр
-stipple не оказывает влияния на вывод. Если значением параметра
-stipple является пустая строка (по умолчанию), то выполняется сплошное
закрашивание.
-tags списокТегов
Задает набор тегов, относящихся к элементу. СписокТегов
представляет собой список имен тегов, замещающий имеющиеся теги элемента.
СписокТегов может быть пустым.
-width ширинаКонтура
Задает ширину контура вокруг овала; значением параметра может быть любое
допустимое значение координат, описанное выше (см. "Координаты").
Если параметр -outline не задан, то параметр -width не влияет на
характер вывода. Широкий контур центрируется на овале, заданном координатами
x1, y1, x2, y2. По умолчанию параметр имеет значение
“1.0”.МНОГОУГОЛЬНИКИ
Элементы типа polygon выводятся на экран в виде закрашенных
многоугольных (возможно, криволинейных) областей. Многоугольники задаются
командами примитива
имяПути create polygon x1 y1 ... xn yn параметр значение
параметр значение ...
Аргументы с x1 до yn задают координаты не менее чем трех
точек, определяющих замкнутый многоугольник. Первая и последняя точки могут
совпадать; вне зависимости от того, так это или нет, Tk изображает замкнутый
многоугольник. За координатами может следовать несколько пар
параметр-значение, каждая из которых устанавливает один из параметров
конфигурации элемента. Те же пары параметр-значение могут быть
использованы в команде примитива itemconfigure для изменения
конфигурации элемента. Команда поддерживает следующие параметры:
-fill цвет
Задет цвет закраски многоугольника. Параметр может принимать любое
значение, воспринимаемое командой Tk_GetColor. Если значением параметра
является пустая строка, то многоугольник будет прозрачным. По умолчанию
цвет имеет значение black.
-outline цвет
Цвет задает цвет контура многоугольника. Этот параметр может
принимать любое значение, воспринимаемое командой Tk_GetColor. Если в
качестве значения параметра задана пустая строка (по умолчанию), то контур
овала не изображается.
-smooth булевское
Параметр может принимать любое значение, воспринимаемое командой
Tk_GetBoolean. Указывает, нужно ли сглаживать многоугольник, превращая
его в кривую (в этом случае кривая изображается в виде набора параболических
сплайнов: для первого и второго отрезка, для второго и третьего отрезка и
т.д.). В кривую можно вставлять прямолинейные отрезки, удваивая нужные
вершины.
-splinesteps число
Задает желаемую степень гладкости кривой: каждый сплайн будет
аппроксимирован числом прямолинейных отрезков. При опущенном параметре
-smooth параметр -splinesteps игнорируется.
-stipple двуцвет
Указывает на необходимость пунктирного закрашивания многоугольника;
двуцвет задает образец изображения в виде, воспринимаемом командой
Tk_GetBitmap. Если значением параметра является пустая строка (как,
например, по умолчанию), то осуществляется непрерывное
закрашивание.
-tags списокТегов
Приписывает к элементу набор тегов. СписокТегов представляет собой
список имен тегов, замещающих все имеющиеся теги элемента. Он может быть
пустым.
-width ширинаКонтура
Задает ширину контура вокруг многоугольника в произвольном виде,
описанном выше (см. “Координаты“).
Если параметр -outline не задан, то параметр -width
игнорируется. По умолчанию параметр имеет значение
“1.0”.Многоугольные элементы отличаются от других —
прямоугольников, овалов и дуг — в том отношении, что их внутренние точки
считаются находящимися “внутри” многоугольника (например, в смысле команд
примитива find closest и find overlapping), даже если он и не
закрашен. Для большинства остальных типов элементов внутренние точки считаются
находящимися внутри элемента, только если элемент закрашен или если он не
закрашен и не имеет контура. Если Вам нужен незакрашенный многоугольник,
внутренние точки которого не считаются находящимися внутри него, то
пользуйтесь вместо этого элементом line.ПРЯМОУГОЛЬНИКИ
Элементы типа rectangle появляются на экране в виде
прямоугольных областей. Каждый прямоугольник может быть закрашенным и иметь
контур. Прямоугольники создаются командой примитива
имяПути create rectanglex1 y1 x2 y2 параметр значение
параметр значение ...
Аргументы x1, y1, x2 и y2 задают координаты двух
диагонально противоположных углов прямоугольника (верхняя и левая стороны
прямоугольника входят в него, а нижняя и правая сторона — нет). За
координатами может следовать произвольный набор пар параметр-значение,
каждая пара устанавливает значение одного из параметров. Такие же пары
используются командами примитива itemconfigure для изменения
конфигурации элемента. Команда поддерживает следующие параметры:
-fill цвет
Закрашивает цветом прямоугольную область. Аргумент цвет
может принимать любое значение, воспринимаемое командой Tk_GetColor.
Если значением цвета является пустая строка, то закрашивания не
происходит. Пустая строка также принимается значением параметра по
умолчанию.
-outline цвет
Цвет задает цвет контура прямоугольника. Этот параметр может принимать
любое значение, воспринимаемое командой Tk_GetColor. По умолчанию
параметр имеет значение black. Если в качестве параметра задана пустая
строка, то контур прямоугольника не изображается.
-stipple двуцвет
Указывает на необходимость закрашивания прямоугольника в соответствии с
образцом пунктира. Допустимы любые значения, воспринимаемые командой
Tk_GetBitmap. Если параметр -fill не задан, то параметр
-stipple не оказывает влияния на вывод. Если значением параметра
-stipple является пустая строка (по умолчанию), то выполняется сплошное
закрашивание.
-tags списокТегов
Задает набор тегов, относящихся к элементу. СписокТегов
представляет собой список имен тегов, замещающий имеющиеся теги элемента.
СписокТегов может быть пустым.
-width ширинаКонтура
Задает ширину контура вокруг прямоугольника; значением параметра может
быть любое допустимое значение координат, описанное выше (см. "Координаты").
Если параметр -outline не задан, то параметр -width не влияет на
характер вывода. Широкий контур центрируется на прямоугольнике, заданном
координатами x1, y1, x2, y2. По умолчанию параметр имеет значение
“1.0”.
ТЕКСТОВЫЕ ЭЛЕМЕНТЫ
Текстовый элемент предназначен для вывода на экран строки символов в одну
или несколько строчек. Текстовые элементы поддерживают индексы и выделение, и
на них могут быть выполнены команды примитива канвы dchars, focus, icursor,
index, insert, select. Текстовые элементы создаются командой примитива
имяПути create text x y параметр значение параметр
значение ...
Аргументы x и y задают координаты точки, используемой для
размещения текста на экране (подробнее размещение текста описано ниже при
описании параметров). За координатами могут следовать несколько пар
параметр-значение, каждая из которых устанавливает значение одного из
параметров конфигурации элемента. Такие же пары используются командами
примитива itemconfigure для изменения конфигурации элемента. Команда
поддерживает следующие параметры:
-anchor положениеОпоры
ПоложениеОпоры указывает способ размещения текста по отношению к
его опорной точке. Параметр может принимать произвольное значение,
воспринимаемое командой Tk_GetAnchor. Так, если параметр
имеет значение center, то в опорной точке располагается центр
текста; значение n указывает что в опорной точке располагается верхняя
центральная точка текста и т.д. По умолчанию параметр имеет значение
center.
-fill цвет
Закрашивает цветом символы текста. Аргумент цвет может
принимать любое значение, воспринимаемое командой Tk_GetColor.
Значением параметра по умолчанию является black.
-font имяШрифта
Задает шрифт текста в элементе. ИмяШрифта может быть произвольной
строкой, воспринимаемой командой Tk_GetFontStruct. Если параметр не
задан, то его значением по умолчанию является системно-зависимый
шрифт.
-justify как
Задает способ выравнивания текста внутри области текста. Аргумент
как может принимать одно из значений left, right или
center. Параметр оказывает влияние на размещение текста, только если
выводится несколько строчек. По умолчанию параметр имеет значение
left.
-stipple двуцвет
Указывает на необходимость вывода текста в соответствии с образцом
пунктира. Допустимы любые значения, воспринимаемые командой
Tk_GetBitmap. Если значением параметра -stipple является пустая
строка (по умолчанию), то текст выводится сплошной линией.
-tags списокТегов
Задает набор тегов, относящихся к элементу. СписокТегов
представляет собой список имен тегов, замещающий имеющиеся теги элемента.
СписокТегов может быть пустым.
-width длинаСтрочки
Задает максимальную длину строчки текста; значением параметра может быть
любое допустимое значение координат, описанное выше (см. "Координаты").
Если значение параметра равно нулю (по умолчанию), то перенос строки
происходит только при появлении в тексте символа новой строчки. Если, однако,
значение параметра не равно нулю, то концом строчки, длина которой превосходит
длинуСтрочки, считается символ пробела с номером, ближайшим (с
недостатком) к длинеСтрочки. Этот символ пробела рассматривается как
символ перехода на новую строчку.ОКНА
Элементы типа window предназначены для вывода окна в
указанное положение на канве. Окна создаются командой
имяПути create window x y параметр значение параметр
значение ...
Аргументы x и y задают координаты точки, используемой для
размещения окна на экране (подробнее размещение текста описано ниже при
описании параметра -anchor). За координатами могут следовать несколько
пар параметр-значение, каждая из которых устанавливает значение одного
из параметров конфигурации элемента. Такие же наборы параметр-значение
используются для изменения значений параметров с помощью команды примитива
itemconfigure. Окна поддерживают следующие параметры:
-anchor положениеОпоры
ПоложениеОпоры указывает способ размещения окна по отношению к
опорной точке элемента. Параметр может принимать произвольное значение,
воспринимаемое командой Tk_GetAnchor. Так, если параметр имеет
значение center, то в опорной точке располагается центр текста;
значение “n” указывает что в опорной точке располагается верхняя
центральная точка текста и т.д. По умолчанию параметр имеет значение
center.
-height пиксели
Задает высоту окна элемента. Аргумент пиксели может иметь вид,
описанный выше (см. “Координаты“).
Если параметр не задан или если его значением является пустая строка, то
высота окна определяется его содержимым.
-tags списокТегов
Задает набор тегов, относящихся к элементу. СписокТегов
представляет собой список имен тегов, замещающий имеющиеся теги элемента.
СписокТегов может быть пустым.
-width пиксели
Задает ширину окна элемента. Аргумент пиксели может иметь вид,
описанный выше (см. “Координаты“).
Если параметр не задан или если его значением является пустая строка, то
ширина окна определяется его содержимым.
-window имяПути
Приписывает данному элементу окно. Окно, заданное аргументом
имяПути, должно быть либо потомком примитива канвы, либо потомком
одного из наследников примитива канвы. ИмяПути может и не указывать
окно верхнего уровня.Замечание.
Ограничения на управление окнами не позволяют выводить графические элементы
(такие, как кривые и двуцветные изображения) поверх окон.ТИПЫ ЭЛЕМЕНТОВ,
ОПРЕДЕЛЯЕМЫЕ В ПРИЛОЖЕНИЯХ
В конкретных приложениях можно определять новые типы элементов для
примитивов канвы с помощью C кода. Описание этой возможности приведено в
документации для Tk_CreateItem.ПРЕДПОЧТЕНИЯ
В текущей реализации новая канва не имеет никакого поведения по
умолчанию; для определения этого поведения необходимо явно выполнить команды
Tcl.
checkbutton
Создание примитива защелкивающейся кнопки и управление им.
СИНТАКСИС
checkbutton имяПути параметры
СТАНДАРТНЫЕ ПАРАМЕ ТРЫ
-activebackground |
-cursor |
-highlightthickness |
-takefocus |
-activeforeground |
-disabledforeground |
-image |
-text |
anchor |
-font |
-justify |
-textvariable |
-background |
-foreground |
padx |
-underline |
-bitmap |
-highlightbackground |
-pady |
-wraplength |
-borderwidth |
-highlightcolor |
-relief |
|
Подробное описание этих параметров приведено в разделе options.
ДОПОЛНИТЕЛЬНЫЕ
ПАРАМЕТРЫ ПРИМИТИВА
Имя параметра: -command
Имя в Базе: command
Класс в
Базе: Command
Ассоциирует с кнопкой команду Tk. Обычно команда выполняется при
отпускании клавиши 1 “Мыши” на кнопке. Перед выполнением этой команды
обновляется значение глобальной переменной (параметр -variable).
Имя параметра: -height
Имя в Базе: height
Класс в
Базе: Height
Задает желаемую высоту кнопки. Если в кнопке выводится изображение или
двуцветное изображение, то значение параметра задается в пикселях (т.е., в
любом виде, приемлемом для Tk_GetPixels); высота текстовой кнопки
задается числом строчек текста. Если параметр не задан, то высота кнопки
вычисляется по ее содержимому.
Имя параметра: -indicatoron
Имя в Базе: indicatorOn
Класс в Базе: IndicatorOn
Указывает, следует ли выводить индикатор. Значение параметра должно
быть булевским. Если значением является “ложь”, то параметр relief
игнорируется и примитив всегда изображается вдавленным, если он выделен, и
выпуклым в противном случае.
Имя параметра: -offvalue
Имя в Базе: offValue
Класс
в Базе: OffValue
Задает значение, которое нужно сохранять в переменной кнопки всякий раз
при прекращении выделения кнопки. По умолчанию сохраняемое значение равно “0”.
Имя параметра: -onvalue
Имя в Базе: onValue
Класс в
Базе: OnValue
Задает значение, которое нужно сохранять в переменной кнопки всякий раз
при выделении кнопки. По умолчанию сохраняемое значение равно “1”.
Имя параметра: -selectcolor
Имя в Базе: selectColor
Класс в Базе: SelectColorЗадает цвет фона для изображения
выделенной кнопки. Если параметр IndicatorOn имеет значение истина, то
указанный цвет применяется для изображения индикатора. В системе Windows тот
же цвет используется в качестве фона изображения индикатора вне зависимости от
состояния выделения. Если значением параметра IndicatorOn является
ложь, то указанный цвет используется в качестве фона для всего примитива,
когда он выделен, вместо значений параметров background и
activeBackground.
Имя параметра: -selectimage
Имя в Базе: selectImage
Класс в Базе: SelectImage
Задает изображение, выводимое в кнопке при выделении кнопки проверки
(вместо изображения, заданного параметром -image). Если параметр -image
отсутствует, то значение параметра -selectimage игнорируется.
Имя параметра: -state
Имя в Базе: state
Класс в
Базе: State
Задает одно из трех состояний защелкивающейся кнопки: normal, active
или disabled. В нормальном состоянии защелкивающаяся кнопка
изображается с использованием значений параметров foreground и
background. В активном состоянии защелкивающаяся кнопка обычно
находится, если на ней расположен курсор. Защелкивающаяся кнопка в активном
состоянии изображается с использованием значений параметров
activeForeground и activeBackground. Отключенное состояние
указывает на то, что кнопка должна быть нечувствительной: привязки по
умолчанию не приводят к запуску примитива и нажатия на кнопку “Мыши”
игнорируются. В этом состоянии изображение кнопки определяется значениями
параметров disabledForeground и background.
Имя параметра: -variable
Имя в Базе: variable
Класс
в Базе: VariableЗадает имя глобальной переменной, в которой
хранится информация о том, выделена или нет данная кнопка. По умолчанию
совпадает с именем кнопки (т.е. с последним элементом имени пути окна кнопки).
Имя параметра: -width
Имя в Базе: width
Класс в
Базе: Width
Задает желаемую ширину кнопки. Если в кнопке выводится изображение или
двуцветное изображение, то значение параметра задается в пикселях (т.е., в
любом виде, приемлемом для Tk_GetPixels); ширина текстовой кнопки
задается числом символов. Если параметр не задан, то ширина кнопки вычисляется
по ее содержимому.
ОПИСАНИЕ
Команда checkbutton создает новое окно (задаваемое аргументом
имяПути) и превращает его в примитив защелкивающейся кнопки. Детали
изображения защелкивающейся кнопки, такие как ее цвета, шрифт, текст и
объемный вид задаются с помощью описанных выше дополнительных параметров.
Команда button возвращает аргумент имяПути. В момент выполнения
этой команды не должно существовать окна с именем имяПути, но должен
существовать его предок.
Защелкивающаяся кнопка представляет собой примитив, в котором выводится
текстовая строка, изображение или двуцветное изображение, а также квадратик,
называемый индикатором. Весь выводимый текст должен быть записан одним
шрифтом, однако он может занимать несколько строчек на экране (если в нем есть
символы перевода строки или задан параметр wrapLength). Один из
символов текста может быть подчеркнут (в соответствии со значением параметра
underline). Защелкивающаяся кнопка обладает всеми характеристиками
обычной кнопки, включая следующие: в зависимости от значения параметра
button кнопка имеет три разных вида; кнопка может выглядеть выпуклой,
вдавленной или плоской, кроме того, она может мигать. При инициации
защелкивающейся кнопки (нажатием на клавишу 1 “Мыши”, когда курсор “Мыши”
находится на кнопке) выполняется команда Tcl, указанная в параметре
-command.
Кроме того, защелкивающиеся кнопки можно выделять. Если защелкивающаяся
кнопка выделена, то индикатор обычно изображается как выделенный, а переменная
Tcl, ассоциированная с данной кнопкой, имеет предписанное значение (обычно
“1”). В ОС Unix индикатор изображается вдавленным и имеет специальный цвет. В
системе Windows вместо этого в индикаторе стоит галочка. Если защелкивающаяся
кнопка не выделена, то индикатор имеет невыделенный вид, а ассоциированная
переменная имеет другое значение (обычно 0). В ОС Unix такой индикатор
изображается выпуклым и не имеет специального цвета. В системе Windows в
невыделенном индикаторе отсутствует галочка. По умолчанию имя переменной,
ассоциированной с защелкивающейся кнопкой, совпадает с именем, использующимся
при создании самой кнопки. Имя переменной и записываемые в ней значения
“выделенная”/”невыделенная” можно поменять с помощью параметров командной
строки или в базе данных параметров. С помощью параметров конфигурации можно
также поменять вид индикатора (или даже отменить саму необходимость его
вывода). По умолчанию выделение защелкивающейся кнопки меняется при
последовательных щелчках кнопки. Кроме того, каждая защелкивающаяся кнопка
отслеживает значение своей глобальной переменной и изменяет свое состояние
всякий раз при перемене этого значения с “выделенная” на ”невыделенная” и
обратно.
КОМАНДА
ПРИМИТИВА
Команда checkbutton создает новую команду Tcl с именем
имяПути. С помощью этой команды можно выполнять различные операции над
примитивом. Ее общий вид:
имяПути параметр арг арг ...
Параметр и аргументы уточняют поведение команды. Примитивы
защелкивающейся кнопки допускают следующие формы
команды:имяПути cget параметр
Возвращает текущее значение параметра конфигурации с именем
параметр. Параметр может быть любым из параметров команды
checkbutton.имяПути configure параметр
значение параметр значение ...
Запрашивает значения параметров конфигурации примитива или
изменяет их. Если параметр не указан, то возвращает список,
содержащий значения всех допустимых в имениПути параметров (формат списка
описан в Tk_ConfigureInfo). Если параметр задан, а
его новое значение — нет, то команда возвращает часть полного списка,
относящуюся к указанному параметру. Если заданы одна или несколько пар
параметр-значение, то указанным параметрам примитива присваиваются новые
значения, а команда возвращает пустую строку. Параметр может быть любым
из параметров команды checkbutton.имяПути
deselect
Отменяет выделение защелкивающейся кнопки и устанавливает значение
“невыделена” ассоциированной переменной.
имяПути flash
Заставляет защелкивающуюся кнопку мигать. Этот эффект достигается путем
многократного вывода изображения кнопки поочередно в активном и нормальном
состоянии. По окончании работы команды защелкивающаяся кнопка остается в том
же состоянии (активном или нормальном), что и перед началом ее выполнения.
Если перед началом выполнения команды защелкивающаяся кнопка находится в
состоянии disabled, то команда игнорируется.имяПути
invoke
Приводит в точности к тому же результату, что и нажатие клавиши “Мыши” на
защелкивающейся кнопке: кнопка становится выделенной и выполняется команда
Tcl, ассоциированная с кнопкой (при наличии такой команды). Возвращаемое
значение совпадает с возвращаемым значением команды Tcl (или является пустой
строкой, если с защелкивающейся кнопкой никакой команды не ассоциировано).
Если перед началом выполнения команды защелкивающаяся кнопка находится в
состоянии disabled, то команда игнорируется.имяПути
toggle
Выделяет кнопку, перерисовывая ее в новом состоянии и изменяя значение
ассоциированной переменной.ПРЕДПОЧТЕНИЯ
При создании защелкивающейся кнопки Tk, в соответствии с типом
кнопки, автоматически формирует параметры, определяющие ее поведение по
умолчанию:
В ОС Unix кнопка становится активной при появлении над ней курсора “Мыши” и
дезактивируется, когда курсор ее покидает. В системах Mac и Windows при
нажатии клавиши 1 “Мыши” на защелкивающейся кнопке кнопка активизируется,
когда курсор “Мыши” находится на кнопке и становится неактивной, когда курсор
ее покидает.
При нажатии клавиши 1 “Мыши” на защелкивающейся кнопке кнопка становится
выделенной и выполняется команда, привязанная к ней.
Если защелкивающаяся кнопка находится в фокусе ввода, то нажатие на клавишу
пробела приводит к выполнению команды, привязанной к этой кнопке.
В системе Windows имеются дополнительные привязки клавиш: плюс (‘+’) и знак
равенства (‘=’) выделяют кнопку, а минус (‘-’) отменяет выделение.
Если защелкивающаяся кнопка находится в состоянии disabled, то все
описанные выше действия не приводят ни к какому результату: кнопка остается
неактивной.
Поведение защелкивающейся кнопки можно изменить с помощью новых связей для
конкретных примитивов или путем переопределения связей данного класса.
clipboard
Управление буфером временного хранения Tk.
СИНТАКСИС
clipboard параметр ?арг арг ...?
ОПИСАНИЕ
Команда обеспечивает Tcl интерфейс с буфером временного хранения Tk, в
котором хранятся данные для последующего использования с помощью механизма
выделения. Для копирования данных в буфер необходимо вызвать очистку буфера, а
затем одну или несколько команд добавления данных в буфер. Полное обновление
буфера достигается, если все добавления произведены до завершения события.
Первый аргумент определяет формат последующих аргументов и
поведение команды. В настоящее время поддерживаются следующие формы команды:
clipboard clear?-displayof окно?
Заявляет права на буфер в окне и удаляет текущее содержимое
буфера. Значением параметра окно по умолчанию является ‘.’. Команда
возвращает пустую строку.clipboard append?-displayof
окно? ?-format формат? ?-type тип?
?--? данные
Добавляет данные к содержимому буфера окна в виде, заданном
параметром тип, и представлении, заданном параметром формат, а
также заявляет права на буфер в окне.
Параметр тип задает вид, в котором должно возвращаться выделение;
его значение должно быть именем атома, например, STRING или FILE_NAME; детали
описания см. в (1). Параметр тип по умолчанию имеет значение STRING.
Аргумент формат задает представление, в котором выделение передается
по запросу (см (1). второй столбец в Таблице 2); по умолчанию его значение
STRING. В формате STRING выделение передается в виде строки 8-битовых
символов ASCII. В формате ATOM данные разделяются на поля, отделенные
друг от друга пробелами; каждое поле преобразуется в значение своего атома, а
вместо имени атома передается его 32-битовое значение. Во всех других
форматах данные делятся на поля, отделенные друг от друга
пробелами, каждое поле преобразуется в 32-битовое целое число; затем массив
целых чисел передается тому, кто запросил выделение. При этом передаваемые в
буфер строки конкатенируются перед преобразованием, поэтому необходимо
позаботиться заранее о соответствующем обрамлении их пробелами. Все добавки в
буфер одного типа должны иметь одинаковый формат.
Аргумент формат необходим исключительно для обеспечения
совместимости пользователям буфера, не использующим Tk. При выводе результатов
поиска в выделении CLIPBOARD с помощью инструментов Tk значение буфера
переводится в строковый формат, поэтому значение аргумента формат не
играет роли.
С помощью аргумента — указывается конец списка параметров: следующий
за ним аргумент всегда интерпретируется как данные. Такая возможность
полезна, например, если данные начинаются символом ‘-’.
destroy
Команда удаляет окна.СИНТАКСИС
destroy?window window …?ОПИСАНИЕ
Команда удаляет одно или несколько заданных аргументами window
окон и всех их потомков. Окна удаляются в порядке перечисления, и если при
удалении очередного окна произойдет ошибка, то команда прекращает работу без
удаления оставшихся окон. Если удалить окно “.“, то будет разрушено все
приложение.
entry
Создание примитива поля ввода текста и управление им.
СИНТАКСИС
entry имяПути параметрыСТАНДАРТНЫЕ ПАРАМЕТРЫ
-background |
-highlightbackground |
-insertontime |
-selectforeground |
-borderwidth |
-highlightcolor |
-insertwidth |
-takefocus |
-cursor |
-highlightthickness |
-justify |
-textvariable |
-exportselection |
-insertbackground |
-relief |
-xscrollcommand |
-font |
-inserborderwidth |
-selectbackground |
-foreground |
-insertofftime |
-selectborderwidth |
|
|
Подробное описание этих параметров приведено в options.ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ
ПРИМИТИВА
Имя параметра: -show
Имя в Базе: show
Класс в Базе:
Show
Если этот параметр задан, то истинное содержимое поля не выводится на
экране. Вместо этого каждый символ текста заменяется первым символом значения
параметра -show, скажем ‘*’. Такая возможность полезна, например, при
вводе в поле пароля. Если символы поля ввода были выделены и скопированы в
другом месте, то выводиться будет скопированная информация, а не истинное
содержимое поля ввода.Имя параметра: -state
Имя в Базе:
state
Класс в Базе: State
Задает одно из двух состояний поля ввода: normal или
disabled. Отключенное состояние указывает на то, что значение поля ввода
нельзя изменить с помощью команд примитива. При этом курсор ввода в поле не
отображается, даже если этот примитив оказался в фокусе ввода.
Имя параметра: -width
Имя в Базе: width
Класс в Базе:
Width
Задает желаемую ширину окна поля ввода в виде целого числа. Если введенное
значение неположительно, то ширина поля устанавливается такой, чтобы в него в
точности помещался текст его текущего значения.ОПИСАНИЕ
Команда entry создает новое окно (задаваемое аргументом
имяПути) и превращает его в примитив поля ввода. Детали изображения
кнопки, такие как ее цвета, шрифт и объемный вид, задаются с помощью описанных
выше дополнительных параметров. Команда entry возвращает аргумент
имяПути. В момент выполнения этой команды не должно существовать окна с
именем имяПути, но должно существовать его родительское окно.
Поле ввода представляет собой примитив, предназначенный для вывода одной
строки текста и редактирования ее с помощью описываемых ниже команд примитива,
которые по большей части сводятся к нажатию клавиш на клавиатуре и действиям с
“Мышью”. При создании поля ввода его строка текста пуста. Часть содержимого поля
можно выделить, совершив действия, описываемые ниже. Экспорт выделенного текста
(см. описание параметра exportSelection) осуществляется по стандартному
протоколу X11 для выделений; выделения в поле ввода имеют тип STRING.
Поля ввода также подчиняются стандартным правилам Tk обращения с фокусом ввода.
Когда поле ввода находится в фокусе ввода, в нем изображается курсор
ввода, который указывает, где будут вставляться вводимые символы.
Поля ввода могут работать и с длинными строками, которые не помещаются
полностью в окне примитива. С помощью описываемых ниже команд содержимое окна
можно изменить. Поля ввода взаимодействуют с полосами прокрутки с помощью
стандартного механизма xScrollCommand (подробно механизм взаимодействия
описан при описании параметра xScrollCommand). Кроме того, они
обеспечивают возможность сканирования (см. описание ниже).
КОМАНДА ПРИМИТИВА
Команда entry создает новую команду Tcl с именем имяПути. С
помощью этой команды можно выполнять различные операции над примитивом. Ее общий
вид
имяПути параметр арг арг ...
Параметр и аргументы уточняют поведение команды.
Аргументами многих команд примитива поля ввода служат индексы. Индекс задает
положение конкретного символа в строке поля ввода. Он может иметь один из
следующих видов:
число
Задает номер символа в строке. Первый символ строки имеет номер
‘0’.
anchor
Задает опорную точку выделения, которая используется командами примитива
select from и select adjust.end
Указывает положение символа непосредственно после последнего символа строки
в поле ввода. Указание этого индекса равносильно указанию длины
строки.insert
Указывает на символ, находящийся непосредственно за курсором ввода.
sel.first
Указывает на первый из выделенных символов. Эта форма индекса недопустима,
если выделение не расположено в окне поля ввода.sel.last
Указывает на последний из выделенных символов. Эта форма индекса
недопустима, если выделение не расположено в окне поля
ввода.@число
В этом случае число трактуется как x-координата в окне поля ввода;
указывает на символ с этой x-координатой. Например, “@0” указывает на
самый левый символ в окне ввода.Вместо любой из указанных форм можно
использовать ее сокращение, например, “e” или “sel.f”. Как
правило, значения индексов, выходящие за пределы допустимых, заменяются
ближайшими допустимыми значениями.
Примитивы поля ввода допускают следующие команды:
имяПути bbox индекс
Возвращает список из четырех элементов, описывающий клетку, занимаемую
символом, указанным параметром индекс. Первые два элемента списка задают
x- и y-координаты верхнего левого угла клетки (в пикселях по отношению к
примитиву), последние два элемента — ширину и высоту символа (в пикселях).
Клетка может находиться за пределами видимой части
окна.имяПути cget параметр
Возвращает текущее значение параметра конфигурации с именем
параметр. Параметрможет быть любым из параметров команды
entry.имяПути configure параметр
значение параметр значение ...
Запрашивает значения параметров конфигурации примитива или изменяет их.
Если параметр не указан, то возвращает список, содержащий значения всех
допустимых в имениПути параметров (формат списка описан в
Tk_ConfigureInfo). Если параметр задан, а его новое
значение — нет, то команда возвращает часть полного списка, относящуюся к
указанному параметру. Если заданы одна или несколько пар
параметр-значение, то указанным параметрам примитива присваиваются
новые значения. В этом случае команда возвращает пустую строку.
Параметр может быть любым из параметров команды
entry.имяПути delete первый
последний
Удаляет один или несколько символов в поле ввода. Аргумент первый
является индексом первого удаляемого символа, а аргумент последний
представляет собой индекс символа, следующего непосредственно за последним
удаляемым символом. По умолчанию значение аргумента последний на единицу
больше значения аргумента первый, т.е. удаляется один символ. Команда
возвращает пустую строку.имяПути get
Возвращает строку — содержимое поля ввода.имяПути
icursor индекс
Устанавливает курсор ввода непосредственно перед символом, заданным
аргументом индекс. Возвращает пустую строку.имяПути
index индекс
Команда возвращает числовое значение индекса, заданного аргументом
индекс.имяПути insert индекс строка
Вставляет символы строки непосредственно перед символом, на который
указывает аргумент индекс. Команда возвращает пустую
строку.имяПути scan параметр аргументы
Осуществляет сканирование поля ввода. В зависимости от значения
параметра может иметь две различные формы:
имяПути scan mark x
Запоминает значение координаты x и текущее состояние окна поля ввода;
используется в сочетании с последующими командами scan dragto. Обычно эта
команда связана с нажатием клавиши “Мыши” на примитиве. Возвращает пустую
строку.имяПути scan dragto x
Вычисляет разность между значением своего аргумента x и значением аргумента
x последней выполненной на данном примитиве команды scan mark. Затем
переносит изображение примитива на расстояние, в 10 раз превышающее вычисленную
разность. Команда обычно связана с событиями движения “Мыши” в примитиве и
используется для скоростного перетаскивания поля ввода в окне. Возвращает пустую
строку.имяПути selection параметр
аргумент
Производит размещение выделения в поле ввода. Команда может иметь одну из
описанных ниже форм.имяПути selection adjust
индекс
Определяет ближайший к указанному аргументом индекс положению край
выделения и устанавливает новое значение этого края в индекс (т.е.
элемент с индексом индекс входит в выделение, а соседний с ним — нет).
Противоположный край выделения становится опорной точкой для последующих команд
select to. Если в текущий момент выделение в поле отсутствует, то команда
заводит новое выделение, содержащее символы между указанным аргументом
индекс и последней установленной опорной точкой выделения. Возвращает
пустую строку.имяПути selection clear
Очищает выделение в данном примитиве. Если выделение отсутствует, то не
производит никаких действий. Возвращает пустую строку.имяПути
selection from индекс
Устанавливает опорную точку выделения непосредственно перед символом,
заданным аргументом индекс. Текущего выделения команда не меняет.
Возвращает пустую строку.имяПути selection present
Возвращает “1”, если в поле ввода имеется выделение, в противном случае
возвращает “0”.имяПути selection range начало
конец
Выделяет символы между символом, указанным аргументом начало, и
символом, непосредственно предшествующим указанному аргументом конец.
Если символ, указанный аргументом конец, совпадает с символом,
указанным аргументом начало, или предшествует ему, то выделение
становится пустым.имяПутиselection to индекс
Если символ, указанный аргументом индекс, предшествует опорной точке
выделения, то команда выделяет все символы между опорным символом выделения и
символом, указанным аргументом индекс, не включая опорный символ. Если
аргумент индекс указывает на опорный символ, то команда ничего не делает. Если
символ, указанный аргументом индекс, следует за опорной точкой выделения,
то команда выделяет все символы между опорным символом выделения и символом,
указанным аргументом индекс, не включая этот символ. Опорный символ
устанавливается последней выполненной на данном примитиве командой select
from или select adjust. Если в текущий момент выделение в поле
отсутствует, то команда заводит новое выделение, содержащее символы между
указанным аргументом индекс и последней установленной опорной точкой
выделения. Команда возвращает пустую строку.имяПути
xview аргументы
Используется для запроса горизонтального положения информации, выведенной в
поле ввода, и изменения этого положения. Команда может иметь одну из следующих
форм:
имяПути xview
Возвращает список, состоящий из двух элементов. Каждый из элементов списка
представляет собой вещественное число, заключенное между нулем и единицей; эта
пара чисел описывает видимый в окне горизонтальный интервал. Так, например, если
первое число равно “.2”, а второе “.6”, то 20% текста в поле ввода оказывается
невидимой слева от окна, в окне выводится 40% информации, и еще 40% оказывается
невидимой справа от окна. Те же значения передаются полосе прокрутки через
параметр -xscrollcommand.имяПути xview
индекс
Переносит строку в поле ввода так, что самым левым символом в окне
становится символ, указанный аргументом индекс.имяПути
xview moveto число
Передвигает область видимости так, что слева от окна остается невидимой
часть поля ввода, указанная аргументом число. Число должно быть
заключено между ‘0’ и “1”.имяПути xview scroll
количество что
Сдвигает выводимый в окне текст вправо или влево в соответствии со
значениями аргументов. Количество должно быть целым числом, аргумент
что может принимать значения units или pages или быть
сокращением одного из этих слов. Если аргумент что принимает значение
units, то сдвиг происходит на количество символов средней ширины.
Если значением аргумента что является pages, то сдвиг
осуществляется на количество полных экранов. Если количество
отрицательно, то видимые символы сдвигаются вправо, в противном случае —
влево.ПРИВЯЗКИ
ПО УМОЛЧАНИЮ
При создании поля ввода Tk автоматически создает привязки класса,
определяющие поведение примитива по умолчанию. В приводимом ниже описании
“слово” есть произвольная непрерывная группа букв, цифр и символов “_” или любой
другой одиночный символ.
Щелчок клавишей 1 “Мыши” устанавливает курсор ввода непосредственно перед
символом, расположенным под курсором “Мыши”, устанавливает фокус ввода на данном
примитиве и отменяет выделение в нем.
Перетаскивание курсора “Мыши” приводит к выделению символов между курсором
ввода и конечным положением курсора “Мыши”.
Двойной щелчок клавишей 1 “Мыши” приводит к выделению слова под курсором
“Мыши” и устанавливает курсор ввода перед первым символом этого слова.
Перетаскивание “Мыши” после двойного щелчка приводит к выделению группы,
состоящей из целых слов.
Тройной щелчок клавишей 1 “Мыши” приводит к выделению всего текста в поле
ввода и устанавливает курсор ввода перед первым символом текста.
Края выделения можно выровнять, если тащить “Мышь” с нажатой клавишей 1 при
нажатой клавише Shift; в этом случае выравнивается край, ближайший к
положению курсора “Мыши” в момент нажатия ее клавиши 1. Если по кнопке щелкнули
дважды перед тем, как тащить “Мышь”, то выделение выравнивается относительно
концов полных слов.
Щелчок по клавише 1 “Мыши” при нажатой клавише Control приводит к установке
курсора ввода в поле ввода без изменения текущего выделения.
Обычные печатные символы вводятся в месте расположения курсора ввода.
Содержимое поле ввода можно перемещать с помощью клавиши 2 “Мыши”. Щелчок по
клавише 2 “Мыши” и без ее перемещения приводит к копированию выделения в поле
ввода в место расположения курсора “Мыши”.
Если тащить “Мышь” слева или справа от окна поля ввода по направлению от окна
при нажатой клавише 1, то в окне автоматически появляется невидимый ранее текст
(если в поле со стороны, где “Мышь” покинула окно, есть текст, невидимый в
окне).
Нажатие на клавиши Left или Right приводит к перемещению
курсора ввода на один символ влево или вправо; при этом текущее выделение
отменяется и устанавливается новая опорная точка выделения. Если нажатие на
клавиши Left или Right происходит при нажатой клавише
Shift, то курсор ввода перемещается и пройденный им символ добавляется к
выделению. Нажатие на клавиши Control-Left и Control-Right
приводит к перемещению курсора ввода на полное слово, сочетания
Control-Shift-Left и Control-Shift-Right еще и расширяют
выделение. Сочетания Control-b и Control-f играют ту же роль, что
и Left и Right, а сочетания Meta-b и Meta-f
соответственно ту же роль, что и Control-Shift-Left и
Control-Shift-Right.
Нажатие на клавишу Home (или Control-a) приводит к перемещению
курсора к началу текста с отменой существующих выделений. Shift-Home
перемещает курсор к началу текста и доводит до этого места выделение.
Нажатие на клавишу End (или Control-e) приводит к перемещению
курсора в конец текста с отменой существующих выделений. Shift-End
перемещает курсор в конец текста и доводит до этого места выделение.
Нажатие на клавишу Select (или Control-Space) устанавливает
опорную точку выделения в положение курсора ввода. Текущее выделение при этом не
изменяется. Нажатие на клавиши Shift-Select (или
Control-Shift-Space) доводит выделение до текущего положения курсора
ввода (или устанавливает выделение между опорной точкой выделения и текущим
положением курсора ввода, если текущее выделение отсутствовало).
Control-/ выделяет весь текст в окне.
Control-\ приводит к отмене текущего выделения.
Клавиша F16, на многих станциях Sun обозначенная Copy, (или
Meta-w) копирует выделение в примитиве в карман.
Клавиша F20, на многих станциях Sun обозначенная Cut, (или
Control-w) копирует выделение в примитиве в карман и удаляет выделение.
Если выделение в примитиве отсутствует, то нажатие на эти клавиши не приводит ни
к каким действиям.
Клавиша F18, на многих станциях Sun обозначенная Paste, (или
Control-y) копирует содержимое кармана в место расположения курсора
ввода.
Нажатие на клавишу Delete приводит к удалению выделения. Если
выделение отсутствует, то удаляется символ, непосредственно примыкающий к
курсору ввода справа.
Нажатие на клавишу BackSpace (или Control-h) приводит к
удалению выделения. Если выделение отсутствует, то удаляется символ,
непосредственно примыкающий к курсору ввода слева.
Control-d удаляет символ, непосредственно примыкающий к курсору ввода
справа.
Meta-d удаляет слово, непосредственно примыкающее к курсору ввода
справа.
Control-k удаляет все символы справа от курсора ввода.
Если поле ввода отключено указанием значения disabled параметра
-state, то в окне поля по-прежнему можно перемещать текст и производить
выделение, однако курсор ввода в окне не появляется и редактирование текста
невозможно.
Определяя новые привязки к отдельным примитивам или переопределяя привязки
класса, поведение полей ввода можно изменить.
event
Определение виртуальных событий и генерация событий
СИНТАКСИС
event параметр ?арг арг ...?ОПИСАНИЕ
Команда event обеспечивает различные возможности работы с событиями,
включая определение виртуальных событий и синтезирование событий. У команды есть
несколько различных форм, которые задаются первым аргументом. В настоящее время
поддерживаются следующие формы команды:
event add <<виртуальное>>
последовательность ?последовательность...?
Связывает виртуальное событие с последовательностями физических
событий, указываемыми аргументами последовательность; в результате
выполнение одной из указанных последовательностей событий приводит к
возникновению виртуального события. Аргумент виртуальное может
быть произвольной строкой, а последовательность может принимать любое
значение, допустимое для аргумента последовательность команды bind. Если
виртуальное событие уже определено, то новая последовательность физических
событий добавляется к списку уже имеющихся
последовательностей.event delete
<<виртуальное>> последовательность
?последовательность...?
Удаляет все указанные последовательности из списка связанных с
данным виртуальным событием. Аргумент виртуальное может быть
произвольной строкой, а последовательность может принимать любое
значение, допустимое для аргумента последовательность команды bind. Если
последовательность не связана с данным виртуальным событием в
текущий момент, то она игнорируется. Если аргумент последовательность
отсутствует, то из списка удаляются все последовательности физических событий и
данное виртуальное событие не может быть более
осуществлено.event generateокно событие ?параметр
значение параметр значение ...?
Генерирует событие в окне и обеспечивает его обработку таким образом, как
если бы оно поступило из менеджера окон. Аргумент окно задает имя пути
окна, в котором будет генерироваться событие; его значением может быть и
идентификатор окна (такой же, какой служит результатом команды winfo id),
если он относится к окну в текущем приложении. Аргумент событие задает
описание события, например, в виде <Shift-Button-2> или
<<Paste>>. Аргумент событие может принимать любое
значение, допустимое для аргумента последовательность команды bind, за
исключением того, что он должен состоять из одного, а не из нескольких событий.
Пары параметр-значение можно использовать для установки значений
дополнительных параметров события, например, координат курсора “Мыши” ниже (см.
"ПОЛЯ
СОБЫТИЯ"). Если параметр -when не задан, то событие обрабатывается
немедленно; все программы обработки события будут выполнены до завершения
команды event generate. В противном случае момент обработки определяется
значением параметра -when.event info
?<<виртуальное>>?
Возвращает информацию о виртуальных событиях. Если аргумент
<<виртуальное>> опущен, то возвращается список
всех виртуальных событий, определенных в текущий момент. Если аргумент
<<виртуальное>> задан, то возвращаемое значение
представляет собой список, элементы которого являются последовательностями
физических событий, связанными с данным виртуальным событием; если указанное
виртуальное событие не определено, то команда возвращает пустую
строку.ПОЛЯ СОБЫТИЯ
Команда event generate поддерживает следующие параметры,
которые соответствуют расширению “%” в скриптах привязки для команды bind.
-above окно
Аргумент окно задает поле above для события либо в
виде имени пути окна либо в виде целочисленного идентификатора окна. Параметр
имеет смысл для событий Configure. Параметр соответствует подстановке
%a для скриптов привязки.-borderwidth размер
Параметр размер представляет собой расстояние на экране; задает
значение поля border_width события. Параметр имеет смысл для событий
Configure. Параметр соответствует подстановке %B для скриптов
привязки.-button число
Значением параметра число должно быть целое число; задает значение
поля detail для события ButtonPress или ButtonRelease,
подавляя номер кнопки, задаваемый параметром события base. Параметр
соответствует подстановке %b для скриптов привязки.-count
число
Значением параметра число должно быть целое число; задает значение
поля count для события. Параметр имеет смысл для событий Expose.
Параметр соответствует подстановке %c для скриптов
привязки.-detail детальность
Параметр задает значение поля detail для события и может принимать
следующие значения:
NotifyAncestor |
NotifyNonlinearVirtual |
NotifyDetailNone |
NotifyPointer |
NotifyInferior |
NotifyPointerRoot |
NotifyNonlinear |
NotifyVirtual |
Имеет смысл для событий Enter, Leave, FocusIn и
FocusOut. Параметр соответствует подстановке %d для скриптов
привязки.-focus булевское
Параметр булевское принимает булевские значения; он задает значение
поля focus для события. Имеет смысл для событий Enter и
Leave. Параметр соответствует подстановке %f для скриптов
привязки.-height размер
Параметр размер представляет собой расстояние на экране; задает
значение поля height события. Параметр имеет смысл для событий
Configure. Параметр соответствует подстановке %h для скриптов
привязки.-keycode число
Значением параметра число должно быть целое число; задает значение
поля keycode для события. Параметр имеет смысл для событий
KeyPress и KeyRelease. Параметр соответствует подстановке
%k для скриптов привязки.-keysym
имя
Значением параметра имя должно быть имя допустимого символа
клавиатуры, например, g, пробел или Return; код этого символа
используется в качестве значения поля keycode события, подавляя значение
детальности, заданное аргументом base события. Имеет смысл для событий
KeyPress and KeyRelease. Параметр соответствует подстановке
%K для скриптов привязки.-modeобъяв
Параметр объяв задает значение поля mode для события; он
должен принимать одно из значений NotifyNormal, NotifyGrab,
NotifyUngrab или NotifyWhileGrabbed. Имеет смысл для событий
Enter, Leave, FocusIn и FocusOut. Параметр соответствует
подстановке %m для скриптов
привязки.-overrideбулевское
Значение параметра булевское должно быть булевским; он задает
значение поля override_redirect для события. Имеет смысл для событий
Map, Reparent и Configure. Параметр соответствует
подстановке %o для скриптов
привязки.-placeгде
Параметр где задает значение поля place для события; может
принимать значения PlaceOnTop или PlaceOnBottom. Имеет смысл для
событий Circulate. Параметр соответствует подстановке %p для
скриптов привязки.-rootокно
Аргумент окно задает поле root для события либо в виде имени
пути окна, либо в виде целочисленного идентификатора окна. Имеет смысл для
событий KeyPress, KeyRelease, ButtonPress, ButtonRelease, Enter,
Leave и Motion. Параметр соответствует подстановке %R для
скриптов привязки.-rootx коорд
Параметр коорд представляет собой расстояние на экране; задает
значение поля x_root события. Параметр имеет смысл для событий
KeyPress, KeyRelease, ButtonPress, ButtonRelease, Enter, Leave и
Motion. Параметр соответствует подстановке %X для скриптов
привязки.-rooty коорд
Параметр коорд представляет собой расстояние на экране; задает
значение поля y_root события. Параметр имеет смысл для событий
KeyPress, KeyRelease, ButtonPress, ButtonRelease, Enter, Leave и
Motion. Параметр соответствует подстановке %Y для скриптов
привязки.-sendevent булевское
Значение параметра булевское должно быть булевским; он задает
значение поля send_event для события. Имеет смысл для всех событий.
Параметр соответствует подстановке %E для скриптов
привязки.-serial число
Значение параметра должно быть целым числом; задает значение поля
serial для события. Имеет смысл для всех событий. Параметр
соответствует подстановке %# для скриптов
привязки.-state состояние
Параметр задает значение поля state для события. Для событий
KeyPress, KeyRelease, ButtonPress, ButtonRelease, Enter, Leave и
Motion значение параметра должно быть целым. Для событий
Visibility параметр может принимать одно из значений
VisibilityUnobscured, VisibilityPartiallyObscured или
VisibilityFullyObscured. Этот параметр подавляет любые модификаторы,
например, Meta или Control, указанные в основном событии. Параметр
соответствует подстановке %s для скриптов
привязки.-subwindow окно
Аргумент окно задает поле subwindow для события либо в виде
имени пути примитива Tk, либо в виде целочисленного идентификатора окна. Имеет
смысл для событий KeyPress, KeyRelease, ButtonPress, ButtonRelease,
Enter, Leave и Motion. Аналогичен подстановке %S для скриптов
привязки.-time целое
Параметр должен иметь целое значение; задает значение поля time для
события. Имеет смысл для событий KeyPress, KeyRelease, ButtonPress,
ButtonRelease, Enter, Leave, Motion и Property. Параметр
соответствует подстановке %t для скриптов
привязки.-width размер
Параметр размер представляет собой расстояние на экране; задает
значение поля width события. Параметр имеет смысл для событий
Configure. Параметр соответствует подстановке %w для скриптов
привязки.-when когда
Параметр когда задает момент обработки события; должен принимать
одно из следующих значений:
now Событие обрабатывается немедленно, до завершения выполнения
команды. То же самое происходит и в случае, если параметр -when опущен.
tail Устанавливает событие в очередь событий Tcl вслед за всеми
стоящими в этой очереди событиями данного приложения.
head Устанавливает событие в начало очереди событий Tcl; оно будет
обработано перед остальными событиями, уже стоящими в очереди.
mark Устанавливает событие в начало очереди событий Tcl, но вслед за
всеми событиями, вставшими в очередь посредством указания параметра
-when. Такая возможность полезна при генерации последовательности
событий, которые должны быть обработаны одно за другим, но перед всеми событиями
уже стоящими в очереди.
-x
коорд
Параметр коорд представляет собой расстояние на экране; задает
значение поля x события. Параметр имеет смысл для событий
KeyPress, KeyRelease, ButtonPress, ButtonRelease, Enter, Leave,
Motion, Expose, Configure, Gravity и Reparent. Параметр соответствует
подстановке %x для скриптов привязки.-y
коорд
Параметр коордпредставляет собой расстояние на экране; задает
значение поля y события. Параметр имеет смысл для событий
KeyPress, KeyRelease, ButtonPress, ButtonRelease, Enter, Leave,
Motion, Expose, Configure, Gravity и Reparent. Параметр соответствует
подстановке %y для скриптов привязки.Значением
всякого параметра, не указанного при генерации события, становится 0, за
исключением параметра serial, которому присваивается сериальный номер
очередного X события.ПРИМЕРЫ
ВИРТУАЛЬНЫХ СОБЫТИЙ
Для обращения к привязке к виртуальному событию необходимо выполнение двух
условий. Во-первых, это виртуальное событие должно быть определено командой
event add. Во-вторых, к этому виртуальному событию должна быть создана
привязка с помощью команды bind.
Рассмотрим следующие определения виртуальных событий:
event add <<Paste>> <Control-y>
event add <<Paste>> <Button-2>
event add <<Save>> <Control-X><Control-S>
event add <<Save>> <Shift-F12>
В команде bind
привязка к виртуальным событиям осуществляется так же, как и ко встроенным типам
событий:
bind Entry <<Paste>> {%W insert [selection get]}
Двойные угловые скобки показывают, что выполняется привязка к виртуальному
событию. При нажатии клавиш Control-y или кнопки 2 “Мыши” или при
синтезировании виртуального события <<Paste>> командой
event generate будет выполнена привязка
<<Paste>>.
Если последовательность в виртуальном событии в точности совпадает с
последовательностью в другом физическом событии, то преимуществом пользуется
физическое событие. Рассмотрим следующий пример:
event add <<Paste>> <Control-y>
<Meta-Control-y>
bind Entry <Control-y> {puts Control-y}
bind Entry <<Paste>> {puts Paste}
При нажатии на клавиши Control-y будет выполнена привязка
<Control-y>, так как физическое событие считается более конкретным,
чем виртуальное, а в остальном все одинаково. Однако при нажатии клавиш
Meta-Control-y будет выполнена привязка <<Paste>>, так
как модификатор Meta в физическом образце, связанном с виртуальной
привязкой, более конкретен, чем последовательность <Control-y> для
физического события.
Привязки к виртуальному событию можно создавать и до определения самого
события. На самом деле определение виртуального события не является необходимым,
например, на платформах, где конкретное виртуальное событие может оказаться
бессмысленным или негенерируемым.
При изменении определения виртуального события в процессе выполнения все окна
немедленно переключаются на новое определение. Если, в условиях предыдущего
примера, выполнить команды
bind <Entry> <Control-y> {}
event add <<Paste>> <Key-F6>
то поведение события изменится в двух направлениях. Во-первых, всплывет
подавленная привязка <<Paste>>. Нажатие на клавиши
Control-y приведет теперь не к выполнению привязки
<Control-y>, а к выполнению виртуального события
<<Paste>>. Во-вторых, нажатие на клавишу F6
также приведет к выполнению привязки <<Paste>>.
См. также bind.
Если последовательность не связана с данным
виртуальным событием в текущий момент, то она игнорируется. Если аргумент
последовательность отсутствует, то из списка удаляются все
последовательности физических событий и данное виртуальное событие не
может быть более осуществлено.
event generate окно событие ?параметр
значение параметр значение ...?
Генерирует событие в окне и обеспечивает его обработку таким образом, как
если бы оно поступило из менеджера окон. Аргумент окно задает имя пути
окна, в котором будет генерироваться событие; его значением может быть и
идентификатор окна (такой же, какой служит результатом команды winfo id),
если он относится к окну в текущем приложении. Аргумент событие задает
описание события, например, в виде <Shift-Button-2> или
<<Paste>>. Аргумент событие может принимать любое
значение, допустимое для аргумента последовательность команды bind, за
исключением того, что он должен состоять из одного, а не из нескольких событий.
Пары параметр-значение можно использовать для установки значений
дополнительных параметров события, например, координат курсора “Мыши” ниже (см.
"ПОЛЯ
СОБЫТИЯ"). Если параметр -when не задан, то событие обрабатывается
немедленно; все программы обработки события будут выполнены до завершения
команды event generate. В противном случае момент обработки определяется
значением параметра -when.event info
?<<виртуальное>>?
Возвращает информацию о виртуальных событиях. Если аргумент
<<виртуальное>> опущен, то возвращается список
всех виртуальных событий, определенных в текущий момент. Если аргумент
<<виртуальное>> задан, то возвращаемое значение
представляет собой список, элементы которого являются последовательностями
физических событий, связанными с данным виртуальным событием; если указанное
виртуальное событие не определено, то команда возвращает пустую
строку.
focus
Управление фокусом ввода.
СИНТАКСИС
focus
focus
окно
focus параметр ?арг арг
...?
ОПИСАНИЕ
Команда focus используется для управления
фокусом ввода Tk. В любой момент
времени одно из
окон на каждом экране находится в фокусе ввода; всякое
событие нажатия или отпускания клавиши
интерпретируются в этом окне. Обычно
переключение
фокуса между окнами верхнего уровня на экране осуществляется
менеджером окон. Например, некоторые менеджеры окон
автоматически
переключают фокус на окно верхнего
уровня, как только на него попадает курсор
“Мыши” ;
другие устанавливают фокус только при щелчке на окне. Обычно
менеджер окон устанавливает фокус только на окнах
верхнего уровня, а
переключением фокуса между
подчиненными окнами занимается конкретное
приложение.
Для каждого верхнего уровня Tk запоминает одно окно
в фокусе (последнего
наследника данного верхнего
уровня, в которое попал фокус); когда менеджер
окон
переключает фокус на данный верхний уровень, Tk автоматически
устанавливает его на запомненное окно. Внутри
конкретного верхнего уровня Tk
использует явное
моделирование фокуса по умолчанию. Обычно перемещение
курсора “Мыши” без изменения верхнего уровня не
приводит к переключению
фокуса; переключение
происходит, лишь если его запросил примитив (например, в
результате щелчка по кнопке “Мыши” ) или если
пользователь нажал, например,
клавишу Tab.
Неявная модель фокусировки создается процедурой
Tcl tk_focusFollowsMouse;
она меняет параметры
конфигурации Tk таким образом, чтобы фокус
устанавливался на окно при попадании на него курсора “Мыши”. Процедуры
Tcl
tk_focusNext и tk_focusPrev
устанавливают порядок переключения фокуса
между
окнами верхнего уровня. Эти процедуры определяют, помимо прочего,
привязки по умолчанию к клавишам Tab и
Shift-Tab.
Команда focus может принимать одну из
следующих форм:
focus
Возвращает имя пути окна в фокусе на дисплее, содержащем главное
окно приложения, или пустую строку, если никакое окно данного
приложения не находится в фокусе. Замечание: дисплей лучше указать
явно с помощью параметра -displayof (см. ниже); в этом случае команда
сможет работать и в приложениях, использующих несколько дисплеев.
focus окно
Если одно из окон данного
приложения находится в фокусе на дисплее
окна, то команда устанавливает фокус ввода на окно и
возвращает
пустую строку. Если же у приложения не было фокуса ввода на дисплее
окна, то окно будет запомнено как окно в фокусе для данного верхнего
уровня. При попадании фокуса на данный верхний уровень в очередной
раз Tk установит его на окно. Если аргументом является пустая строка,
то команда не выполняет никаких действий.
focus -displayof окно
Возвращает имя
окна в фокусе на
дисплее, содержащем окно. Если
окно
в фокусе на дисплее окна не принадлежит данному приложению, то
команда возвращает пустую строку.
focus -force
окно
Устанавливает
окно в фокус на дисплее окна, даже если у приложения
нет фокуса ввода на этом дисплее. Эту команду следует использовать
экономно или отказаться от его использования совсем. Обычно
приложение не должно запрашивать для себя фокус самостоятельно,
дожидаясь пока на него не переключит фокус менеджер окон. Если
аргументом является пустая строка, то команда не выполняет никаких
действий.
focus -lastfor окно
Возвращает имя
окна, последним получившим фокус ввода среди всех
окон того же верхнего уровня, что и окно. Если ни на какое из окон
данного верхнего уровня фокус не устанавливался или если окно, на
которое фокус устанавливался последним, удалено, то команда
возвращает имя верхнего уровня. Возвращаемое значение является
именем окна, на котором будет установлен фокус ввода при следующей
передаче фокуса на данный верхний уровень менеджером окна.
ОСОБЕННОСТИ РЕАЛИЗАЦИИ
При получении фокуса ввода внутренним окном Tk
фактически не устанавливает X
фокус на это окно. X
ведет себя таким образом, что фокус сохранится на окне
верхнего уровня, которому подчиняется окно с
фокусом. Однако Tk создает
события FocusIn и
FocusOut в точности, как если бы X фокус был на внутреннем
окне. Такой подход порождает ряд трудностей при
фактическом переключении X
фокуса; то, что X фокус
установлен на данный верхний уровень, незаметно, если
не запрашивать X сервер непосредственно из C
программы.
font
Создание шрифтов и контроль за ними.
СИНТАКСИС
font параметр ?арг арг ...?
ОПИСАНИЕ
Команда font обеспечивает работу со шрифтами: определение
поименованных шрифтов и запрос фактических параметров шрифтов. У команды
несколько различных форм, которые задаются первым аргументом. В настоящее время
поддерживаются следующие формы команды: font
actual шрифт ?-displayof окно? ?параметр?
Возвращает информацию о фактических значениях параметров
шрифта, выводимого на экран. Фактические параметры могут отличаться от
запрошенных благодаря ограничениям, накладываемым платформами (например,
доступность различных семейств шрифтов или различных кеглей). Аргумент
шрифт представляет собой описатель шрифта ниже (см. "Описание
шрифта"). Если аргумент окно опущен, то по умолчанию команда
относится к главному окну. Если задан аргумент параметр, то
команда возвращает значение указанного параметра. Если этот аргумент
опущен, то возвращаемое значение представляет собой список всех атрибутов и их
значений. Список возможных атрибутов приведен ниже (см. "Параметры
шрифтов").
font configure
имяшрифта?параметр? ?значение параметр значение ...?
Запрашивает значения параметров конфигурации примитива или изменяет их.
Если параметр не указан, то возвращает список, содержащий значения
всех параметров шрифта имяшрифта. Если параметр задан, а его новое
значение — нет, то команда возвращает текущее значение указанного
параметра. Если заданы одна или несколько пар параметр-значение, то
указанным параметрам шрифта присваиваются новые значения, а содержимое всех
примитивов, использующих данный шрифт меняется в соответствии с новыми
значениями параметров. Список возможных атрибутов приведен ниже (см. "Параметры
шрифтов").
font create?имяшрифта? ?параметр
значение ...?
Создает новый поименованный шрифт и возвращает его имя. Аргумент
имяшрифта задает имя шрифта; если этот аргумент опущен, то Tk генерирует
новое имя вида fontx, где x — целое число. Число пар
параметр-значение может быть произвольным, они задают значения соответствующих
параметров нового поименованного шрифта. Список возможных атрибутов приведен
ниже (см. "Параметры
шрифтов").
font delete имяшрифта ?имяшрифта
...?
Удаляет указанные поименованные шрифты. В случае, если удаляемый шрифт
используется в одном из примитивов, фактическое удаление не происходит пока не
будет вычеркнуто последнее вхождение шрифта в примитив. Если удаленный
поименованный шрифт впоследствии создается вновь повторным вызовом команды
font create, то в примитивах будет использоваться новый поименованный
шрифт с новыми значениями параметров.
font families ?-displayof окно?
Возвращает список имен всех семейств шрифтов (без различения верхнего
и нижнего регистров), существующих на дисплее заданного окна. Если аргумент окно
опущен, то его значением по умолчанию является главное окно.
font measure шрифт ?-displayof окно?
текст
Подсчитывает протяженность текстовой строки при выводе ее на экран в данном
шрифте. Аргумент шрифт задает описатель текста (см. "Описание
шрифта"). Возвращает общую ширину текста в пикселах без учета сильно
искаженных символов (как, например, “f” курсивного). Если в строке есть символы
табуляции или перевода строки, то они не влияют на результат подсчета.
font metrics шрифт ?-displayof окно?
?параметр?
Возвращает информацию о метрических характеристиках шрифта при его
выводе на экран. Аргумент шрифт задает описатель шрифта, (см. "Описание
шрифта"). Если аргумент окно опущен, то его значением по
умолчанию является
главное окно. Если задан аргумент параметр, то команда
возвращает значение
указанной метрической характеристики; если этот
аргумент опущен, то
возвращается список значений всех метрических
характеристик шрифта.
Список метрических характеристик приведен ниже (см.
"Метрические
характеристики шрифтов").
font
names
Возвращает список всех поименованных на
текущий момент шрифтов.
ОПИСАНИЕ ШРИФТА
В качестве описателя шрифта в любой из приведенных выше команд
принимаются следующие данные; те же самые форматы допустимы и в качестве
значения параметра -font в описателе примитива. [1] имяшрифта
Имя поименованного шрифта, созданного командой font create.
Использование поименованного шрифта не может привести к ошибке вне зависимости
от того, насколько потенциально ошибочны или бессмысленны значения параметров
этого шрифта. Если вывод символов в поименованном шрифте невозможен, то для их
вывода используется автоматически подбираемый шрифт с близкими значениями
параметров.
[2] систшрифт
Имя (зависящее от используемой платформы)
шрифта,
интерпретируемого графическим сервером. Сюда входит также (под X)
шрифт XLFD (см. [4]), в котором используется единственный символ "*",
предназначенный для забивки нескольких полей в середине имени.
Список системных шрифтов приведен в части текста, описывающей
особенности данной платформы.
[3] семейство ?размер? ?стиль? ?стиль
...?
Список, первым элементом которого
является требуемое семейство
шрифтов, а вторым, необязательным, элементом — требуемый размер.
Параметр размер интерпретируется по тем же правилам, что и параметр
-size (см. "Параметры шрифтов"). Все остальные необязательные
аргументы, следующие за параметром размер, представляют собой
стили шрифтов. Они могут иметь следующие значения:
normal
bold
roman
italic
underline
overstrike
[4] X-шрифт имена (XLFD)
Имя шрифта для Unix-машин, представленное в виде
-заливка-семейство-шрифт-наклон-устширина-добстиль-пиксель-точка-
разрешx-разрешy-промежуток-ширина-наборсимволов-кодирование
-foundry-family-weight-slant-setwidth-addstyle-pixel-point-resx-
resy-spacing-width-charset-encoding.
Поля, содержимое которых пользователю
безразлично, можно
пропустить, заменив символом "*". Каждому пропущенному полю должен
соответствовать ровно один символ "*", а символ “*” в конце XLFD
приводит к пропуску всех оставшихся полей; кратчайшая форма XLFD
имеет вид просто "*", что означает, что значения всех полей берутся по
умолчанию. Всем пропущенным полям присваиваются значения по
умолчанию. В целях совместимости XLFD всегда выбирает шрифт
заданного размера в пикселах (а не в точках). Несмотря на некоторую
некорректность выбранного подхода, все приложения, использующие
XLFD, предполагают, что “точка” в действительности совпадает с одним
пикселем, и при использовании корректного размера шрифта могут
привести к неправильному выводу шрифта (обычно с более крупными
символами).
[5] параметр значение ? параметр значение
...?
Правильно сформированный список пар параметр-значение, задающих
атрибуты шрифта, в том же формате, что и при определении
поименованного шрифта (см. "Параметры шрифтов").
При использовании описателя шрифта система пытается
проанализировать
описание в соответствии с
приведенными выше пятью правилами в указанном
порядке. В случаях [1] и [2] имя шрифта должно соответствовать существующему
поименованному шрифту или системному шрифту. Случаи
[3], [4] и [5]
принимаются на всех платформах и в
них будет использоваться шрифт, по
параметрам
ближайший к требуемому. В некоторых ситуациях оказывается
невозможно найти близкий шрифт (например, имя
семейства оказалось
испорченным); в этом случае
выбирается один из системно-зависимых шрифтов по
умолчанию. Если описатель шрифта не подходит ни под один из приведенных
выше образцов, то возникает ошибка.
МЕТРИЧЕСКИЕ
ХАРАКТЕРИСТИКИ ШРИФТОВ
Команда font metrics использует следующие параметры для запроса
данных,
определяемых при создании шрифта. Это характеристики шрифта в целом,
а не
отдельных его символов. В нижеследующих определениях “основа шрифта” — это
горизонтальная прямая, на которой располагается нижняя часть большинства
букв, некоторые буквы, например, “g”, опускаются ниже основы.
-ascent
Высота в пикселах самой высокой буквы шрифта над основой плюс
дополнительное пустое пространство, добавленное разработчиком
шрифта.
-descent
Наибольшая протяженность в пикселях буквы шрифта под основой плюс
дополнительное пустое пространство, добавленное разработчиком
шрифта.
-linespace
Возвращает расстояние между строками текста,
использующими один и
тот же шрифт, необходимое для того, чтобы символы верхней строки не
перекрывались с символами нижней. Обычно это сумма зазора под
верхней и над нижней строкой.
-fixed
Возвращает булевское значение, равное `1'
для шрифта постоянной
ширины, в котором ширина всех обычных символов одинакова, и равное
`0’ для пропорционального шрифта, разные буквы которого имеют
различную ширину. Ширина управляющих символов, символов
табуляции и других непечатаемых символов при вычислении этого
значения не учитывается.
ПАРАМЕТРЫ ШРИФТОВ
Следующие параметры поддерживаются на всех
платформах и используются для
конструирования
поименованного шрифта или при задании шрифта с помощью
стиля [5] выше:
-family имя
Имя семейства шрифтов (нечувствительное к
регистру). Tk обязательно
поддерживает семейства с именами Courier (моноширинный шрифт
“пишущей машинки”), Times (“газетный” шрифт с засечками) и
Helvetica
(рубленый “европейский” шрифт). При использовании одного из этих
семейств шрифтов оно автоматически заменяется наиболее подходящим
“родным” шрифтом. Имя семейства также может быть именем одного из
родных шрифтов, зависящих от платформы; в этом случае семейство
будет работать на своей платформе, как положено, однако при переходе
к другой платформе могут возникнуть неприятности. Если имя семейства
не задано или не опознано, то будет выбран шрифт по умолчанию для
данной платформы.
-size размер
Требуемый кегль (размер) шрифта. Если
значением аргумента является
положительное число, то оно интерпретируется как размер символов в
точках. Если значение отрицательно, то его абсолютная величина
интерпретируется как размер в пикселах. Если шрифт указанного кегля
нельзя вывести, то берется ближайший доступный размер. Если размер
не задан или его значение равно нулю, то будет выбран размер по
умолчанию для данной платформы.
Как правило, размер шрифта следует указывать в точках; тогда
приложение будет иметь один и тот же размер на экране даже на
мониторах различного разрешения или при переносе скриптов на другие
платформы. Однако использование пикселей оправдано, например, в
ситуациях, когда строчка текста должна соответствовать по длине
двуцветному изображению фиксированного размера. Коэффициент
перехода от точек к пикселам и обратно устанавливается при запуске
приложения на основе параметров используемого монитора, однако его
можно изменить при помощи команды Tk scaling.
-weight вес
Условная толщина символов в шрифте.
Значение normal задает шрифт
нормальной толщины, bold — жирный шрифт. Выбирается доступная
толщина, ближайшая к заданной. По умолчанию параметр имеет
значение normal.
-slant наклон
Величина, на которую символы шрифта
отклоняются по вертикали.
Допустимы значения roman и italic. Шрифт с наклоном roman —
это
обычный прямой шрифт, а символы шрифта с наклоном italic
отклоняются от вертикали на несколько
градусов. Выбирается доступный
наклон, ближайший к заданному. По умолчанию параметр имеет
значение roman.
-underline булевское
Значением параметра является булевский
флажок, указывающий,
следует ли подчеркивать символы шрифта. По умолчанию параметр
имеет значение ложь.
-overstrike булевское
Значением параметра является булевский
флажок, указывающий,
следует ли перечеркивать символы шрифта (горизонтальной прямой
посреди символа). По умолчанию параметр имеет значение ложь.
ОСОБЕННОСТИ
РЕАЛИЗАЦИИ НА РАЗЛИЧНЫХ ПЛАТФОРМАХ
Различные платформы поддерживают следующие
поименованные системные
шрифты:
X Windows:
Все допустимые имена X шрифтов, включая перечисляемые
командой xlsfonts(1).
MS Windows:
system
ansi
device
systemfixed
ansifixed
oemfixed
Макинтош:
system application
См. также options.
frame
Команда создает и управляет примитивами рамок (frames).
СИНТАКСИС
frame имяПути параметрыСТАНДАРТНЫЕ ПАРАМЕТРЫ
-borderwidth |
-highlightbackground |
-highlightthickness |
-takefocus |
-cursor |
-highlightcolor |
-relief |
|
Подробное описание этих параметров приведено в разделе options.ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ
ПРИМИТИВА
Имя параметра: -background
Имя в Базе: background
Класс в Базе: Background
Играет ту же роль, что и стандартный параметр background, однако
его значение может быть и пустой строкой. В последнем случае в примитиве не
выводится ни фон, ни бордюр (и никакие цвета из цветовой схемы примитива не
задействованы на фон или бордюр).
Имя параметра: -class
Имя в Базе: class
Класс в Базе:
ClassЗадает класс окна. Этот класс используется при запросе
значений других параметров окна в базе параметров, а также для других целей
(например, при задании привязок). Значение параметра class нельзя
поменять с помощью команды примитива configure.
Имя параметра: -colormap
Имя в Базе: colormap
Класс в
Базе: ColormapЗадает цветовую схему окна. Может либо принимать
значение new (в этом случае для окна и его потомков создается новая
цветовая схема), либо быть именем другого окна на том же экране с тем же
именемПути (в этом случае новое окно берет цветовую схему указанного
окна). Если параметр colormap не задан, то новое окно наследует цветовую
схему своего предка. Значение параметра colormap нельзя поменять с
помощью команды примитива configure.
Имя параметра: -container
Имя в Базе: container
Класс
в Базе: Container
Значение параметра должно быть булевским. Если оно истинно, то окно
предназначено для включения какого-то другого приложения (например, приложение
Tk верхнего уровня может быть включено с помощью параметра -use). В этом
случае окно способно поддерживать соответствующие протоколы управления окнами
(например, обеспечивать исполнение геометрических запросов). В данном приложении
не должно быть собственных потомков окна. Значение параметра container
нельзя поменять с помощью команды примитива configure.
Имя параметра: -visual
Имя в Базе: visual
Класс в
Базе: VisualЗадает визуальную информацию для нового окна в любой из
форм, поддерживаемых Tk_GetVisual. Если параметр не задан, то окно будет
использовать ту же визуальную информацию, что и его непосредственный предок.
Значение параметра visual нельзя поменять с помощью команды примитива
configure.
Имя параметра: -width
Имя в Базе: width
Класс в
Базе: Width
Задает желаемую ширину окна в любой из форм, поддерживаемых
Tk_GetPixels. Если значение параметра неположительно, то окно вообще не
запрашивает места.
ОПИСАНИЕ
Команда frame создает новое окно (заданное аргументом имяПути) и превращает
его в примитив рамки. Детали изображения рамки, такие как ее цвет фона и
объемный вид, задаются с помощью описанных выше дополнительных параметров.
Команда frame возвращает имя пути нового окна.
Рамка представляет собой простой примитив. Она предназначена в первую очередь
для размещения внутри нее окон сложным образом. Единственными характеристиками
рамки являются цвет ее фона и (необязательно) способ изображения трехмерного
бордюра — выпуклым или вдавленным.
КОМАНДА ПРИМИТИВА
Команда frame создает новую команду Tcl с именем пути окна рамки. С
помощью этой команды можно выполнять различные операции над примитивом. Ее общий
вид
имяПути параметр арг арг ...
ИмяПути — это имя команды, совпадающее с именем пути примитива.
Параметр и аргументы уточняют поведение команды. Примитивы кнопки
допускают следующие формы команды:
имяПути cget параметр
Возвращает текущее значение параметра конфигурации с именем параметр.
Параметр может быть любым из параметров команды frame.
имяПути configure параметр значение параметр значение
...
Запрашивает значения параметров конфигурации примитива или
изменяет их. Если параметр не указан, то возвращает список, содержащий
значения всех допустимых в имениПути параметров (формат списка описан в
Tk_ConfigureInfo). Если параметр задан, а его новое значение —
нет, то команда возвращает часть полного списка, относящуюся к указанному
параметру. Если заданы одна или несколько пар параметр-значение, то
указанным параметрам примитива присваиваются новые значения, а команда
возвращает пустую строку. Параметр может быть любым из параметров команды
frame.ПРИВЯЗКИ
При создании новой рамки она не имеет привязок по умолчанию: рамки не
предполагаются интерактивными.
grab
Направляет события, исходящие из клавиатуры и указателя “Мыши” в модальное
окно и его поддерево.
СИНТАКСИС
grab ?-global? окно
grab параметр ?арг арг ...?
ОПИСАНИЕ
Команда реализует простые перехватчики событий ввода с клавиатуры и “Мыши”.
Перехватчики Tk отличаются от перехватчиков, описанных в документации Xlib.
Когда для некоторого окна задан перехватчик, Tk ограничивает все события,
исходящие от курсора, границами модального окна и его потомков в иерархии окон
Tk. Если курсор находится в пределах поддерева модального окна, то курсор будет
вести себя так, будто нет никакого перехватчика вообще. Если курсор находится
вне поддерева модального окна, то события нажатия и освобождения кнопок “Мыши”
будут передаваться в окно, а события входа в окно и выхода из окна будут
игнорироваться. Поддерево окон перехватчика “владеет” курсором: прочие окна
будут видны на экране, но будут нечувствительны к нажатиям кнопок “Мыши” до тех
пор, пока не будет прекращен перехват. В поддерево модального окна могут входить
окна верхнего уровня; в этом случае все эти окна верхнего уровня и их потомки
обрабатывают события курсора “Мыши” при перехвате обычным образом.
С помощью команды grab можно запустить или прекратить перехват для
указанного окна и получить сведения об установленном для указанного окна
перехватчике.
Есть два типа перехватчиков: локальные и глобальные. Локальный перехватчик
влияет только на перехватывающее приложение, остальные приложения ведут себя
таким образом, как если бы никакого перехвата не было. По умолчанию перехватчики
локальные. Глобальный перехватчик блокирует все приложения на экране;
чувствительность к событиям указателя (нажатия и отпускания клавиши “Мыши”,
движения указателя, входы в окно и выходы из него) сохраняют только окна
поддерева модального окна. При действии глобального перехватчика менеджер окон
также нечувствителен к событиям указателя.
При действии локальных перехватчиков события клавиатуры (нажатие и отпускание
клавиш) передаются обычным образом: менеджер окон следит за тем, какое из
приложений получает событие клавиатуры, и всякое такое событие, относящееся к
перехватывающему приложению, перенаправляется в окно в фокусе. При действии
глобального перехватчика Tk перенаправляет все события клавиатуры в
перехватывающее приложение. Какое окно приложения получает событие клавиатуры,
по-прежнему определяется командой focus.
Перехват событий клавиатуры отменяется при прекращении действия перехватчика.
Перехватчики применяются к конкретным дисплеям. Если у приложения есть окна
на различных дисплеях, то оно может запустить отдельный перехватчик на каждом
дисплее. Перехватчик на конкретном дисплее воздействует только на окно на этом
дисплее. Несколько приложений могут запустить на одном дисплее локальные
перехватчики, но глобальный перехватчик на дисплее может быть только один.
Команда grab может иметь одну из следующих форм:
grab ?-global? окно
Совпадает с описанной ниже командой grab set.
grab current ? window?
Если задан параметр window, то команда возвращает имя текущего
модального окна в данном приложении; если такого окна нет, то команда возвращает
пустую строку. Если параметр window опущен, то команда возвращает список,
элементами которого являются все окна, захваченные данным приложением на всех
дисплеях; если таких окон нет, то команда возвращает пустую
строку.grab release окно
Отменяет перехватчика на указанном окне; если в окне нет
перехватчика, то команда не выполняет никаких действий. Команда возвращает
пустую строку.grab set ?-global? окно
Устанавливает перехватчик на окно. Если задан параметр-global,
то перехватчик будет глобальным; в противном случае он будет локальным. Если на
дисплее окна у приложения уже был перехватчик, то он автоматически отменяется.
Если на данном окне уже установлен перехватчик того же вида (глобальный или
локальный), что и запрошенный, то команда не выполняет никаких действий. Команда
возвращает пустую строку.grab status окно
Возвращает none, если в окне нет перехватчика, local,
если в окне установлен глобальный перехватчик, global,
если в окне установлен глобальный перехватчик.ОШИБКИ
Реализация описанного выше эффекта простого перехватчика оказалась
чрезвычайно сложной и громоздкой. В текущей реализации прямое использование
приложениями перехватчиков Xlib небезопасно; это нужно делать через процедуры
Tk.
Если несколько приложений Tk управляются одним процессом, то на данном
дисплее только одно из этих приложений может иметь локального перехватчика в
каждый конкретный момент. Этого ограничения нет для приложений, управляемых
различными процессами.
grid
Геометрический менеджер, который размещает виджеты в ячейках сетки.
СИНТАКСИС
grid option arg ?arg ...?ОПИСАНИЕ
Команда grid используется для управления соответствующим
геометрическим менеджером, размещающим виджеты по ячейкам сетки, и для получения
от него справочной информации. Команда может иметь перечисленные ниже формы в
зависимости от значения аргумента option.
grid slave ?slave ...? ?options?
Если первый аргумент команды является именем окна (любая величина,
начинающаяся с “.“), команда выполняется точно также, как команда grid
configure.grid bbox master ?column row?
?column2 row2?
Без аргументов команда возвращает размер ограничивающего прямоугольника для
сетки (в пикселях). Возвращаемая величина состоит из четырех чисел. Первые два
представляют собой расстояние от границы окна до левого верхнего угла сетки.
Следующие два числа представляют ширину и высоту сетки. Если указана
единственная колонка и строка, возвращается ограничивающий прямоугольник для
соответствующей ячейки сетки (счет слева сверху, начиная с нуля). Если указаны
два набора колонок и строк, то возвращается размер прямоугольника,
ограничивающего соответствующую область сетки.grid
columnconfigure master index ?-option value...?
Запрашивает или устанавливает свойства колонки для колонки сетки номер
index. Допустимые опции minsize, -weight и -pad.
Если одна или более опций указаны, index может быть списком номеров
колонок, для которых соответствующие значения опций должны быть
установлены.Опция — minsize устанавливает минимальный размер
колонки на экране.
Опция -weight (допустимые значения — целые числа) устанавливает
относительный вес, используемый при распределении свободного пространства между
колонками. Нулевой вес указывает, что колонка не будет расширяться. Колонка с
весом 2 будет расти вдвое быстрее, чем колонка с весом 1.
Опция -pad определяет размер полей, которые будут добавлены к размерам
максимального окна в колонке при определении необходимой ширины колонки.
Если в команде указана опция, а ее величина отсутствует, команда возвращает
установленное значение данной опции. Если не указана ни одна опция, команда
возвращает список опций и их значений в той же форме, в какой они задаются.
grid configure slave ?slave ...? ?options?
Аргумент(ы) slave представляют собой имена виджетов, которые
размещаются в ячейках сетки. За ними следуют пары аргументов, состоящие из имен
опций и их значений, которые управляют размещением виджетов. Символы ‘-’, ‘x’ и
‘^’ могут использоваться вместо имен виджетов, чтобы изменить их типовое
размещение (детально правила использования этих символов описано ниже (см. "Отосительное
размещение "). Допустимые имена опций:-column n
Вставляет виджет в n-ую колонку сетки. Номера колонок начинаются с
нуля. Если опция не указана, виджет вставляется правее предыдущего виджета,
вставленного той же командой grid, или в колонку ‘0’, если это первый
виджет в команде. Для каждого символа ‘x’ непосредственно перед именем виджета
номер колонки увеличивается на 1. То есть ‘x’ представляет пустую колонку в
текущем ряду сетки.-columnspan n
Вставляет виджет таким образом, что он занимает n колонок сетки. По
умолчанию виджет занимает одну колонку, если только после имени виджета не идет
символ ‘-’. В этом случае каждый последующий символ ‘-’ увеличивает на единицу
величину columnspan.-in other
Вставляет виджет(ы) в мастер-окно other. По умолчанию виджет
вставляется в непосредственного предка.-ipadx amount
Аргумент amount определяет горизонтальные внутренние поля, которые
вставляются в виджет(ы). Эти поля вставляются внутри границы виджета. Размер
должен быть указан в одной из форм, в которой можно задавать размеры на экране,
например, 2 (2 пикселя) или .5c (0.5 сантиметра). Значение по
умолчанию ‘0’.-ipady amount
Аргумент amount определяет вертикальные внутренние поля, которые
вставляются в виджет(ы). Эти поля вставляются внутри границы виджета. Размер
должен быть указан в одной из форм, в которой можно задавать размеры на экране,
например, 2 (2 пикселя) или .5c (0.5 сантиметра). Значение по
умолчанию ‘0’.-padx amount
Аргумент amount определяет горизонтальные внешние поля, которые
вставляются в виджет(ы). Эти поля вставляются вне границы виджета. Размер должен
быть указан в одной из форм, в которой можно задавать размеры на экране,
например, 2 (2 пикселя) или .5c (0.5 сантиметра). Значение по
умолчанию ‘0’.-pady amount
Аргумент amount определяет вертикальные внешние поля, которые
вставляются в виджет(ы). Эти поля вставляются вне границы виджета. Размер должен
быть указан в одной из форм, в которой можно задавать размеры на экране,
например, 2 (2 пикселя) или .5c (0.5 сантиметра). Значение по
умолчанию ‘0’.-row n
Вставляет виджет в n-ную строку сетки. Номера строк считаются с
нуля. Если опция не указана, виджет вставляется в ту же строку, что и предыдущий
виджет в данной команде grid, или в первую свободную строку, если это
правый виджет в команде.-rowspan n
Вставляет виджет таким образом, чтобы он занимал n строк. Значение
по умолчанию `1’. Если в следующей команде grid содержится символ “^”, то он
означает, что виджет, находящийся в этом же столбце в предыдущей строке, должен
быть расширен еще на одну строку вниз.-sticky style
Если виджет меньше размеров ячейки сетки, опция позволяет разместить (или
растянуть) виджет внутри ячейки. Аргумент style является строкой,
содержащей одну или несколько из букв n, s, e или w. Строка
может содержать пробелы или запятые, но они игнорируются. Каждая из букв
означает одну из сторон ячейки, к которой виджет будет “приклеен“. Если в строке
содержатся символы для двух противоположных сторон, например, n и
s (или e и w), виджет будет увеличен таким образом, чтобы
заполнить всю высоту (или ширину) ячейки. Таким образом опция -sticky
заменяет сразу опции -anchor и -fill для менеджера pack.
Значение по умолчанию — пустая строка, которая означает, что виджет будет
размещен в центре ячейки и будет иметь свой естественный размер.Если
какой-либо из виджетов, перечисленных в команде, уже размещен в сетке, а в
команде для него указаны не все возможные опции, для остальных опций
используются предыдущие значения, а не значения по умолчанию.
grid forget slave ?slave ...?
Удаляет виджет(ы) из сетки и с экрана. Они больше не управляются менеджером
grid. Значения опций для удаляемых виджетов не сохраняются,
так что если виджет будет через некоторое время помещен в сетку, для него будут
использоваться значения опций по умолчанию.grid info
slave
Возвращает список опций и их значений для окна slave в той же форме, в
какой они задаются в команде grid configure. Первые два элемента списка —
``-in master'', где “master'' — имя окна, в
котором размещается slave.grid location
master x y
Аргументы x и y должны быть координатами в системе координат
мастер окна. Команда возвращает номер колонки и строки, в которой находится
точка с координатами x и y. Если она расположена выше или левее
сетки, возвращается `-1’.grid propagate master
?boolean?
Аргумент boolean, если он задан, определяет, будет ли окно
master расширяться при необходимости (подробное описание опции см. "Распространение
размеров"). Команда при этом возвращает пустую строку. Если аргумент не
задан, команда возвращает текущее значение опции (`0' или `1'). По умолчанию
расширение разрешено.grid rowconfigure master index
?-option value...?
Запрашивает или устанавливает свойства строки для строки сетки номер
index. Допустимые опции minsize, -weight и -pad.
Если одна или более опций указаны, index может быть списком номеров
строк, для которых соответствующие значения опций должны быть
установлены.Опция -minsize устанавливает минимальный размер
строки на экране.
Опция -weight (допустимые значения — целые числа) устанавливает
относительный вес, используемый при распределении свободного пространства между
строками. Нулевой вес указывает, что строка не будет расширяться. Строка с весом
2 будет расти вдвое быстрее, чем строка с весом 1.
Опция -pad определяет размер полей, которые будут добавлены к размерам
максимального окна в строке при определении необходимой ширины колонки.
Если в команде указана опция, а ее величина отсутствует, команда возвращает
установленное значение данной опции. Если не указана ни одна опция, команда
возвращает список опций и их значений в той же форме, в какой они задаются.
grid remove slave ?slave ...?
Удаляет виджет(ы) из сетки и с экрана. Они больше не управляются менеджером
grid. Однако, значения опций для них сохраняются, так что если виджет
будет через некоторое время помещен в сетку, для него будут использоваться
прежние значения опций.grid size master
Возвращает размер сетки (в колонках и строках) для окна master.
Размер определяется наибольшим номером строки или столбца, в которых размещен
виджет или задано ненулевое значение одной из опций -minsize,
-weight или -pad.grid slaves master
?-option value?
Если опции не заданы, возвращает список всех виджетов, размещенных в сетке
(размещенные позже в списке стоят раньше). Допустимые опции -row и
-column. Если они указаны, команда возвращает список виджетов,
размещенных в соответствующей строке или столбце.ОТНОСИТЕЛЬНОЕ РАЗМЕЩЕНИЕ
Команда grid содержит ограниченный набор возможностей для размещения
виджетов без явного указания строк и колонок для каждого. Если номер строки или
колонки не указан явно, он рассчитывается в момент размещения виджета исходя из
текущего заполнения сетки, позиции виджета относительно других виджетов и
наличия в команде специальных символов “-”, “x” и “^” вместо имен виджетов.
-
Этот символ увеличивает значение опции -columnspan для виджета
слева. Несколько символов “-“ подряд означают последовательное увеличение
значения опции -columnspan. Символ “-“ не может стоять после “^” или
“x”.
x
Этот символ оставляет пустую колонку между виджетом слева и виджетом
вправа.
^
Этот символ увеличивает значение опции -rowspan для виджета в
соответствующей колонке предыдущей строки. Число и расположение символов “^“ в
строке должно соответствовать числу и расположению расширяемых виджетов в
предыдущей строке.АЛГОРИТМ
РАЗМЕЩЕНИЯ grid
Геометрический менеджер grid размещает виджеты в окне в три
шага. На первом шаге определяются минимальные размеры, необходимые для
размещения всех виджетов и (если распространение размеров разрешено) формируется
запрос на изменение размеров мастер-окна. На втором шаге необходимые размеры
сравниваются с реальными размерами мастер-окна. Если они не совпадают, то
размеры виджетов пересчитываются соответствующим образом. На третьем шаге каждый
виджет размещается в своей колонке (колонках) и строке (строках) в соответствии
со значением опции -sticky.
Чтобы определить минимальные размеры, необходимые для колонок и строк,
геометрический менеджер сначала рассматривает те виджеты, у которых значения
обеих опций -columnspan и -rowspan равны `1’, рассчитывает их
размер и определяет минимальный размер колонок и строк как максимум из
соответствующих размеров размещаемых в них виджетов (включая поля) и значения
соответствующей опции -minsize. После этого рассматриваются виджеты со
значением опции -columnspan или -rowspan больше единицы. Если
отведенная группа колонок или строк мала для такого виджета, тогда
дополнительный размер распределяется между членами группы пропорционально
значениям их опций -weight. Если все члены группы имеют нулевой вес, они
получают одинаковое приращение размеров.
Для мастер окон, размер которых оказался больше необходимого, дополнительное
пространство распределяется пропорционально весам колонок и строк
соответственно. Если все веса нулевые, виджеты размещаются в центре мастер-окна.
Если размер мастер-окна меньше необходимого, то размеры колонок и строк
уменьшаются пропорционально их весам. Однако, если размер колонки или строки
уменьшился до значения соответствующей опции -minsize, ее вес считается
равным нулю. Если все строки или колонки уменьшены до размеров, равных значениям
опций -minsize, и требуется дальнейшее уменьшение размеров, группа
виджетов обрезается справа и снизу.
РАСПРОСТРАНЕНИЕ РАЗМЕРОВ
Обычно менеджер рассчитывает размеры мастер-окна, необходимые для
размещения виджетов, и, при необходимости, устанавливает размеры мастер окна
таким образом, чтобы в нем в точности поместились все необходимые виджеты. Это
приводит к тому, что информация о размерах виджетов распространяется по
иерархическому дереву виджетов, в результате чего целое поддерево изменяет свои
размеры при изменении одного из листьевых элементов. Однако, команда grid
propagate может быть использована для отключения этого механизма для одного
или нескольких мастер-окон. Если распространение размеров отключено, информация
о необходимых размерах не передается мастер-окну. Это может оказаться полезным,
если вы хотите, чтобы мастер-окно сохраняло те размеры, которые вы
определили.ОГРАНИЧЕНИЯ НА
МАСТЕР-ОКНА
Мастер-окно для каждого размещаемого виджета должно быть его
непосредственным предком (по умолчанию) или одним из потомков его предка. Это
ограничение гарантирует разумное поведение виджетов при удалении
toplevel-окон.ПОРЯДОК РАЗМЕЩЕНИЯ
Если мастер-окно для виджета не является его непосредственным предком,
необходимо быть уверенным, что виджет лежит в стеке окон выше, чем мастер-окно.
В противном случае мастер-окно закроет собой виджет и создастся впечатление, что
виджет не упакован правильным образом. Простейший способ избежать подобных
проблем — следить, чтобы мастер-окно было создано раньше, чем виджет: чем позже
создано окно, тем выше оно в стеке. Если это почему-либо неудобно, можно
использовать команды raise и
lower для
изменения порядка окон в стеке.
image
Создание изображений и манипулирование ими
СИНТАКСИС
image параметр ?арг арг ...?ОПИСАНИЕ
Команда image предназначена для создания и удаления изображений, а
также для получения информации о них. В зависимости от значения параметра она
может иметь различные формы. Допустимы следующие формы команды:
image create тип ?имя?
?параметр значение...?
Создает новое изображение и возвращает его имя. Аргумент тип задает
тип изображения, который должен быть одним из типов, определенных на момент
выполнения команды (например, bitmap). Аргумент имя задает имя
изображения; если он опущен, то Tk генерирует имя вида imagex, где x —
целое число. В команде может присутствовать произвольное число пар
параметр-значение, задающих значения параметров конфигурации для нового
изображения. Для каждого типа изображения набор допустимых параметров свой;
параметры для встроенных типов изображений подробно описаны ниже. Если
изображение с указанным именем уже существует, то новое изображение подменит
его, а каждая его реализация заменится на реализацию нового
изображения.image delete ?имя имя...?
Удаляет каждое из названных изображений; возвращает пустую строку. Если в
примитивах имеются реализации удаляемого изображения, то фактическое удаление не
будет произведено до удаления всех реализаций. Однако связь между реализациями
изображения и менеджером изображений разрывается. Существующие реализации
сохранят свои размеры, однако станут пустыми. Если удаленное изображение будет
воссоздано командой image create, то его реализации заполнятся новым
содержимым.image height имя
Возвращает десятичную строку, представляющую собой высоту в пикселах
изображения с именем имя.image names
Возвращает список имен всех существующих изображений.
image type имя
Возвращает тип изображения с именем имя (т.е. значение аргумента тип
при создании изображения командой image
create).image types
Возвращает список всех допустимых типов изображений (т.е. всех возможных
значений параметра тип команды image
create).image width имя
Возвращает десятичную строку, представляющую собой ширину в пикселах
изображения с именем имя.ВСТРОЕННЫЕ ТИПЫ ИЗОБРАЖЕНИЙ
Следующие типы изображений определены непосредственно в Tk — они будут
доступны в любом приложении. Отдельные приложения или расширения могут
определять дополнительные типы.
bitmap
Каждый пиксель такого изображения имеет либо цвет переднего плана, либо цвет
фона, либо не имеет никакого цвета. Подробнее такие изображения описаны в в
разделе. bitmap
photo
Предназначен для вывода полноцветных изображений с использованием поправок
для приближения цветов на мониторах с ограниченными цветовыми возможностями.
Подробнее такие изображения описаны в разделе photo.
label
Команда создает и управляет примитивами ярлыков.
СИНТАКСИС
label имяПути параметрыСТАНДАРТНЫЕ ПАРАМЕТРЫ
-anchor |
-font |
-image |
-takefocus |
-background |
-foreground |
-justify |
-text |
-bitmap |
-highlightbackground |
-padx |
-textvariable |
-borderwidth |
-highlightcolor |
-pady |
-underline |
-cursor |
-highlightthickness |
-relief |
-wraplength |
|
Подробное описание этих параметров приведено в разделе oрtions.ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ
ПРИМИТИВА
Имя параметра: -height
Имя в Базе: height
Класс в
Базе: Height
Задает желаемую высоту ярлыка. Если в ярлыке выводится изображение или
двуцветное изображение, то значение параметра задается в пикселях (т.е., в любом
виде, приемлемом для Tk_GetPixels); высота текстового ярлыка задается
числом строчек текста. Если параметр не задан, то высота ярлыка вычисляется по
его содержимому.
Имя параметра: -width
Имя в Базе: width
Класс в Базе:
WidthЗадает желаемую ширину ярлыка. Если в ярлыке выводится
изображение или двуцветное изображение, то значение параметра задается в
пикселях (т.е., в любом виде, приемлемом для Tk_GetPixels); ширина
текстового ярлыка задается числом символов. Если параметр не задан, то ширина
ярлыка вычисляется по его содержимому.ОПИСАНИЕ
Команда label создает новое окно (задаваемое аргументом
имяПути) и превращает его в примитив ярлыка. Детали изображения ярлыка,
такие как его цвета, шрифт, текст и исходный объемный вид задаются с помощью
описанных выше дополнительных параметров. Команда label возвращает
аргумент имяПути. В момент выполнения этой команды не должно существовать
окна с именем имяПути, но должен существовать его предок.
Ярлык представляет собой примитив, в котором выводится текстовая строка,
изображение или двуцветное изображение. Весь выводимый текст должен быть записан
одним шрифтом, однако он может занимать несколько строчек на экране (если в нем
есть символы перевода строки или задан параметр wrapLength). Один из
символов текста может быть подчеркнут (в соответствии со значением параметра
underline). Есть несколько простых способов управления ярлыком (например,
изменения его формы или редактирования текста в нем), они описаны
ниже.
КОМАНДА ПРИМИТИВА
Команда label создает новую команду Tcl с именем имяПути. С
помощью этой команды можно выполнять различные операции над примитивом. Ее общий
вид
имяПути параметр арг арг ...
Параметр и аргументы уточняют поведение команды. Примитивы
ярлыка допускают следующие формы команды:имяПути cget
параметр
Возвращает текущее значение параметра конфигурации с именем
параметр. Параметрможет быть любым из параметров команды
label.имяПути configure параметр
значение параметр значение ...
Запрашивает значения параметров конфигурации примитива или изменяет их.
Если параметр не указан, то возвращает список, содержащий значения всех
допустимых в имениПути параметров (формат списка описан
вTk_ConfigureInfo). Если параметр задан, а его новое
значение — нет, то команда возвращает часть полного списка, относящуюся к
указанному параметру. Если заданы одна или несколько пар параметр-значение, то
указанным параметрам примитива присваиваются новые значения, а
команда возвращает пустую строку. Параметр может быть любым из параметров
команды button.ПРИВЯЗКИ
При создании нового ярлыка он не имеет привязок по умолчанию: ярлыки не
предполагаются интерактивными.
listbox
Команда создает и управляет примитивами окон со списками.
Синтаксис
Стандартные
параметры
Дополнительные
параметры примитива
Описание
Индексы
Команда
примитива
Параметры
по умолчанию СИНТАКСИС
listbox имяПути параметрыСТАНДАРТНЫЕ ПАРАМЕТРЫ
-background |
-foreground |
-relief |
-takefocus |
-borderwidth |
-height |
-selectbackground |
-width |
-cursor |
-highlightbackground |
-selectborderwidth |
-xscrollcommand |
-font |
-highlightthickness |
-setgrid |
Подробное описание этих параметров приведено в разделе options.ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ
ПРИМИТИВА
Имя параметра: -height
Имя в Базе:
height
Класс в Базе: HeightЗадает желаемую высоту окна
(число строчек текста в нем). Если значение параметра неположительно, то высота
окна выбирается таким образом, чтобы в нем помещались все элементы списка.
Имя параметра: -selectmode
Имя в Базе:
selectMode
Класс в Базе: SelectMode
Задает один из нескольких стилей управления выделением. Параметр может
принимать произвольное значение, однако привязки по умолчанию предполагают, что
его значение является одним из следующих: single, browse, multiple
или listbox. По умолчанию параметр имеет значение browse.
Имя параметра: -width
Имя в Базе: width
Класс в Базе:
Width
Задает желаемую ширину окна (число символов в строчке текста в нем). Если
ширина символа в данном шрифте непостоянна, то для перевода числа символов в
единицы экрана используется ширина символа “0”. Если значение параметра
неположительно, то ширина окна выбирается таким образом, чтобы в нем помещались
все элементы списка.
ОПИСАНИЕ
Команда listbox создает новое окно (задаваемое аргументом
имяПути) и превращает его в примитив окна со списком. Детали изображения
кнопки, такие как ее цвет, шрифт, текст и объемный вид, задаются с помощью
описанных выше дополнительных параметров. Команда listbox возвращает
аргумент имяПути. В момент выполнения этой команды не должно существовать
окна с именем имяПути, но должен существовать его предок.
Окно со списком представляет собой примитив, в котором выводятся строки —
элементы списка — по одному на строчку окна. С помощью описываемых ниже команд
примитива в список можно добавлять новые элементы или удалять элементы оттуда.
Кроме того, можно выделить один или несколько элементов, как описано ниже.
Экспорт выделенного текста (см. описание параметра exportSelection)
осуществляется по стандартному протоколу X11 для выделений; выделения в поле
ввода имеют тип STRING. Значение строки выделения составляется из
выделенных элементов, разделенных символами перехода на новую строчку.
Все элементы списка не обязательно выводятся в окне со списком одновременно.
Содержимое окна можно поменять с помощью описываемых ниже команд. Окна со
списком поддерживают прокрутку в обоих направлениях с помощью стандартных
параметров xScrollCommand и yScrollCommand. Кроме того, возможно
сканирование окон (см. описание ниже).
ИНДЕКСЫ
Аргументами многих команд примитива окна со списком служат индексы. Индекс
задает положение конкретного элемента в окне со списком. Он может иметь один из
следующих видов:
число
Задает номер элемента в списке. Первый элемент имеет номер 0.
active
Задает элемент, на котором расположен курсор списка. Если примитив находится
в фокусе клавиатуры, то этот элемент подчеркивается. Он устанавливается командой
примитива activate.
anchor
Задает опорную точку выделения, которую устанавливает команда примитива
selection anchor.
end
Указывает конец списка. Для большинства команд это последний элемент списка,
однако некоторые команды, такие как index и insert считают его
элементом, следующим непосредственно за последним элементом списка.
@x,y
Указывает элемент, накрывающий точку в окне со списком с координатами
(x,y) (заданными в пикселях). Если заданная точка не накрывается ни одним
элементом, то указывает элемент, ближайший к этой точке.
Аргументы с именами индекс, первый и последний в
описываемых ниже командах примитива представляют собой индексы в одной из
описанных выше форм.
КОМАНДА ПРИМИТИВА
Команда listbox создает новую команду Tcl с именем
имяПути. С помощью этой команды можно выполнять различные операции над
примитивом. Ее общий вид
имяПути параметр арг арг ...
Параметр и аргументы уточняют поведение команды. Примитивы
окна со списком допускает следующие формы команды:имяПути
activate индекс
Делает активным элемент, указанный аргументом индекс. Если значение
аргумента индекс выходит за пределы списка, то активным становится
элемент, ближайший к указанному. Если окно со списком находится в фокусе ввода,
то активный элемент в нем выделен подчеркиванием, а доступ к нему осуществляется
через индекс active.имяПути bbox
индекс
Возвращает список из четырех элементов, описывающий клетку, занимаемую
текстом в элементе, указанном параметром индекс. Первые два элемента
списка задают x- и y-координаты верхнего левого угла клетки (в пикселях по
отношению к примитиву), последние два элемента — ширину и высоту области (в
пикселях). Если на экране не видна никакая часть элемента или если индекс
указывает на несуществующий элемент, то команда возвращает пустую строку. Если
же на экране видна хотя бы часть элемента, то результатом выполнения команды
служит описание всей области, занимаемой элементом (в том числе и его невидимой
частью).имяПути cget параметр
Возвращает текущее значение параметра конфигурации с именем параметр.
Параметр может быть любым из параметров команды
listbox.имяПути configure параметр
значение параметр значение ...
Запрашивает значения параметров конфигурации примитива или изменяет их.
Если параметр не указан, то возвращает список, содержащий значения всех
допустимых в имениПути параметров (формат списка описан в
Tk_ConfigureInfo). Если параметр задан, а его новое
значение — нет, то команда возвращает часть полного списка, относящуюся к
указанному параметру. Если заданы одна или несколько пар параметр-значение, то
указанным параметрам примитива присваиваются новые значения. В этом
случае команда возвращает пустую строку. Параметр может быть любым из параметров
команды listbox.
имяПути curselection
Возвращает список, состоящий из числовых значений индекса всех выделенных
элементов. Если ни один из элементов не выделен, то возвращает пустую
строку.имяПути delete первый последний
Удаляет один или несколько элементов списка. Аргумент первый
является индексом первого, а аргумент последний — индексом последнего
удаляемого элемента. По умолчанию значение аргумента последний совпадает со
значением аргумента первый, т.е. удаляется один
элемент.имяПути get первый последний
Если аргумент последний не задан, то возвращает содержимое элемента
списка, заданного аргументом первый (или пустую строку, если первый
указывает на несуществующий элемент). Если аргумент последний задан, то команда
возвращает список, элементами которого являются все элементы окна между
первым и последним (включая оба эти элемента). Значением каждого
из аргументов первый и последний может быть любое допустимое значение
индекса.имяПути index индекс
Команда возвращает числовое значение индекса, заданного аргументом
индекс. Если аргумент индекс имеет значение end, то
возвращаемое значение равно числу элементов в списке (а не индексу последнего
элемента).имяПути insert индекс элемент элемент
...
Вставляет элементы непосредственно перед элементом, на который указывает
аргумент индекс. Если аргумент индекс имеет значение
end, то новые элементы вставляются в конец списка. Команда возвращает
пустую строку.имяПути nearest y
По заданному значению y-координаты в окне со списком возвращает индекс
ближайшего к этому значению (видимого) элемента
списка.имяПути scan параметр аргументы
Осуществляет сканирование окна со списком. В зависимости от значения
параметра может иметь две различные формы:
имяПути scan mark x y
Запоминает значение координаты x и текущее состояние окна со списком;
используется в сочетании с последующими командами scan dragto. Обычно эта
команда связана с нажатием клавиши “Мыши” на примитиве. Возвращает пустую
строку.имяПути scan dragto x y
Вычисляет разность между значением своих аргумента x и y и
значениями аргументов x и y последней выполненной на данном
примитиве команды scan mark. Затем переносит изображение примитива на
расстояние, в 10 раз превышающее вычисленную разность. Команда обычно связана с
событиями движения “Мыши” в примитиве и используется для скоростного
перетаскивания списка в окне. Возвращает пустую
строку.имяПути see индекс
Выравнивает список в окне так, чтобы элемент с индексом индекс
оказался видимым. Если этот элемент уже является видимым, то команда не
производит никаких действий. Если указанный элемент находится возле края окна,
то при прокрутке списка элемент оказывается возле того же края; в противном
случае указанный элемент выводится в центре окна.имяПути
selection параметр аргумент
Производит размещение выделения в окне со списком. Команда может иметь одну
из описанных ниже форм.имяПути selection anchor
индекс
Устанавливает опорную точку выделения на элемент, указанный
аргументом индекс. Если индекс указывает на несуществующий
элемент, то опорным становится элемент, ближайший к указанному. Опорная точка
выделения является фиксированным концом выделения при движении “Мыши” с нажатой
клавишей. На опорную точку выделения указывает индекс
anchor.имяПути selection clear первый
последний
Отменяет выделение элементов между первым и последним. Вне
этого интервала выделение не изменяется.имяПути selection
includes индекс
Возвращает “1”, если элемент, указанный аргументом индекс, выделен, и ‘0’ в
противном случае.имяПути selection set первый
последний
Выделяет все элементы в промежутке между первым и последним; на выделение
вне указанного интервала команда влияния не оказывает.имяПути
xview аргументы
Используется для запроса горизонтального положения информации, выведенной в
окне примитива, и изменения этого положения. Команда может иметь одну из
следующих форм:
имяПути xview
Возвращает список, состоящий из двух элементов. Каждый из элементов списка
представляет собой вещественное число, заключенное между нулем и единицей; эта
пара чисел описывает видимый в окне горизонтальный интервал. Так, например, если
первое число равно “.2”, а второе “.6”, то 20% текста в окне со списком
оказывается невидимой слева от окна, в окне выводится 40% информации, и еще 40%
оказывается невидимой справа от окна. Те же значения передаются полосе прокрутки
через параметр -xscrollcommand.имяПути xview
индекс
Переносит строку в поле ввода так, что самым левым символом в окне
становится символ, положение которого указано аргументом индекс. Положения
символов определяются исходя из ширины символа 0.имяПути
xview moveto число
Передвигает область видимости так, что слева от окна остается невидимой
часть текста списка, указанная аргументом число. Число должно быть
заключено между ‘0’ и `1’.имяПути xview scroll количество
что
Сдвигает выводимый в окне текст вправо или влево в соответствии со
значениями аргументов. Количество должно быть целым числом, аргумент
что может принимать значения units или pages или быть
сокращением одного из этих слов. Если аргумент что принимает значение
units, то сдвиг происходит на количество символов средней ширины
(ширины символов 0). Если значением аргумента что является
pages, то сдвиг осуществляется на количество полных экранов. Если
количество отрицательно, то видимые символы сдвигаются вправо, в
противном случае — влево.имяПути yview
аргументы
Используется для запроса вертикального положения информации, выведенной в
окне примитива, и изменения этого положения. Команда может иметь одну из
следующих форм:
имяПути yview
Возвращает список, состоящий из двух элементов. Каждый из элементов списка
представляет собой вещественное число, заключенное между нулем и единицей.
Первый элемент списка задает положение в списке первого видимого в окне элемента
(например, значение “0.5” указывает на середину списка). Второй элемент
указывает положение в списке элемента, следующего непосредственно за последним
видимым в окне. Те же значения передаются полосе прокрутки через параметр
-xscrollcommand.имяПути yview индекс.
Переносит содержимое окна со списком таким образом, чтобы элемент, заданный
аргументом индекс, оказался в первой строчке окна.имяПути yview
moveto число
Переносит содержимое окна со списком таким образом, чтобы элемент, заданный
аргументом число, оказался в первой строчке окна. Число должно
быть заключено между ‘0’ и `1’. ‘0’ указывает на первый элемент в списке,
“0.33” указывает на элемент, отстоящий от начала списка на одну треть, и
т.д.имяПути yview scroll количество что
Сдвигает выводимый в окне текст вверх или вниз в соответствии со значениями
аргументов. Количество должно быть целым числом, аргумент что
может принимать значения units или pages или быть
сокращением одного из этих слов. Если аргумент что принимает значение
units, то сдвиг происходит на количество строчек. Если значением
аргумента что является pages, то сдвиг осуществляется на
количество полных экранов. Если количество отрицательно, то
видимые символы сдвигаются вниз, в противном случае —
вверх.ПАРАМЕТРЫ ПО УМОЛЧАНИЮ
При создании окна со списком Tk автоматически создает параметры класса,
определяющие его поведение по умолчанию. Поведение окна со списком в
значительной степени определяется значением параметра selectMode,
задающим один из четырех режимов работы с выделением.
В режиме выделения single или browse допустимо выделение не
более одного элемента. В обоих режимах щелчок клавишей 1 “Мыши” на элементе
приводит к его выделению и отмене всех остальных выделений. В режиме
browse выделенный элемент можно также перетащить с помощью клавиши 1
“Мыши”.
В режимах выделения multiple или extended можно одновременно выделить
несколько элементов, не обязательно идущих в списке подряд. В режиме multiple
щелчок клавиши 1 “Мыши” на элементе переключает состояние его выделенности, не
влияя на выделение остальных элементов. В режиме extended нажатие клавиши на
элементе выделяет его, отменяет выделение всех остальных элементов и
устанавливает опорную точку выделения на элемент под курсором “Мыши”; если при
этом тащить “Мышь” с нажатой клавишей 1, то выделение распространится на
все элементы между опорным и элементом, находящимся под сдвинувшимся курсором
“Мыши”.
В большинстве случаев для одиночных выделений используется режим browse, а
для кратных — режим extended; остальные режимы оказываются полезными в некоторых
особых ситуациях.
Помимо описанного выше поведения привязки по умолчанию задают следующие
дополнительные характеристики поведения примитива:
В режиме extended выделенную область можно изменить нажатием клавиши 1
при нажатой клавише Shift; при этом выделенной становится вся область
между опорной точкой и элементом под курсором “Мыши”.
В режиме extended нажатие клавиши 1 при нажатой клавише Control
начинает выполнение операции переключения: опорная точка устанавливается на
элемент под курсором “Мыши”, а состояние его выделения меняется на
противоположное. Выделение остальных элементов не изменяется. Если тащить “Мышь”
с нажатой клавишей 1, то состояние выделения всех элементов между опорной точкой
и курсором “Мыши” меняется на состояние выделения опорного элемента; выделение
остальных элементов не изменяется.
Если “Мышь” сдвигается с окна со списком при нажатой клавише 1, то информация
в окне прокручивается в противоположном направлении. Прокрутка продолжается до
тех пор, пока либо “Мышь” не вернется в область окна, либо будет достигнут конец
списка.
Для прокрутки можно использовать клавишу 2 “Мыши”. Если ее нажать и протащить
“Мышь” по списку, то содержимое списка будет прокручиваться в направлении
движения “Мыши”.
При нажатии на клавиши Up или Down курсор окна (активный
элемент) передвигается на одну строчку вверх или вниз. В режиме browse
или extended новый активный элемент оказывается выделенным, а выделение
всех остальных элементов отменяется. В режиме extended новый активный
элемент становится опорной точкой выделения.
В режиме extended клавиши Shift-Up и Shift-Down
передвигают курсор окна на одну строчку вверх или вниз и расширяют область
выделения новым активным элементом подобно тому, как это делает клавиша 1
“Мыши”.
Нажатие на клавиши Left или Right приводит к перемещению
курсора ввода на ширину символа 0 влево или вправо.
Нажатие на клавиши Control-Left и Control-Right приводит к
прокрутке списка на ширину окна, также, как и нажатие на клавиши
Control-Prior и Control-Next.
Нажатие на клавиши Prior и Next приводит к прокрутке списка на
одну страницу (на высоту окна) вверх или вниз.
Нажатие на клавиши Home и End прокручивает список горизонтально
до его левого или правого края соответственно.
Нажатие на клавиши Control-Home устанавливает курсор окна на первый
элемент списка, выделяет этот элемент и отменяет выделение всех остальных
элементов.
Нажатие на клавиши Control-End устанавливает курсор окна на последний
элемент списка, выделяет этот элемент и отменяет выделение всех остальных
элементов.
В режиме extended нажатие на клавиши Control-Shift-Home
расширяет выделение до первого элемента в списке, а на клавиши
Control-Shift-End — до последнего элемента в списке.
В режиме multiple нажатие на клавиши Control-Shift-Home
устанавливает курсор окна на первый элемента в списке, а на клавиши
Control-Shift-End — на последний элемент в списке.
Клавиши пробела и Select выделяют активный элемент (курсор
окна), как если бы на этом элементе была нажата клавиша1 “Мыши”.
В режиме extended нажатие на клавиши Control-Shift-пробел и
Shift-Select расширяет выделение до активного элемента, как если бы
на этом элементе была нажата клавиша 1 “Мыши” при нажатой клавише
Shift.
В режиме extended нажатие на клавиши Escape отменяет самое
последнее выделение и восстанавливает предыдущее состояние выделение всех
элементов в области выделения.
Control-/ выделяет все элементы окна.
Control-\ приводит к отмене текущего выделения (за исключением режима
browse, где эта команда не приводит ни к какому результату).
Клавиша F16, на многих станциях Sun обозначенная Copy,
(или Meta-w) копирует выделение в примитиве в карман.
Определяя новые параметры для отдельных примитивов или переопределяя
параметры класса, поведение окна со списком можно изменить.
lower
Команда изменяет положение окна в очереди стека.СИНТАКСИС
lower window ?belowThis?ОПИСАНИЕ
Команда
lower перемещает окно
window в очереди стека либо ниже
всех окон, имеющих одинаковый с
window уровень иерархии, либо после
одного из них, заданного аргументом
belowThis. Окна, оказавшиеся выше
данного окна, заслоняют его.
menu
Создание примитива меню и управление им.
СИНТАКСИС
menu имяПути параметрыСТАНДАРТНЫЕ ПАРАМЕТРЫ
-activebackground |
-disabledforeground |
-background |
-relief |
-activeborderwidth |
-borderwidth |
-font |
-takefocus |
-activeforeground |
-cursor |
-foreground |
|
Подробное описание этих параметров приведено в разделе options.ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ
ПРИМИТИВА
Имя параметра: -postcommand
Имя в Базе: postCommand
Класс в Базе: PostCommandЗадает команду Tcl, которая должна
выполняться при каждом выводе меню. Эта команда выполняется командой примитива
post непосредственно перед выводом меню. В версии 8.0 операционной
системы Macintosh и в Windows все команды системы меню выполняются перед выводом
меню. Это объясняется ограничениями, накладываемыми конкретными системами
управления меню данных платформ.
Имя параметра: -selectcolor
Имя в Базе:
selectColor
Класс в Базе: Background
Задает цвет индикатора при выделении входа меню, представляющего собой
защелкивающуюся кнопку или переключатель.
Имя параметра: -tearoff
Имя в Базе: tearOff
Класс в Базе: TearOff
Принимает булевское значение, указывающее, должен ли вверху меню быть
ключ отрыва. Если значение параметра истина, то ключ отрыва имеет номер ноль, а
нумерация последующих входов в меню начинается с единицы.
Имя параметра: - tearoffcommand
Имя в
Базе: tearOffCommand
Класс в Базе: TearOffCommand
Если значение этого параметра не пустая строка, то оно задает команду,
которая должна выполняться при каждом отрыве от меню. В действительности
выполняемая команда состоит из указанной строки, за которой следуют имя меню и
имя окна меню отрыва (отделенные от строки команды и друг от друга пробелами).
Если, например, параметр имеет значение “a b” и в результате отрыва от
меню .x.y должно быть создано новое меню .x.tearoff1, то будет
выполнена команда “a b .x.y .x.tearoff1”.
Имя параметра: -title
Имя в Базе: title
Класс в Базе:
TitleСтрока — значение параметра задает имя окна, создаваемого при
отрыве от данного меню. Если значением параметра служит NULL, то именем окна
станет либо имя кнопки меню, либо содержимое элемента каскада, из которого
выполняется данное меню.
Имя параметра: -type
Имя в Базе: type
Класс в Базе:
TypeПараметр может принимать одно из значений menubar,
tearoff или normal; это значение устанавливается при создании меню.
При изменении значения меняется строка, возвращаемая конфигурационной базой
данных, однако это не оказывает влияния на поведение примитива меню. Это
свойство используется механизмом клонирования и обычно не применяется за
пределами библиотеки Tk.ВВЕДЕНИЕ
Команда menu создает новое окно (заданное аргументом имяПути)
и превращает его в примитив меню. Детали изображения меню, такие как его цвета и
шрифты, задаются с помощью описанных выше дополнительных параметров в командной
строке или в базе данных параметров. Команда menu возвращает имя пути
нового окна. В момент выполнения команды не должно быть окна с именем
имяПути, однако его непосредственный предок должен существовать.
Меню представляет собой примитив, предназначенный для вывода совокупности
однострочных входов, разбитых на несколько колонок (быть может, одну). Входы
бывают различных типов и имеют соответственно различные свойства. Входы
различных типов могут содержаться в одном и том же меню. Вход меню (menu entry)
— совсем не то же самое, что примитив поля ввода (entry). Более того, вход меню
не является отдельным примитивом — все вместе они образуют примитив меню.
При выводе вход меню может содержать до трех различных полей. Главное поле
представляет собой метку входа; оно содержит строку текста, изображение или
двуцветное изображение в зависимости от значения параметров входа -label,
-bitmap и -image. Если для данного входа задан параметр
-accelerator, то справа от метки появляется второе текстовое поле. Этот
параметр обычно описывает совокупность клавиш, нажатие на которые приводит к
тому же результату, что и выбор данного входа в меню. Третье поле представляет
собой индикатор. Индикатор применяется только для защелкивающихся входов
или переключателей. Он указывает, выделен или нет данный вход, и располагается
слева от строки входа.
При обычном использовании вход становится активным (при этом меняется вид
строки), если на нем расположен курсор “Мыши”. Если клавишу “Мыши” в таком
положении отпустить, то вход будет выполнен. Результат выполнения зависит от
типа входа. Подробное описание результатов приведено ниже при описании
конкретных типов входов.
Входы могут быть отключены (disabled); изображение такого входа тускнеет.
Привязки меню по умолчанию блокируют активизацию и выполнение команды для
отключенного входа. Отключенный вход может быть снова подключен, после чего его
вновь можно активизировать и выполнять соответствующую команду.
При изменении активного входа в меню в нем происходит виртуальное событие
<<MenuSelect>>. В результате из меню можно запросить активный
вход и предпринять какие-либо действия (например, вывести соответствующую
контекстно-зависимую подсказку).
КОМАНДНЫЕ ВХОДЫ
Наиболее распространенным типом входа в меню является командный вход,
который ведет себя подобно примитиву кнопки. При запуске командного входа
выполняется команда Tcl, заданная параметром -command.ВХОДЫ-РАЗДЕЛИТЕЛИ
Разделитель представляет собой вход, предназначенный для вывода
горизонтальной разделительной черты. Разделитель нельзя сделать активным или
выполнить, никакого поведения разделителя, отличного от вывода черты не
предусмотрено.ЗАЩЕЛКИВАЮЩИЕСЯ
ВХОДЫ
Защелкивающийся вход ведет себя подобно защелкивающейся кнопке. При щелчке
на таком входе происходит переключение из выделенного состояния в невыделенное и
обратно. В выделенном состоянии в некоторую глобальную переменную (указанную
параметром -variable) заносится значение, фиксированное параметром
-onvalue; при отмене выделения в эту глобальную переменную заносится другое
значение, фиксированное параметром -offvalue. Слева от метки
защелкивающегося входа изображается квадратик-индикатор. Если вход выделен, то
центральная часть индикатора окрашивается в цвет, указанный параметром
-selectcolor для входа; в противном случае цвет индикатора совпадает с
цветом фона меню. Если для данного входа задано значение параметра
-command, то это значение интерпретируется как команда Tcl всякий раз при
выделении входа.ВХОДЫ-ПЕРЕКЛЮЧАТЕЛИ
Вход-переключатель ведет себя подобно примитиву переключателя. Входы
переключателя разбиты на группы, причем в каждой группе выделенным может
оказаться только один вход. При выделении конкретного входа в некоторую
глобальную переменную (указанную параметром -variable) заносится значение,
фиксированное параметром -value. В результате этого действия
автоматически отменяется предыдущее выделение в той же группе. Любое изменение
значения переменной, связанной с входом, автоматически приводит к отмене
существующего выделения. Разбиение входов-переключателей на группы задается
значениями связанных с ними переменных: два входа с одинаковыми значениями
переменной принадлежат одной группе. Слева от метки входа-переключателя
изображается ромб индикатора. Если вход выделен, то центральная часть индикатора
окрашивается в цвет, указанный параметром -selectcolor для входа; в
противном случае цвет индикатора совпадает с цветом фона меню. Если для данного
входа задано значение параметра -command, то это значение
интерпретируется как команда Tcl всякий раз при выделении входа.КАСКАДНЫЕ ВХОДЫ
Каскадному входу отвечает новое меню (заданное параметром -menu).
Каскадные входы позволяют строить ниспадающие меню. Команда примитива
postcascade позволяет изобразить ассоциированное меню непосредственно
рядом с каскадным входом или удалить выведенное меню. Для обеспечения
корректности переключения меню необходимо, чтобы меню, ассоциированное с входом,
было непосредственным потомком того меню, элементом которого данный вход
является.
Каскадный вход выводит ассоциированное меню с помощью команды Tcl вида:
меню post x y
где меню представляет собой имя пути ассоциированного меню, а
x и y — это координаты верхнего правого угла окна каскадного входа
относительно корневого окна. В системе Unix меню нижнего уровня стирается с
помощью команды Tcl.
меню unpost
где меню представляет собой имя пути ассоциированного меню. На
других платформах стирание меню осуществляется их собственными средствами.
Если для данного входа задано значение параметра -command, то это
значение интерпретируется как команда Tcl всякий раз при выделении входа. В
системе Windows данная возможность не поддерживается.
ВХОДЫ — КЛЮЧИ ОТРЫВА
Ключ отрыва появляется в верхней части меню, если параметр tearOff
имеет значение истина. В отличие от входов других типов его нельзя создать
командой примитива add или удалить командой примитива delete. При
создании ключа отрыва он изображается в виде пунктирной горизонтальной черты в
верхней части окна. Привязки по умолчанию создают при щелчке на ключе отрыва
оторванную копию меню и всех подчиненных ему меню.ЛИНЕЙКА МЕНЮ
Любое меню можно использовать в качестве полосы меню для окна верхнего
уровня (синтаксис см. в описании команды toplevel ). В системе Macintosh
каскадные элементы меню появляются в полосе меню в верхней части окна, как
только соответствующее окно верхнего уровня оказывается поверх остальных окон. В
системах Windows и Unix эти элементы меню изображаются в полосе меню в верхней
части окна. Поведение меню определяется особенностями интерфейса каждой из
платформ. Для каждого меню, используемого в качестве полосы меню, создается его
копия (clone menu). Подробное описание приведено ниже (см. "Клоны").СПЕЦИАЛЬНЫЕ МЕНЮ В ЛИНЕЙКЕ
Некоторые меню в полосе меню будут обрабатываться особым образом. В системе
Macintosh обеспечен доступ к специальным меню Apple и Help. В каждом окне
системы Windows обеспечен доступ к меню Windows System. В системе X Windows
предоставляется специальное меню подсказки, выравненное вправо. Во всех случаях
эти меню создаются посредством команды, имя которой состоит из имени команды
меню в полосе меню, к которму приписывается имя специального меню. Так, для
полосы меню с именем .menubar на Macintosh именами специальных меню будут
.menubar.apple и .menubar.help; в Windows —
.menubar.system; в X Windows именем меню подсказки будет
.menubar.help.
Встречая меню Apple в системе Macintosh, Tk выводит его первые элементы на
экран всякий раз, когда окно, содержащее полосу меню оказывается поверх
остальных окон. Это меню является первым, которое видит пользователь, а его
заголовком служит логотип Apple. После всех Tk-определенных элементов следует
разделитель, за которым идут все элементы из папки пользователя Apple Menu
Items. Так как используемая System процедура определения меню отлична от
используемой в Tk и API системы не поддерживают всех возможностей меню Tk, в
заголовке меню выводится только текст заголовка. Никаких дополнительных
сведений, изображений, двуцветных изображений или цветов не выводится. Кроме
того, ключ отрыва имеет вид “TearOff”.
Встречая меню Help в системе Macintosh, Tk добавляет содержимое этого меню к
стандартному меню подсказки в правой части пользовательской полосы меню всякий
раз, когда пользовательская полоса меню оказывается поверх остальных окон.
Первые элементы меню берутся из Apple. Аналогично меню Apple возможности вывода
элементов меню ограничены системой.
Встречая меню System в системе Windows, Tk добавляет содержимое этого меню к
системному меню, к которому привязана данная полоса меню. В этом меню имеется
картинка, изображающая клавишу пробела; ее можно запустить с помощью “Мыши” или
нажав клавиши Alt+Spacebar. Ограничения Windows API не позволяют вывести
в системном меню различные шрифты, цвета, изображения или двуцветные
изображения, а также ключи отрыва.
Встречая меню Help в системе X Windows, Tk делает его последним в полосе меню
и выравнивает по правому краю.
КЛОНЫ
При использовании меню в качестве полосы меню в окне верхнего уровня, а
также при отрыве меню создается его копия. Копия сама является примитивом меню,
но она — непосредственный потомок исходного меню. Изменения конфигурации
исходного меню распространяются и на копию. Кроме того, все каскады, на которые
есть указатели, также копируются, что обеспечивает корректное переключение меню.
Копии уничтожаются, если удаляется ключ отрыва или полоса меню, а также при
уничтожении оригинала.КОМАНДА
ПРИМИТИВА
Команда menu создает новую команду Tcl с именем имяПути. С
помощью этой команды можно выполнять различные операции над примитивом. Ее общий
вид:
имяПути параметр арг арг ...
Параметр и аргументы уточняют поведение
команды.Одним из аргументов многих команд примитива меню служит
указатель входа в меню, над которым следует произвести данную операцию. Такие
указатели называются индексами; они могут иметь один из следующих видов:
число
Задает номер входа. Самый верхний вход имеет номер 0, следующий за ним —
номер 1 и т.д.active
Задает вход, который активен в настоящий момент. Если активного входа нет,
то это значение параметра эквивалентно значению none. Слово active
нельзя сокращать.end
Указывает самый нижний вход в меню. Если в меню нет ни одного входа, то это
значение параметра эквивалентно значению none. Слово end нельзя
сокращать.last
Совпадает с end.none
Указывает на “никакой” вход. Чаще всего используется совместно с параметром
activate для дезактивации всех активных входов в меню. Слово none
нельзя сокращать.@число
В этом случае число интерпретируется как значение y-координаты в
окне меню; указывает на вход, ближайший к данной y-координате. Так, например,
“@0” указывает на самый верхний вход в окне.образец
Если индекс не подходит ни под один из указанных видов, то используется поиск
индекса по образцу. Сравнение метки входа с образцом выполняется
последовательно сверху вниз, пока не встретится подходящая метка. При сравнении
используются правила Tcl_StringMatch.
Примитивы меню допускают следующие команды:
имяПути activate индекс
Делает активным вход, указанный параметром индекс и соответственно
меняет вид строки входа на экране. Всякий вход, бывший активным в момент
выполнения команды, деактивизируется. Если индекс имеет
значениеnone или если указанный этим параметром вход отключен, то по
окончании работы команды в меню не будет активных входов. Возвращает пустую
строку.имяПути add тип параметр значение параметр
значение
Добавляет новый вход на верхушку меню. Аргумент тип задает вид
нового входа; он может принимать значения cascade, checkbutton,
command, radiobutton (эти значения допускают однозначные сокращения).
Дополнительные аргументы могут задавать значения следующих
параметров:-activebackground значение
Задает цвет фона для вывода данного входа в активном состоянии. Если
значением служит пустая строка (как, например, по умолчанию), то в
качестве цвета фона берется значение параметра activeBackground
для всего меню. Если значение переменной tk_strictMotif требует проверки
согласования со стандартом Motif, то значение данного параметра игнорируется и
вместо него используется значение параметра -background. Для
входа-разделителя и ключа отрыва данный параметр
недоступен.-activeforeground значение
Задает цвет переднего плана для вывода данного входа в активном состоянии.
Если значением служит пустая строка (как, например, по умолчанию), то в
качестве цвета фона берется значение параметраactiveForeground для всего
меню. Для входа-разделителя и ключа отрыва данный параметр
недоступен.-accelerator значение
Задает строку, которую следует выводить в правой части входа. Обычно
описывает комбинацию клавиш, на которые следует нажать, чтобы выполнить те же
действия, что и при обращении к данному входу. Для входа-разделителя и ключа
отрыва данный параметр недоступен.-background значение
Задает цвет фона для вывода данного входа в нормальном (не активном и не
отключенном) состоянии. Если значением служит пустая строка (как,
например, по умолчанию), то в качестве цвета фона берется значение параметра
background для всего меню. Для входа-разделителя и ключа отрыва данный
параметр недоступен.-bitmap значение
Задает двуцветное изображение, выводимое в меню вместо текстовой метки.
Может принимать любое значение, воспринимаемое командой Tk_GetBitmap.
Данный параметр подавляет параметр -label, однако если его
значением является пустая строка, то в окне выводится текстовая метка. Параметр
-image, если он задан, подавляет параметр -bitmap. Для
входа-разделителя и ключа отрыва данный параметр
недоступен.-columnbreak значение
Если значение параметра равно ‘0’, то новый вход выводится после
предыдущего входа. Если значение равно `1’, то новый вход выводится
вверху нового столбца меню.-command значение
Задает команду Tcl, которую следует выполнить при вызове данного входа. Для
входа-разделителя и ключа отрыва данный параметр
недоступен.-font значение
Задает шрифт, используемый при выводе метки входа и строки горячих клавиш.
Если значением параметра является пустая строка (как, например, по умолчанию),
то используется значение параметра fontдля всего меню. Для
входа-разделителя и ключа отрыва данный параметр
недоступен.-foreground значение
Задает цвет переднего плана для вывода данного входа в нормальном (не
активном и не отключенном) состоянии. Если значением служит пустая строка
(как, например, по умолчанию), то в качестве цвета фона берется значение
параметра foreground для всего меню. Для входа-разделителя и ключа
отрыва данный параметр недоступен.-hidemargin значение
Указывает, следует ли при выводе данного входа выводить стандартные боковые
поля. Такая возможность полезна при создании различных палитр с картинками
(цветовые палитры, палитры образцов и т.д.). Значение `1' указывает на
то, что поля должны быть спрятаны, при нулевом значении параметра они
используются.-image значение
Задает изображение, выводимое в меню вместо текстовой метки или двуцветного
изображения. Изображение должно быть создано ранее командой image create.
Данный параметр подавляет параметры -label, и -bitmap, однако если
его значением является пустая строка, то в окне выводится текстовая метка или
двуцветное изображение. Для входа-разделителя и ключа отрыва данный параметр
недоступен.-indicatoron значение
Доступно только для защелкивающихся входов и входов-переключателей.
Значение является булевским и указывает, следует или нет выводить
индикатор входа.-label значение
Задает текстовую строку, которая служит меткой-идентификатором входа. Для
входа-разделителя и ключа отрыва данный параметр недоступен.-menu
значение
Данный параметр доступен только для каскадных входов. Задает имя пути
подменю, ассоциированного с данным входом. Подменю должно быть непосредственным
потомком данного меню.-offvalue значение
Доступен только для защелкивающихся входов. Задает значение, которое
следует записать в переменную входа при отмене его
выделения.-onvalue значение
Доступен только для защелкивающихся входов. Задает значение, которое
следует записать в переменную входа при его
выделении.-selectcolor значение
Доступен только для защелкивающихся входов и входов-переключателей.
Задает значение, которое следует записать в переменную входа при его
выделении.-selectimage значение
Доступен только для защелкивающихся входов и входов-переключателей. Задает
изображение, которое следует выводить в поле входа при его выделении (замещает
параметр -image). Изображение должно быть создано ранее командой image
create. Если параметр -image не задан, то данный параметр
игнорируется.-state значение
Задает одно из трех состояний входа: normal, active или
disabled. В нормальном состоянии при выводе входа используются значения
параметров foreground для всего меню и background для входа или
для всего меню. Обычно вход становится активным при попадании на него курсора. В
активном состоянии при выводе входа используются значения параметров
activeForeground для всего меню и activebackground для входа. В
отключенном (disabled) состоянии вход становится безответным: привязки по
умолчанию не позволяют активизировать его или вызвать соответствующую ему
команду Tcl. При выводе входа в этом случае используются значения параметров
disabledForeground для всего меню и background для входа. Для
входа-разделителя данный параметр недоступен.-underline
значение
Задает целочисленный индекс символа в метке, который следует подчеркнуть.
Значение этого индекса используется, в том числе, привязками по умолчанию для
осуществления переключения с помощью клавиатуры. Значение ‘0’ указывает
на первый символ в строке, `1’ — на второй и т.д. Если в поле входа
выводится изображение или двуцветное изображение, то данный параметр
игнорируется. Для входа-разделителя и ключа отрыва данный параметр
недоступен.-value значение
Доступен только для входа-переключателя. Задает значение, которое следует
записать в переменную входа при его выделении. Если значением параметра
является пустая строка, то в переменную заносится значение параметра
-label.-variable значение
Доступен только для защелкивающегося входа и входа-переключателя. Задает
имя глобальной переменной, которую следует установить при выделении входа. Для
защелкивающегося входа значение переменной устанавливается также при отмене его
выделения. Для входа-переключателя изменение значения переменной приводит к
отмене текущего выделения.Команда примитива add
возвращает пустую строку.
имяПути cget параметр
Возвращает текущее значение параметра конфигурации с именем
параметр. Параметрможет быть любым из параметров команды
menu.имяПути clone новоеИмяПути
типКопии
Создает копию текущего меню с именем новоеИмяПути. Копия является
отдельным самостоятельным меню, однако любые изменения в ней приводят к таким же
изменениям оригинала и наоборот. Аргумент типКопии можетпринимать
значения normal, menubar и tearoff. Команду не следует
исполнять вне библиотеки Tk. Подробную информацию см. "Клоны".имяПути
configure параметр значение параметр значение ...
Запрашивает значения параметров конфигурации примитива или изменяет их.
Если параметр не указан, то возвращает список, содержащий значения всех
допустимых в имениПути параметров (формат списка описан в
Tk_ConfigureInfo). Если параметр задан, а его новое
значение — нет, то команда возвращает часть полного списка, относящуюся к
указанному параметру. Если заданы одна или несколько пар
параметр-значение, то указанным параметрам примитива присваиваются новые
значения. В этом случае команда возвращает пустую строку. Параметр
может быть любым из параметров команды menu.имяПути
delete индекс1 индекс2
Удаляет все входы между входами, указанными аргументами индекс1 и
индекс2, включая оба эти входа. Ключи отрыва при этом не удаляются — для их
удаления следует поменять значение параметра
tearOff.имяПути entrycget индекс
параметр
Возвращает текущее значение параметра конфигурации для входа, заданного
аргументом индекс. Параметрможет принимать любые значения,
воспринимаемые командой примитива
add.имяПутиentryconfigure индекс
параметры
Команда аналогична команде configure; отличие состоит в том, что она
относится к параметрам отдельного входа, тогда как команда configure
применима к параметрам меню в целом. Параметры могут принимать любые
значения, воспринимаемые командой примитива add. Если параметры
заданы, то им присваиваются вновь заданные и команда возвращает пустую строку.
Если параметры не заданы, то команда возвращает список текущих значений
всех параметров для каждого из входов, указанных аргументом индекс
(формат списка приведен в Tk_ConfigureInfo).имяПути
index индекс
Команда возвращает числовое значение индекса, заданного
аргументом индекс или значение none, если значением
аргумента было none.имяПути insert
индекс тип параметр значение параметр значение
Команда аналогична команде примитива add; отличие состоит в
том, что команда insert вставляет новый вход непосредственно перед
входом, на который указывает аргумент индекс, а не в конец меню.
Если в меню есть ключ отрыва, то вставка входов перед ним
невозможна.
имяПути invoke индекс
Выполняет действие, ассоциированное с данным входом меню. Подробное
описание выполняемых действий приведено выше при описании конкретных типов
входов. Если с данным входом ассоциирована какая-нибудь команда Tcl, то команда
invoke возвращает результат выполнения этой команды Tcl. В противном
случае результатом служит пустая строка. Замечание: при исполнении данной
команды меню не пропадает автоматически — это результат действия привязок по
умолчанию перед исполнением команды invoke.имяПути
post x y
Обеспечивает вывод меню на экран в месте с координатами x и y
относительно корневого окна. При необходимости эти координаты корректируются
так, чтобы меню на экране было видно. Обычно команда возвращает пустую строку.
Если задан параметр postCommand, то его значение интерпретируется как Tcl
скрипт, который и исполняется перед выполнением команды post; в этом
случае команда примитива post возвращает результат данного скрипта Tcl.
Если при выполнении скрипта возникла ошибка, то post возвращает сообщение
об этой ошибке и меню не выводится.имяПути postcascade
индекс
Выводит подменю, вызываемое каскадным входом, указанным аргументом
индекс, и стирает ранее выведенное подменю. Если аргумент индекс
не указывает на каскадный вход или если меню с именем имяПути не
выведено, то командаpostcascade не производит никаких действий за
исключением стирания ранее выведенных подменю.имяПути type
индекс
Возвращает тип входа, указанного аргументом индекс. Этот тип
задается аргументом тип при создании входа командой примитива add
(например, command, separator или tearoff для ключа
отрыва).имяПути unpost
Стирает окно с экрана. Если было выведено каскадное меню нижнего уровня, то
стирает это меню. Возвращает пустую строку. На платформах Windows и Macintosh
эта команда не работает, так как там имеются собственные системы управления
окнами.имяПути yposition индекс
Возвращает десятичное значение y-координаты в окне меню верхнего пиксела
поля входа, заданного аргументом индекс.КОНФИГУРАЦИИ МЕНЮ
Привязки по умолчанию обеспечивают четыре различных способа
использования меню:
Ниспадающие меню в полосе
меню
Наиболее часто встречающийся случай. Сначала создается примитив меню, который
станет полосой меню. Затем к этому меню добавляются каскадные входы, описывающие
нужные ниспадающие меню. Затем создаются все ниспадающие меню. Когда все это
проделано, нужно задать значение параметра -menu в команде примитива
верхнего уровня. Подробное описание см. п. toplevel.
Ниспадающие меню в
кнопках меню
Это альтернативный способ создания полосы меню. Сначала создается примитив
кнопки меню для каждого меню верхнего уровня (обычно цепочка кнопок
располагается последовательно в полосе меню окна). Кроме того следует создать
все меню верхнего уровня и подчиненные им меню и связать их вместе с помощью
параметра -menu в кнопках меню и каскадных входах меню. Меню верхнего
уровня должно быть непосредственным потомком кнопки меню, а каждое подменю
должно быть непосредственным потомком меню, которое на него ссылается. После
того, как это сделано, привязки по умолчанию позволяют пользователю переходить
от одного меню к другому и обращаться к дереву меню через кнопку меню.
Всплывающие меню
Всплывающие меню обычно выводятся при нажатии кнопки “Мыши” или клавиши на
клавиатуре. Сначала создаются всплывающие меню и все каскадные подменю, затем в
нужный момент времени следует вызвать процедуру tk_popup, в результате
чего будет выведено меню верхнего уровня.
Меню-переключатели с
кнопкой
Меню-переключатель состоит из кнопки и связанного с ней меню, которое
позволяет выбрать одну из нескольких возможностей. Описатель выбранной
возможности выводится в кнопке и в глобальной переменной запоминается
соответствующее значение. Для создания меню-переключателей используется
процедура tk_optionMenu.
Отрывные меню
Отрывное меню создается при исполнении входа — ключа отрыва в верхней части
имеющегося меню. Привязки по умолчанию создают копию исходного меню и выводят ее
в виде окна верхнего уровня. Оторванное меню ведет себя точно так же, как и
исходное.
ПАРАМЕТРЫ ПО
УМОЛЧАНИЮ
При создании меню Tk автоматически создает параметры класса, определяющие
следующее поведение примитива по умолчанию:
При попадании курсора “Мыши” в меню вход, на котором находится курсор,
становится активным; при перемещении курсора по меню соответственно меняется и
активный вход.
Если курсор “Мыши” покидает меню, то все входы в нем деактивизируются за
исключением случая, когда курсор перемещается в каскадное подменю.
При отпускании клавиши “Мыши” на меню активный вход (если таковой имеется)
исполняется. При этом меню стирается за исключением случая, когда это оторванное
меню.
Нажатие на клавиши Space или Return приводят к исполнению
активного входа и стиранию меню.
Если одна из букв в поле входа подчеркнута с помощью параметра
-underline, то нажатие на эту букву (или ее эквивалент на верхнем или
нижнем регистре) приводит к исполнению входа и стиранию меню.
Нажатие на клавишу Escape приводит к отмене текущего выделения. Меню
при этом стирается, если только это не оторванное меню.
Нажатие на клавиши Up или Down приводит к активизации входа,
примыкающего к текущему активному входу сверху или снизу. Если достигнут конец
меню, то происходит перескок на противоположный его конец.
Нажатие на клавишу Left приводит к переходу на соседнее слева меню.
Если текущее меню представляет собой каскадное подменю, то это каскадное подменю
стирается и текущим входом в меню становится каскадный вход в его
непосредственном предке. Если текущее меню представляет собой меню верхнего
уровня, выведенное кнопкой меню, то текущая кнопка меню стирается и выводится
соседняя слева кнопка меню. В остальных случаях нажатие на эту клавишу не
приводит ни к какому результату. Порядок кнопок меню слева направо определяется
их порядком в стеке: Tk считает нижнюю кнопку меню (первой попавшую в стек)
самой левой.
Нажатие на клавишу Right приводит к переходу на соседнее справа меню.
Если текущим является каскадный вход, то выводится соответствующее каскадное
подменю и текущий вход становится первым в этом подменю. В противном случае,
если текущее меню было выведено конпкой меню, то текущая кнопка меню стирается,
а вместо нее выводится соседняя с ней справа кнопка меню.
Отключенные входы меню остаются безответными: их нельзя сделать активными и
они не реагируют на нажатие и отпускание клавиш “Мыши”.
Определяя новые привязки к отдельным примитивам или переопределяя привязки
класса, поведение меню можно изменить.
В настоящее время использование базы данных параметров для задания значений
параметров входов не допускается.
message
Создание примитива сообщения и управление им.
Синтаксис
Стандартные
параметры
Дополнительные
параметры примитива
Описание
Команда
примитива
Параметры
по умолчанию СИНТАКСИС
message имяПути параметрыСТАНДАРТНЫЕ ПАРАМЕТРЫ
-anchor |
-font |
-highlightthickness |
-takefocus |
-background |
-foreground |
-padx |
-text |
-borderwidth |
-highlightbackground |
-pady |
-textvariable |
-cursor |
-highlightcolor |
-relief |
-width |
|
|
Подробное описание этих параметров приведено в разделе options.ДОПОЛНИТЕЛЬНЫЕ
ПАРАМЕТРЫ ПРИМИТИВА
Имя параметра: -aspect
Имя в Базе: aspect
Класс в
Базе: Aspect
Целое число, указывающее желаемые пропорции текста. Его значение равно
100*ширина/высота. Значение `100’ означает, что ширина текста должна равняться
его высоте, значение `200’ — что текст должен быть вдвое шире по сравнению с
высотой, значение `50’ — что его высота должна быть вдвое больше ширины и т.д.
Используется для определения длины строки, если не задан параметр width.
Значение по умолчанию равно `150’.
Имя параметра: -justify
Имя в Базе: justify
Класс в
Базе: Justify
Имя параметра: -width
Имя в Базе: width
Класс в
Базе: Width
Задает желаемую ширину окна (в любом виде, приемлемом для
Tk_GetPixels). Если значение параметра положительно, то параметр aspect
игнорируется, а параметр width задает длину строки. Если значение
параметра неположительно, то длина строки определяется параметром
aspect.
ОПИСАНИЕ
Команда message созадает новое окно (задаваемое аргументом
имяПути) и превращает его в примитив сообщения. Детали изображения
сообщения, такие как его цвета, шрифт, текст и объемный вид задаются с помощью
описанных выше дополнительных параметров. Команда message возвращает
аргумент имяПути. В момент выполнения этой команды не должно существовать
окна с именем имяПути, но должен существовать его предок.
Сообщение представляет собой примитив, предназначенный для вывода строки
текста. У примитива сообщения есть три специальных свойства. Во-первых, он
разбивает строку сообщения на строчки, чтобы обеспечить заданные пропорции окна.
Перевод строки осуществляется, по возможности, на границах слов (если в строку
не помещается ни одного целого слова, то слово разбивается на несколько строк).
Для переноса строки в нее вставляются символы перевода строки; их можно
использовать, например, для вывода пустых строчек на экран.
Вторым свойством примитива сообщения является возможность выравнивания.
Строчки сообщения могут быть выровнены влево (каждая строка начинается от левого
края окна), по центру или вправо (каждая строка кончается у правого края окна).
Третье свойство примитива сообщения состоит в том, что он специальным образом
обрабатывает управляющие символы и непечатные символы. Символы табуляции
заменяются пробелами, число которых равно расстоянию до ближайшего кратного 8-ми
символам. Символы перевода строки вызвают переход на новую строку. Другие
управляющие символы (код ASCII которых меньше 0x20) и символы, не определенные в
шрифте сообщения, выводятся в виде последовательности из четырех символов \xhh,
где hh — это две шестнадциатиричные цифры, представляющие собой ASCII код
данного символа. В том редком случае, когда в шрифте отсутствуют некоторые из
символов `0123456789abcdef\x' управляющие символы и неопределенные символы
вообще не выводятся.
КОМАНДА
ПРИМИТИВА
Команда message создает новую команду Tcl с именем имяПути. С
помощью этой команды можно выполнять различные операции над примитивом. Ее общий
вид
имяПути параметр арг арг ...
Параметр и аргументы уточняют поведение команды. Примитивы
сообщения допускают следующие формы команды:
имяПути cget параметр
Возвращает текущее значение параметра конфигурации с именем
параметр. Параметр может быть любым из параметров команды
message.имяПути configure параметр значение
параметр значение ...
Запрашивает значения параметров конфигурации примитива или изменяет их.
Если параметр не указан, то возвращает список, содержащий значения
всех допустимых в имениПути параметров (формат списка
описан в Tk_ConfigureInfo). Если параметр задан, а его
новое значение — нет, то команда возвращает часть полного списка,
относящуюся к указанному параметру. Если заданы одна или несколько пар
параметр-значение, то указанным параметрам примитива присваиваются
новые значения, а команда возвращает пустую строку. Параметр может
быть любым из параметров команды message.ПАРАМЕТРЫ ПО УМОЛЧАНИЮ
При создании сообщения параметры по умолчанию отсутствуют: сообщения
предназначены только для вывода текста.
option
Команда добавляет/получает параметры окон в/из базы данных параметров
окон.СИНТАКСИС
option add pattern value ?priority?
option clear
option get window name class
option readfile fileName ?priority?
ОПИСАНИЕ
Команда позволяет добавить в базу данных параметров окон новые значения,
считать из нее значения указанных параметров, очистить базу или добавить в базу
данные из указанного файла стандартного формата. Аргумент pattern
задает конкретный параметр и состоит из имен параметров и/или классов.
Аргумент value содержит значение параметра. Аргумент fileName
задает файл со значениями параметров. Необязательный аргумент priority
указывает уровень приоритета для ввода параметра.
options
Приведено описание стандартных параметров примитивов.
Здесь приводится описание всех стандартных параметров примитивов. Не все
параметры используются примитивами, но если примитив использует некоторый
параметр, то действие этого параметра будет именно таким, как оно
описано.
ОПИСАНИЕ
options — стандартные параметры, поддерживаемые примитивами
В этом разделе руководства описываются общие параметры конфигурации,
поддерживаемые примитивами (виджетами) языка Tk. Не каждый примитив поддерживает
все параметры (список стандартных параметров примитива приведен в описании этого
примитива), однако если примитив поддерживает параметр, имя которого приведено в
нижеследующем списке, то результат его указания совпадает с описанным ниже.
В приводимом ниже описании строка “Имя Параметра” указывает имя переключателя
в командах класса и командах примитивов configure, предназначенных для установки
значения параметра. Если, например, в строке “Имя параметра” указано имя
-foreground и имеется примитив .a.b.c, то с помощью команды
.a.b.c configure -foreground black
можно присвоить значение black параметру -foreground примитива
.a.b.c. Для имен параметров можно использовать сокращения, сохраняющие
однозначность интерпретации имени. В поле “Имя в Базе” приводится имя параметра
в базе X-ресурсов (например, в файле .Xdefaults). В поле “Класс в Базе”
приводится имя класса базы в файле X-ресурсов (например, в файле .Xdefaults).
Имя параметра: -activebackground
Имя в Базе:
activeBackground
Класс в Базе: Foreground
Задает цвет фона при изображении активных элементов. Элемент (примитив
или его часть) активен, если на нем находится курсор “Мыши” и нажатие на клавишу
“Мыши” вызывает некоторое действие. Если установлено значение переменной
tk_strictMotif, то значение указанного параметра игнорируется и
используется обычный цвет фона. Для некоторых элементов в системах Windows и
Macintosh установленный цвет активизируется только при щелчке клавиши 1 на
элементе.
Имя параметра: -activedorderwidth
Имя в Базе:
activeBorderWidth
Класс в Базе: BorderWidth
Задает неотрицательное значение ширины трехмерного бордюра, окружающего
активные элементы. Определение активных элементов приведено выше. Значение может
быть задано в любом виде, воспринимаемом командой Tk GetPixels. Обычно
этот параметр доступен только для примитивов, отображающих более одного элемента
одновременно (меню, а не кнопки).
Имя параметра: -activeforeground
Имя в Базе:
activeForeground
Класс в Базе: Background
Задает цвет изображения активного элемента. Определение активных
элементов приведено выше.
Имя параметра: -anchor
Имя в Базе: anchor
Класс в
Базе: Anchor
Задает способ отображения информации (типа текст или bitmap) в
примитиве. Должен принимать одно из значений n, ne, e,
se, s, sw, w, nw или center,которые
указывают на стороны света. Например, значение nw указывает на необходимость
такого отображения информации, что ее левый верхний угол совпадает с левым
верхним уровнем примитива.
Имя параметра: -background or -bg
Имя в Базе: background
Класс в Базе: Background
Задает нормальный цвет фона при отображении примитива.
Имя параметра: -bitmap
Имя в Базе: bitmap
Класс в
Базе: Bitmap
Задает информацию типа bitmap в
любом виде, приемлемом для Tk GetBitMap для отображения в
примитиве. Другие параметры, вроде anchor и justify, уточняют
способ отображения информации типа bitmap.
Обычно при задании этого параметра значения остальных параметров, задающих
способ отображения текстовой информации, игнорируются. Для восстановления
возможности вывода текстовой информации в примитиве следует задать значение
параметра bitmap в виде пустой строки. Задание параметра imageподавляет
параметр bitmap в
примитивах, использующих оба эти параметра.
Имя параметра: -borderwidth or -bd
Имя в Базе:
borderWidth
Класс в Базе: BorderWidth
Задает неотрицательное значение ширины трехмерного бордюра, окружающего
изображение примитива (при выводе такого бордюра; необходимость его вывода
обычно указывается параметром relief). То же значение может быть
использовано при имитации трехмерной графики внутри примитива. Значение
параметра может быть любым из тех, что приемлемы для Tk GetPixels.
Имя параметра: -cursor
Имя в Базе: cursor
Класс в
Базе: Cursor
Задает форму курсора “Мыши” на примитиве. Значение параметра должно быть
одним из значений, которые перечислены в файле
/usr/X11R6/unclude/X11/cursorfont.h, например, X_cursor, arrow,
boat, clock, cross, то есть можно указывать любое значение их данного файла,
в котором нужно опустить первые три символа “XC_”.
Имя параметра: -disabledforeground
Имя в Базе:
disabledForeground
Класс в Базе:
DisabledForegroundЗадает цвет переднего плана для изображения
недоступного элемента. При вводе пустой строки (типичная ситуация для
монохромного дисплея) недоступные элементы изображаются обычным цветом, однако
их изображение делается более тусклым за счет штриховки.
Имя параметра: -exportselection
Имя в Базе:
exportSelection
Класс в Базе: ExportSelectionУказывает,
должен ли выбранный элемент в примитиве входить также и в X-выборку. Значение
параметра должно быть допустимым аргументом функции Tcl GetBoolean,
скажем true, false, 0, 1, yes или
no. При экспорте выбранного элемента выборка в примитиве отменяет текущую
X-выборку; выборка за пределами примитива отменяет текущую выборку в примитиве.
При наличии в примитиве выбранного элемента примитив отзывается на запросы
поиска выбранных элементов. По умолчанию примитивы обычно экспортируют выбранные
элементы.
Имя параметра: -font
Имя в Базе: font
Класс в Базе: Font
Задает шрифт для отображения текста внутри примитива. Синтаксис имени
шрифта описан в команде font.
Спаисок доступных шрифтов можно получить команой xlsfonts.
Имя параметра: -foreground или -fg
Имя в Базе: foreground
Класс в Базе: Foreground
Задает нормальный цвет переднего плана примитива.
Имя параметра: -highlightbackground
Имя в Базе:
highlightBackground
Класс в Базе: HighlightBackground
Задает цвет яркого прямоугольника обрамляющего примитив, находящийся вне
фокуса ввода.
Имя параметра: -highlightcolor
Имя в Базе:
highlightColor
Класс в Базе: HighlightColorЗадает цвет
яркого прямоугольника обрамляющего примитив, находящийся в фокусе ввода.
Имя параметра: -highlightthickness
Имя в
Базе: highlightThickness
Класс в Базе:
HighlightThickness
Задает неотрицательное значение ширины яркого прямоугольника вокруг
примитива, находящегося в фокусе ввода. Значение параметра должно быть
допустимым аргументом функции Tk GetPixels. При значении, равном нулю,
яркая рамочка вокруг примитива не выводится.
Имя параметра: -image
Имя в Базе: image
Класс в Базе: ImageЗадает изображение, которое должно быть
выведено в примитиве, созданном командой image
create. Обычно при задании параметра imageзначения
других параметров, задающих текстовые или bitmap
данные для вывода в примитиве, подавляются. Для восстановления возможности
вывода текстовых или bitmap данных следует задать пустое значение параметра
image.
Имя параметра: -insertbackground
Имя в Базе:
insertBackground
Класс в Базе: Foreground
Задает цвет фона поля, на котором установлен курсор ввода. Этот параметр
подавляет цвет нормального фона примитива (или фона выбранного элемента, если
курсор ввода оказался на выбранном элементе).
Имя параметра: -insertborderwidth
Имя в Базе:
insertBorderWidth
Класс в Базе: BorderWidth
Задает неотрицательное значение ширины трехмерного бордюра вокруг курсора
ввода. Значение параметра должно быть допустимым аргументом функции Tk
GetPixels.
Имя параметра: -insertofftime
Имя в Базе:
insertOffTime
Класс в Базе: OffTimeЗадает длину
промежутка времени, в течение которого курсор ввода находится в режиме
“off” (неотрицательное целое значение в миллисекундах) на протяжении
одного цикла мигания. Если введенное значение равно нулю, то курсор не мигает:
он всегда находится в режиме “on”.
Имя параметра: -inserontime
Имя в
Базе: insertOnTime
Класс в Базе: OnTimeЗадает длину
промежутка времени, в течение которого курсор ввода находится в режиме “on”
(неотрицательное целое значение в миллисекундах) на протяжении одного цикла
мигания.
Имя параметра: -insertwidth
Имя в Базе:
insertWidth
Класс в Базе: InsertWidth
Задает полную ширину курсора ввода. Значение параметра должно быть
допустимым аргументом функции Tk GetPixels. Если (с помощью параметра
insertBorderWidth) задана ширина бордюра, то бордюр будет располагаться
внутри отведенной ширины курсора,
Имя параметра: -jump
Имя в Базе: jump
Класс в Базе: Jump
Задает тип изменения значения примитива для примитивов, поддерживающих
полосу прокрутки. Значение параметра должно быть допустимым булевским аргументом
функции Tk GetBoolean. При значении параметра false значения
примитива изменяются непрерывно. При значении параметра true значение примитива
не меняется до окончания движения бегунка и отпускания клавиши “Мыши”. В этот
момент происходит установка нового значения (“скачок”, в отличие от непрерывного
изменения).
Имя параметра: -justify
Имя в Базе:
justify
Класс в Базе: Justify
Описывает способ выравнивания текста, состоящего из нескольких строк, в
окне примитива. Может принимать значения left, center или
right. Left означает, что выравниваются левые концы строк,
center — их середины, right — правые
концы.
Имя параметра: -orient
Имя в Базе:
orient
Класс в Базе: Orient
Указывает ориентацию примитива, допускающего различные ориентации (так,
полоса прокрутки может быть расположена горизонтально или вертикально). Может
принимать значения horizontal или vertical, а также их сокращения.
Имя параметра: -padx
Имя в Базе:
padX
Класс в Базе: Pad
Неотрицательное значение, указывающее размер запрашиваемого
дополнительного пространства для примитива в X-направлении. Значение параметра
должно быть допустимым аргументом функции Tk GetPixels. При подсчете
необходимого размера окна эта величина добавляется к обычному размеру,
определяемому суммированием всех размеров всех его деталей. Если программа
вывода в состоянии удовлетворить выданный запрос, то в правой и/или левой части
окна примитива появляется дополнительное пространство. В большинстве случаев это
пространство используется только для расположения там текста; при выводе
bitmap-данных или изображений оно игнорируется.
Имя параметра: -pady
Имя в Базе:
padY
Класс в Базе: Pad
Неотрицательное значение, указывающее размер запрашиваемого
дополнительного пространства для примитива в Y-направлении. Значение параметра
должно быть допустимым аргументом функции Tk GetPixels. При подсчете
необходимого размера окна эта величина добавляется к обычному размеру,
определяемому суммированием всех размеров всех его деталей. Если программа
вывода в состоянии удовлетворить выданный запрос, то в правой и/или левой части
окна примитива появляется дополнительное пространство. В большинстве случаев это
пространство используется только для расположения там текста; при выводе
bitmap-данных или изображений оно игнорируется.
Имя параметра: -relief
Имя в Базе: relief
Класс в Базе: Relief
Задает тип трехмерной графики в примитиве. Допустимы значения
raised, sunken, flat, ridge, solid или
groove. Значение указывает на способ размещения внутренней части окна по
отношению к фону. Например, значение raised указывает, что внутренняя
часть окна должна выступать из экрана.
Имя параметра: -repeatdelay
Имя в Базе:
repeatDelay
Класс в Базе: RepeatDelay
Указывает продолжительность нажатия на кнопку или клавишу (в
миллисекундах), необходимую для установления режима автоматического повторения.
Используется, например, при работе со стрелками полосы прокрутки.
Имя параметра: -repeatinterval
Имя в Базе:
repeatInterval
Класс в Базе: RepeatInterval
Используется в паре с repeatDelay: при установлении режима
автоматического повторения этот параметр задает длину промежутка времени между
автоматическими повторениями.
Имя параметра: -selectbackground
Имя в Базе:
selectBackground
Класс в Базе: Foreground
Задает цвет фона при отображении выбранных элементов.
Имя параметра: -selectborderwidth
Имя в Базе:
selectBorderWidth
Класс в Базе: BorderWidthЗадает ширину
трехмерного бордюра вокруг выбранных элементов. Допустимы любые значения,
воспринимаемые командой Tk GetPixels.
Имя параметра: -selectforeground
Имя в Базе:
selectForeground
Класс в Базе: Background
Задает цвет переднего плана для изображения выбранных элементов.
Имя параметра: -setgrid
Имя в Базе:
setGrid
Класс в Базе: SetGridЗадает булевское значение,
определяющее, управляет ли данный примитив масштабирующей сеткой своего окна
верхнего уровня. Обычно этот параметр используется в текстовых примитивах с
естественным размером отображаемой информации (размером символа) и размеры окна
осмысленно выбирать пропорциональными этому стандартному размеру. Эти разумные
размеры окон образуют сетку. Если задано значение true параметра
setGrid, то примитив установит связь с менеджером окон. В этом случае при
интерактивном запросе пользователя на изменение размеров окна верхнего уровня,
содержащего примитив, возможный список размеров окна будет передан пользователю
в единицах сетки, и значения его длины и ширины должны быть пропорциональны
сторонам ячейки сетки. Более подробно этот процесс описан ниже (см. "УПРАВЛЕНИЕ
ГЕОМЕТРИЕЙ СЕТОК" в описании команды Wm).
Имя параметра: -takefocus
Имя в Базе:
takeFocus
Класс в Базе: TakeFocus
Указывает, допустима ли установка фокуса на окне с помощью клавиатуры
(клавишами Tab и Shift-Tab). Перед установкой фокуса на окне
скрипты перевода фокуса проверяют значение параметра takeFocus. Значение
‘0’ указывает на необходимость пропускать окно при клавиатурном переключении
фокуса. Значение `1' указывает на то, что при видимом окне (и всех его
наследниках) фокус должен устанавливаться на нем. Пустое значение указывает на
то, что скрипт переключения сам принимает решение, следует ли устанавливать
фокус на данном окне: в текущем варианте окно пропускается, если оно отключено
или в нем нет ключевых связок, или оно невидимо. При любом другом значении
параметра скрипт переключения добавляет к этому значению имя окна (через
разделяющий пробел) и интерпретирует получившуюся строку как скрипт Tcl. Скрипт
должен возвращать значение `0’,`1’ или пустую строку. Значения ‘0’ и `1’
указывают, должен ли фокус ввода установиться на окно, пустая строка вызывает
обработку по умолчанию, описанную выше. Замечание: подобная обработка параметра
целиком определяется скриптами переключения Tcl; реализация примитивов полностью
игнорирует рассматриваемый параметр.
Имя параметра: -text
Имя в Базе: text
Класс в
Базе: Text
Задает строку, выводимую в примитиве. Способ вывода строки зависит от
конкретного примитива и определяется значениями других параметров, таких как
anchor или justify.
Имя параметра: -textvariable
Имя в
Базе: textVariable
Класс в Базе: Variable
Задает имя переменной. Значением переменной является текстовая строка,
которая должна быть выведена в примитиве. При изменении значения переменной
выведенная строка тут же изменяется. Способ вывода строки зависит от конкретного
примитива и определяется значениями других параметров, таких как
anchor или justify.
Имя параметра: -troughcolor
Имя в Базе:
troughColor
Класс в Базе: BackgroundЗадает цвет
обрамляющих прямоугольников — полосы прокрутки, поля масштабов и т.д. — в
примитиве
Имя параметра: -underline
Имя в Базе: underline
Класс
в Базе: Underline
Задает номер подчеркиваемого символа в примитиве. Этот параметр
используется связками по умолчанию для клавиатурного переключения кнопок меню и
полей меню. ‘0’ соответствует первому символу, `1’ — второму, и т.д.
Имя параметра: -wraplength
Имя в Базе:
wrapLength
Класс в Базе: WrapLength
Для примитивов, способных выполнять перенос строк этот параметр задает
максимальную длину строки. Строки, длина которых превосходит установленную,
переносятся на следующую строку. Это значение может быть задано в любом виде, в
котором могут задаваться экранные расстояния. Если это значение неположительно,
то переноса не происходит: он выполняется только при появлении символа переноса
строки.
Имя параметра: -xscrollcommand
Имя в Базе: xScrollCommand
Класс в Базе: ScrollCommandЗадает префикс команды, используемой
для связи с горизонтальной полосой прокрутки. При изменении содержимого окна
примитива (или любом другом событии, которое может повлечь за собой изменение
вида полосы прокрутки, скажем изменении размера содержимого примитива) примитив
генерирует команду Tcl путем конкатенации значения параметра и двух чисел,
каждое из которых представляет собой дробь между нулем и единицей. Числа
указывают положение текста в документе. ‘0’ указывает на начало документа, `1’ —
на его конец, “.333” — на одну треть от начала документа и т.д. Первое число
обозначает начало видимой части документа, второе — на позицию, непосредственно
следующую за концом видимой части. Затем команда передается интерпретатору Tcl
для выполнения. Обычно значение параметра xScrollCommand состоит из имени
пути к примитиву полосы прокрутки, за которым следует слово “set”,
например, “.x.scrollbar set”: в результате состояние полосы будет
изменяться всякий раз при изменении содержимого окна. Если параметр не задан, то
никакая команда не будет исполняться.
Имя параметра: -yscrollcommand
Имя в Базе:
yScrollCommand
Класс в Базе: ScrollCommand
Задает префикс команды, используемой для связи с вертикальной полосой
прокрутки. Этот параметр интерпретируется так же, как и параметр
xScrollCommand, за исключением того, что он относится к вертикальной
полосе прокрутки и используется в примитивах, которые такую полосу поддерживают.
Подробное описание см. выше.
pack
Геометрический менеджер, который упаковывает виджеты по сторонам
внутреннего пространства окна.
Синтаксис
Описание
Алгоритм
упаковки pack
Расширение
виджетов
Распространение
размеров
Ограничения
на мастер-окна
Порядок
размещения СИНТАКСИС
pack option arg ?arg ...?ОПИСАНИЕ
Команда pack используется для управления соответствующим
геометрическим менеджером, размещающим виджеты по различным сторонам
родительского окна, и для получения от него справочной информации. Команда может
иметь перечисленные ниже формы в зависимости от значения аргумента
option.
pack slave ?slave ...? ?options?
Если первый аргумент команды является именем окна (любая величина,
начинающаяся с ‘.’), команда выполняется точно также, как команда pack
configure.pack configure slave ?slave ...?
?options?
Аргумент команды состоит из имени одного или нескольких размещаемых
виджетов, после которых идут пары аргументов, состоящих из имени опции и ее
значения. Подробное описание действий, выполняемых при размещении виджетов
приведено ниже (см. "Алгоритм
упаковки pack"). Ниже перечислены возможные опции
команды.-after other
Other должно быть именем другого окна. Мастер-окна other
используется как мастер для slave. Список slave ?slave ...? вставляется в
список размещаемых окон сразу после
other.-anchor anchor
Anchor должен быть одной из возможных позиций якоря, например,
n или sw. Он определяет как размещается slave в отведенном ему
пространстве. Значение по умолчанию — center
(с).-before other
Other должно быть именем другого окна. Мастер-окно окна other
используется как мастер-окно для slave. Список slave ?slave ...?
вставляется в список размещаемых окон непосредственно перед
other.-expand boolean
Определяет, будут ли перечисленные виджеты расширяться при наличии
свободного пространства в мастер-окне. Boolean должно иметь булево
значение, например, 1 или no. Значение по умолчанию
`0’.-fill style
Если в мастер-окне для slave имеется свободное пространство,
управляет растяжением виджета slave.Аргумент style может
иметь одно из следующих значений:
none
Предоставляет виджету slave требуемый размер (включая поля,
запрошенные с помощью опций -ipadx или -ipady). Это значение по
умолчанию.x
Расширяет виджет slave в горизонтальном направлении так, чтобы он
заполнил все свободное пространство (за исключением внешних полей, заданных с
помощью опции -padx).y
Расширяет виджет slave в вертикальном направлении так, чтобы он
заполнил все свободное пространство (за исключением внешних полей, заданных с
помощью опции -pady).both
Расширяет виджет slave в обоих направлениях.-in
other
Включает slave(s) в конец списка размещаемых окон для окна
other.-ipadx amount
Аргумент amount указывает размер горизонтальных внутренних полей, которые
должны быть с обеих сторон виджета slave. Размер должен быть указан в одной из
форм, в которой можно задавать размеры на экране, например, 2 (2 пикселя)
или .5c (0.5 сантиметра). Значение по умолчанию 0.-ipady
amount
Аргумент amount указывает размер вертикальных внутренних полей,
которые должны быть с обеих сторон виджета slave. Размер должен быть указан в
одной из форм, в которой можно задавать размеры на экране, например, 2 (2
пикселя) или .5c (0.5 сантиметра). Значение по умолчанию
0.-padx amount
Аргумент amount указывает размер горизонтальных внешних полей,
которые должны быть с обеих сторон виджета slave. Размер должен быть указан в
одной из форм, в которой можно задавать размеры на экране, например, 2 (2
пикселя) или .5c (0.5 сантиметра). Значение по умолчанию
0.-pady amount
Аргумент amount указывает размер вертикальных внешних полей, которые
должны быть с обеих сторон виджета slave. Размер должен быть указан в одной из
форм, в которой можно задавать размеры на экране, например, 2 (2 пикселя)
или .5c (0.5 сантиметра). Значение по умолчанию 0.-side
side
Определяет, к какой стороне мастер-окна будут помещены виджеты slave.
Возможные значения аргумента side: left, right,
top или bottom. Значение по умолчанию
top.Если никакая из опций -in, -after или
-before не указана, каждый из slave будет внесен в конец списка
размещения своего непосредственного родителя (если только он не был внесен туда
ранее, в этом случае он останется на своем прежнем месте). Если же одна из
перечисленных опций указана, все slave будут внесены в соответствующий
список в указанное место.
Если какие-либо из slave окон ранее уже обрабатывались геометрическим
менеджером, то для не определенных в команде опций будут использоваться старые
значения, а не значения по умолчанию.
pack forget slave ?slave ...?
Перечисленные окна удаляются из списка упаковки и с экрана. Эти окна больше
не управляются геометрическим менеджером.pack info
slave
Возвращает список опций и их значений для окна slave в той же форме,
в какой они задаются в команде pack configure. Первые два элемента списка
— ``-in master'', где master' — имя окна, в
котором размещается slave.pack propagate master
?boolean?
Аргумент boolean, если он задан, определяет, будет ли окно
master расширяться при необходимости (подробности приведены ниже, см. "Расширение
виджетов"). Команда при этом возвращает пустую строку. Если аргумент не
задан, команда возвращает текущее значение опции (0 или 1). По
умолчанию расширение разрешено.pack slaves master
Возвращает список всех размещаемых окон для master. Если в окне
master нет размещаемых окон, возвращается пустой
список.АЛГОРИТМ
УПАКОВКИ pack
Для каждого мастер-окна менеджер pack формирует список упаковки. Место
каждого виджета в нем может задаваться с помощью опций -in, -after и
-before. Если эти опции не использовались, каждый новый виджет
добавляется в конец списка своего непосредственного предка.
Менеджер размещает виджеты в окне, последовательно просматривая список
упаковки. В момент обработки каждого из размещаемых виджетов внутри мастера есть
прямоугольная незаполненная область. Эта область называется “полость“. Для
первого обрабатываемого виджета “полость“ совпадает со всей внутренностью
мастер-окна.
Для каждого из размещаемых виджетов выполняются следующие действия:
- менеджер размещает прямоугольную область для очередного виджета у
стороны полости, заданной опцией -side. Если значение опции
top или bottom, то ширина области равна ширине полости, а
высота равна требуемой для виджета высоте плюс внешние и внутренние поля,
заданные опциями -ipady и -pady. Если значение опции равно
left or right, высота области равна высоте полости, а ширина
определяется размером виджета плюс полями, заданными опциями -ipadx и
-padx. Область может быть расширена в одном или обоих направлениях в
зависимости от значения опции -expand (см. ниже "Расширение
виджетов").
- менеджер определяет размеры виджета. Обычно они равны размерам,
необходимым для виджета, плюс удвоенные внутренние поля, но могут быть
расширены до размеров области (минус удвоенные внешние поля) по одному или
обоим направлениям в зависимости от значения опции-fill.
- менеджер размещает виджет в отведенном ему пространстве. Если виджет
меньше свободного пространства, используется значение опции -anchor.
Если определены внешние поля, то они всегда сохраняются между виджетом и
границами области, в которой он помещается.
После
того, как очередной виджет размещен, выделенная ему область (см. 1)) вычитается
из полости. Полость для следующего виджета остается прямоугольной, но меньшей по
размеру. Если виджет не занял полностью выделенную ему область, ее оставшиеся
свободными части не используются при размещении последующих виджетов. Если
полость оказывается мала для очередного виджета, он получает столько
пространства, сколько осталось. Если полость сокращается до нуля, все оставшиеся
виджеты в списке упаковки удаляются с экрана. Если размеры окна будут увеличены,
они появятся на экране.РАСШИРЕНИЕ ВИДЖЕТОВ
Если мастер-окно оказалось больше, чем необходимо для размещения всех
виджетов, оставшееся пространство распределяется равномерно между теми
виджетами, для которых установлена опция -expand. Дополнительное
горизонтальное пространство распределяется между теми виджетами, у которых опция
-side равна left или right. Вертикальное пространство
распределяется между виджетами, у которых опция -side равна top
или bottom.РАСПРОСТРАНЕНИЕ РАЗМЕРОВ
Обычно менеджер рассчитывает размеры мастер-окна, необходимые для
размещения виджетов, и, при необходимости, устанавливает размеры мастер-окна
таким образом, чтобы в нем в точности поместились все виджеты из списка. Это
приводит к тому, что информация о размерах виджетов распространяется по
иерархическому дереву виджетов, в результате чего целое поддерево изменяет свои
размеры при изменении одного из листьевых элементов. Однако команда pack
propagate может быть использована для отключения этого механизма для
одного или нескольких мастер-окон. Если распространение размеров отключено,
информация о необходимых размерах не передается мастер-окну. Это может оказаться
полезным, если вы хотите, чтобы мастер-окно сохраняло те размеры, которые вы
определили.ОГРАНИЧЕНИЯ НА
МАСТЕР-ОКНА
Мастер-окно для каждого размещаемого виджета должно быть его
непосредственным предком (по умолчанию) или одним из потомков его предка. Это
ограничение гарантирует разумное поведение виджетов при удалении
toplevel-окон.ПОРЯДОК
РАЗМЕЩЕНИЯ
Если мастер-окно для виджета не является его непосредственным предком,
необходимо быть уверенным, что виджет лежит в стеке окон выше, чем мастер-окно.
В противном случае мастер-окно закроет собой виджет и создастся впечатление, что
виджет не упакован правильным образом. Простейший способ избежать подобных
проблем — следить, чтобы -окно было создано раньше, чем виджет (чем позже
создано окно, тем выше оно в стеке). Если это почему-либо неудобно, можно
использовать команды raise и lower для изменения порядка окон в
стеке.
pack-old
Устаревшая команда для геометрического менеджера упаковки оконСИНТАКСИС
pack after sibling окно параметры ? окно параметры...?
pack append parent окно параметры? окно параметры...?
pack before sibling окно параметры? окно параметры...?
pack unpack окно
ОПИСАНИЕ
Замечание. Ниже описан синтаксис команды pack,
употреблявшейся в версиях Tk до 3.3. Хотя в целях совместимости поддержка
команды в системе сохранена, команда является устаревшей и использовать ее не
следует. Возможно, в будущем ее поддержка прекратится.
Упаковщик представляет собой геометрический менеджер, предназначенный для
размещения непосредственных потомков примитива по сторонам примитива в порядке
их появления. Первый потомок размещается вдоль одной стороны примитива, занимая
всю протяженность окна вдоль этой стороны. В результате, для следующих потомков
остается усеченное окно, как если бы выбранная сторона сдвинулась внутрь на
размер первого потомка. Вдоль одной из сторон оставшейся области размещается
второй потомок, и так далее до тех пор, пока не будут размещены все потомки или
пока не исчерпается свободное место.
Формы before, after и append команды pack
используются для вставки одного или нескольких непосредственных потомков в
очередь упаковки их родителя. В форме before команда вставляет
окно-потомка перед родственными узлами; все остальные окна должны быть узлами
одного уровня. В форме after окна вставляются после родственных узлов, а
в форме append добавляет одно или несколько окон к очереди упаковки их
родителя. Если окно, указанное в любой из этих команд уже
упаковано в родительское окно, то оно удаляется со своего текущего положения в
порядке упаковки и перемещается в соответствии с командой. Все эти команды
возвращают в качестве результата пустую строку.
Форма unpack команды pack command удаляет окно из
очереди упаковки его родителя и стирает его с экрана. После выполнения этой
команды упаковщик более не управляет геометрией окна.
На самом деле, размещение каждого потомка представляет собой
четырехступенчатую процедуру; значение параметра, следующего за
окном, представляет собой список из одного или нескольких полей,
управляющих размещением окна. В нижеследующем обсуждении термин “полость”
(cavity) обозначает место в окне-родителе, оставшееся после размещения
конкретного потомка (т.е. все то место, которое не было запрошено при размещении
предыдущих потомков в очереди). Термин “доля” (parcel) обозначает
количество места, отведенного конкретному потомку; это количество не обязательно
соответствует окончательной геометрии окна-потомка.
Первый шаг в размещении потомка состоит в выборе стороны полости, вдоль
которой он будет располагаться. Для указания стороны можно пользоваться любым из
следующих параметров:
top
Отводит долю потомка у верхней стороны полости на всю ширину
полости.bottom
Отводит долю потомка у нижней стороны полости на всю ширину
полости.left
Отводит долю потомка у левой стороны полости на всю высоту
полости.right
Отводит долю потомка у правой стороны полости на всю высоту полости.
Для каждого окна следует задать ровно один из этих параметров. Значением
стороны по умолчанию является top. Второй шаг состоит в определнии доли
потомка. Для верхнего и нижнего окон желательная ширина доли
обычно совпадает с шириной полости, а желательная высота совпадает с запрошенной
высотой доли, которая передается команде Tk_GeometryRequest. Для левого и
правого окон желательная высота доли обычно совпадает с высотой полости,
а желательная ширина совпадает с запрошенной шириной доли. Однако с помощью
каждого из описанных ниже параметров для окна можно запросить дополнительное
место:
padx число
Добавляет число пикселей к запрошенной ширине окна перед вычислением
размера доли, как это было описано выше.pady число
Добавляет число пикселей к запрошенной высоте окна перед вычислением
размера доли, как это было описано выше.expand
Этот параметр указывает на то, что доля окна захватывает все свободное
пространство, оставшееся в полости окна-родителя после упаковки всех его
потомков. Размер оставшегося пространства зависит от размеров, запрошенных для
всех потомков; он может равняться нулю. Если расширения (expand)
затребовали несколько окон, то вся дополнительная ширина будет поделена поровну
между всеми левыми и правыми окнами, запросившими
расширение, а вся дополнительная высота будет поделена поровну между
всеми верхними и нижними окнами, запросившими
расширение.Если желаемая ширина или высота превосходит
соответствующую протяженность полости, то вместо нее используется эта размер
этой протяженности.
На третьем шаге размещения окна следует принять решение о его ширине и
высоте. По умолчанию окно получает либо запрошенные ширину и высоту, либо ширину
и высоту доли — в зависимости от того, что из них меньше. Если доля больше, чем
запрошенный размер окна, то окно можно расширить так, чтобы оно полностью или
частично покрывало долю, с помощью следующих параметров:
fill
Делает размеры окна равными размерам доли.fillx
Увеличивает ширину окна до ширины доли, сохраняя высоту
окна.filly
Увеличивает высоту окна до высоты доли, сохраняя ширину окна.На
последнем этапе происходит размещение окна внутри его доли. Если размеры окна и
доли совпадают, то окно просто целиком заполняет долю. Если доля больше окна, то
положение окна определяется с помощью одного из следующих параметров:
frame center
Размещает окно по центру доли. Если параметр размещения опущен, то
центральное размещение принимается по умолчанию.frame n
Размещает окно так, что его верхняя сторона располагается по центру верхней
стороны доли.frame ne
Размещает окно так, что его правый верхний угол располагается в правом
верхнем углу доли.frame e
Размещает окно так, что его правая сторона располагается по центру правой
стороны доли.frame se
Размещает окно так, что его правый нижний угол располагается в правом
нижнем углу доли.frame s
Размещает окно так, что его нижняя сторона располагается по центру нижней
стороны доли.frame sw
Размещает окно так, что его левый нижний угол располагается в левом нижнем
углу доли.frame w
Размещает окно так, что его левая сторона располагается по центру левой
стороны доли.frame nw
Размещает окно так, что его левый верхний угол располагается в левом
верхнем углу доли.Упаковщик управляет состоянием
размещенный/неразмещенный всех упакованных непосредственных окон-потомков. При
упаковке окон упаковщик автоматически выводит их на экран; кроме того, он
стирает окна, для которых в полости остается недостаточно места.
Упаковщик посылает геометрические запросы от имени родителя размещаемых окон.
Для каждого окна-родителя он запрашивает размер, достаточный для размещения всех
упакованных потомков в соответствии с указанными параметрами, так что на
расширение остается нулевой остаток.
photo
Встроенный тип полноцветных изображений Tk.
Синтаксис
Описание
Создание
изображений типа photo
Команда
image
Форматы
изображений
Распределение
цветов СИНТАКСИС
image create photo ?имя? ?параметры?ОПИСАНИЕ
Пиксели изображения типа photo могут быть любого цвета, а также
могут быть прозрачными. При сохранении изображений этого типа каждый пиксель
кодируется 24 битами; при выводе пиксела при необходимости используется
приближение (dithering). Закодированные данные могут быть представлены в виде
файла или строки, а также в виде C кода через процедурный интерфейс. В настоящее
время поддерживаются только форматы GIF и PPM/PGM; однако в системе имеется
интерфейс, облегчающий добавление новых форматов изображений. Области, данные
для которых не представлены, при выводе изображения оказываются
прозрачными.СОЗДАНИЕ ИЗОБРАЖЕНИЙ ТИПА
photo
Как и все остальные изображения, изображения типа photo создаются командой
image
create. Команда поддерживает следующие параметры:
-channel идКанала
Параметр задает имя канала, открытого для чтения, по которому должно
поступить изображение типа photo. Формат данных в канале должен быть таким, для
которого существует соответствующая программа чтения данных из файла или
канала.-data строка
Задает содержимое изображения в виде строки. Формат данных в строке должен
быть таким, для которого существует соответствующая программа чтения данных из
строки. Если заданы оба параметра -data и -file, то
параметр -file подавляет значение параметра
-data.-format имя-формата
Задает имя файла, содержащего описание формата данных, указанных
параметрами -data или -file.-file
имя
Задает имя файла, содержащего данные для изображения типа photo. Формат
файла должен быть таким, для которого существует соответствующая программа
чтения данных из файла или канала.-gamma значение
Указывает на то, что распределение цветов для вывода данного изображения в
окне должно быть исправлено для нелинейного дисплея с помощью показателя
экспоненты gamma. (В большинстве CRT интенсивность вывода является
показательной функцией введенного значения, что обеспечивает качественное
приближение; gamma — это показатель экспоненты, его значение обычно
близко к “2”). Указанное значение должно быть положительным. По умолчанию
параметр имеет значение `1’ (коррекция не производится). Значения, большие
единицы, осветляют изображение, меньшие единицы — делают его
темнее.-height число
Задает высоту изображения в пикселах. Этот параметр оказывается полезным, в
первую очередь, в ситуациях, когда пользователь строит изображение по частям.
Значение ноль (принятое по умолчанию) обеспечивает возможность вертикального
растяжения или сжатия изображения в соответствии с его
содержимым.-palette спец-палитры
Задает разрешение цветов выделенного изображению и число
используемых цветов из палитр окон размещения изображения. Строка параметра
спец-палитры может представлять собой либо одно десятичное число, задающее число
используемых оттенков серого цвета, либо три десятичных числа, разделенных
наклонными косыми чертами (/), задающих число используемых оттенков красного,
зеленого и голубого цветов. Если строка состоит из одного десятичного числа, то
будет выводиться монохромное изображение (оттенками серого
цвета).-width число
Задает ширину изображения в пикселах. Этот параметр оказывается полезным, в
первую очередь, в ситуациях, когда пользователь строит изображение по частям.
Значение ноль (принятое по умолчанию) обеспечивает возможность горизонтального
растяжения или сжатия изображения в соответствии с его
содержимым.КОМАНДА
IMAGE
При создании изображения типа photo Tk создает также новую
команду, имя которой совпадает с именем вновь созданного изображения. С помощью
этой команды можно выполнять различные операции над изображением. Она имеет
следующий общий вид:
imageName параметр ?арг арг ...?
Параметр и аргументы уточняют поведение команды.
Параметры, приводящие к дописыванию данных в изображение, обычно приводят к
увеличению размеров изображения, за исключением случаев, когда пользователь
задал ненулевые значения параметров конфигурации -width и/или
-height; в последнем случае ширина и/или высота изображения не
изменяются.
Изображения типа photo поддерживают следующие команды:
имяИзображения blank
Очищает изображение, т.е. устанавливает, что в изображении нет данных,
поэтому при выводе оно оказывается прозрачным, и на его месте видно содержимое
содержащего его окна.имяИзображения cget
параметр
Возвращает текущее значение параметра конфигурации с именем
параметр. Параметр может быть любым из параметров команды image
create photo.имяИзображения configure параметр
значение параметр значение ...
Запрашивает значения параметров конфигурации изображения или изменяет их.
Если параметр не указан, то возвращает список, содержащий значения всех
допустимых в имениПути параметров (формат списка описан в
Tk_ConfigureInfo). Если параметр задан, а его новое значение - нет,
то команда возвращает часть полного списка, относящуюся к указанному параметру.
Если заданы одна или несколько пар параметр-значение, то указанным параметрам
примитива присваиваются новые значения, а команда возвращает пустую строку.
Параметр может быть любым из параметров команды image create
photo.имяИзображения copy исхИзобр
?параметр значение(я) ...?
Копирует область изображения с именем исхИзобр (которое должно быть
изображением типа photo) в изображение с именем имяИзображения,
возможно с растяжением пикселей и/или subsampling. Если параметры не заданы, то
команда копирует в имяИзображения все исходное изображение, начиная с
точки с координатами (0,0) в изображении имяИзображения. В команде могут
быть заданы следующие параметры:
-from x1 y1 x2 y2
Задает предназначенную для копирования прямоугольную область в исходном
изображении. Точки с координатами (x1,y1) и (x2,y2) задают
противоположные углы прямоугольника. Если параметры x2 иy2 не
заданы, то их значениями по умолчанию являются координаты нижнего правого угла
исходного изображения. В копируемую область включаются левая и верхняя стороны
прямоугольника, но не его нижняя и правая стороны. Значением параметра
-from по умолчанию является все исходное изображение.-to
x1 y1 x2 y2
Задает прямоугольную подобласть в изображении имяИзображения. Точки
с координатами (x1,y1) и (x2,y2) задают противоположные углы
прямоугольника. Если координаты x2 и y2 не заданы, то их
значениями по умолчанию являются значения координат (x1,y1), к которым
прибавлены размеры исходной области (после subsampling??? и увеличения, если они
требуются). Если координаты x2 и y2 заданы, то копируемая область
будет при необходимости воспроизведена несколько раз для замощения всего
отведенного прямоугольника.-shrink
Указывает на то, что размер отведенной области должен быть при
необходимости уменьшен таким образом, чтобы копируемый прямоугольник оказался в
ее правом нижнем углу. Если пользователь задал ненулевые значения параметров
конфигурации -width или -height , то параметр -shrink
не окажет влияния на ширину или высоту соответственно.-zoom
x y
Задает необходимость растяжения копируемой области с коэффициентом x
в X-направлении и с коэффициентом y в Y-направлении. При задании этого
параметра каждый пиксел исходного изображения при копировании будет представлен
в виде прямоугольника x * y пикселей одного цвета. Оба числа x и y должны быть
положительными.-subsample x y
Указывает на необходимость уменьшения исходного изображения за счет
использования только каждого x-го пикселя в X-направлении и каждого y-го пикселя
в Y-направлении. Отрицательные значения параметров приводят к отражению в
соответствующем направлении. Если параметр y не задан, то его значение по
умолчанию совпадает со значением параметра
x.имяИзображения get x
y
Возвращает цвет пиксела с координатами (x,y) в указанном изображении
в виде списка из трех целых чисел в промежутке от ‘0’ до ‘255’, описывающих
соответственно его красную, зеленую и голубую
составляющие.имяИзображения put данные
?-tox1 y1 x2 y2?
Устанавливает цвета пикселей, заданные параметром данные. Этот
параметр используется для формирования двумерного массива пикселей, который
затем копируется в изображение имяИзображения. Данные представляют собой
список строк, идущих сверху вниз, каждая из которых является списком цветов,
идущих слева направо. Каждый цвет задается именем (например, blue) или в
шестнадцатеричном виде (например, #2376af). С помощью параметра
-to можно отвести область для размещения массива. Если заданы только
координаты x1 и y1, то верхним левым углом отведенной области
является точка с координатами (x1,y1), а размеры области совпадают с
размерами массива. Если указаны все четыре координаты, то они задают
противоположные углы отведенного прямоугольника, и содержимое массива будет при
необходимости повторено в X- и Y-направлениях для замощения всего отведенного
прямоугольника.имяИзображения read имяфайла
?параметр значение(я) ...?
Читает данные из файла с именем имяфайла в изображение с именем
имяИзображения. Выполнение команды начинается с просмотра списка программ
обработки форматов файлов изображений в поисках программы, способной
интерпретировать данные в указанном файле; затем эти данные читаются из файла в
изображение с именем имяИзображения. Команда может иметь следующие
параметры:
-format имя-формата
Задает формат данных в файле с именем имяфайла. Точнее
говоря, при поиске в списке программ обработки будут просматриваться только те
программы, имена которых начинаются с
имени-формата.-from x1 y1 x2 y2
Задает прямоугольную подобласть в изображении, описываемом данными файла,
которую необходимо скопировать в изображение с именем имяИзображения.
Если заданы только параметры x1 и y1, то они задают координаты
левого верхнего угла подобласти, а ее правый нижний угол совпадает с правым
нижним углом всего изображения в файле. Если заданы все четыре координаты, то
они задают два противоположных угла подобласти. Если этот параметр не задан, то
по умолчанию копируется все изображение.-shrink
Если присутствует этот параметр, то размер изображения с именем
имяИзображения при необходимости уменьшается таким образом, чтобы
прямоугольник, отведенный под содержимое файла изображения, находился в правом
нижнем углу изображения с именем имяИзображения. Если пользователь задал
ненулевые значения параметров конфигурации -width или -height, то
параметр -shrink не будет оказывать влияния соответственно на ширину или
высоту изображения-to x y
Задает координаты верхнего левого угла прямоугольника в изображении с
именем имяИзображения, отводимого под данные из файла. По умолчанию
параметр имеет значение (0,0).имяИзображения
redither
При выводе изображений типа photo используется алгоритм приближения
(dithering) , который распространяет дискретные ошибки с пиксела на его соседей.
Если данные для изображения имяИзображения поставляются частями, то
результат приближения может быть не вполне корректным. Обычно эта некорректность
на взгляд незаметна, однако при серьезных нарушениях с помощью данной команды
можно пересчитать необходимые приближения в каждом окне, в котором выводится
данное изображение.имяИзображения write
имяфайла ?параметр значение(я) ...?
Записывает изображение имяИзображения в файл с именем
имяфайла. Может иметь следующие параметры:
-format имя-формата
Задает имя программы обработки файла изображения, которую следует
использовать при записи данных в файл. Точнее говоря, данная подкоманда ищет
первую программу обработки в списке, начало имени которой совпадает с началом
имени-формата и которая способна записывать данные в файл. Если этот параметр не
задан, то эта подкоманда использует первую программу обработки, способную
записывать данные в файл изображения.-from x1 y1 x2 y2
Задает прямоугольную область в изображении с именем имяИзображения,
которую следует переписать в файл изображения. Если заданы только значения
x1 и y1, то они задают верхний левый угол прямоугольника, а его
нижний правый угол совпадает с нижним правым углом изображения. Если заданы все
четыре координаты, то они задают противоположные углы прямоугольника. Если
параметр не задан, то по умолчанию копируется все
изображение.ФОРМАТЫ ИЗОБРАЖЕНИЙ
При создании программ обработки изображений типа photo предусмотрена
возможность легкого добавления новых форматов файлов изображений. Все программы
занесены в список. Добавление программы в список происходит в результате
выполнения команды Tk_CreatePhotoImageFormat. В стандартном дистрибутиве
Tk содержатся программы обработки для форматов PPM/PGM и GIF, которые
автоматически заносятся в список при инициализации.
При чтении файла изображения или обработке строки данных, заданной в
параметре конфигурации -data, команда photo image просматривает
программы обработки одну за другой, пока не найдется такая, которая утверждает,
что она способна читать данные из файла или строки. Результатом поиска обычно
бывает правильная программа обработки. В противном случае пользователь может
задать имя программы обработки с помощью параметра -format.
На самом деле команда photo image просматривает только те программы
обработки, имена которых начинаются со строки, заданной параметром
-format (при сравнении регистр не учитывается). Если, например,
пользователь указал -format gif, то могут выполняться программы обработки
GIF87 или GIF89, но не программа JPEG (если такие программы были внесены в
список).
При записи изображения в файл параметр -format обрабатывается
несколько другим способом: строка, являющаяся его значением, должна начинаться с
полного имени запрашиваемой программы обработки, за которым может следовать
дополнительная информация. Эта дополнительная информация может, например,
сообщать программе, какую из версий формата следует использовать.
РАСПРЕДЕЛЕНИЕ ЦВЕТОВ
При выводе изображения типа photo в окно команда photo image
отводит цвета и, при необходимости, возмущает изображение, заменяя отсутствующие
цвета доступными. Выделяемые цвета образуют куб: число возможных составных
цветов представляет собой произведение чисел оттенков красного, зеленого и
голубого цветов.
Обычно выбор числа цветов определяется глубиной окна. Например, в 8-битовом
окне PseudoColor команда photo image пытается отвести семь оттенков
красного, семь оттенков зеленого и четыре оттенка голубого, всего 198 составных
цветов. Для 1-битового окна StaticGray (монохромного) команда отводит два цвета,
белый и черный. Для 24-битовых окон DirectColor или TrueColor команда отводит по
256 оттенков каждого из трех цветов. Если не удается отвести все цвета, то
команда photo image уменьшает число оттенков каждого простого цвета и
производит новую попытку размещения.
Пользователь может частично управлять выбором числа цветов с помощью
параметра конфигурации -palette. При использовании этого параметра в нем
задается максимальное число используемых оттенков каждого из простых цветов.
Кроме того с помощью этого параметра можно потребовать представления изображения
оттенками серого цвета даже в цветном окне, задав одно число вместо трех,
разделенных наклонными чертами.
place
Геометрический менеджер, обеспечивающий размещение виджетов в абсолютных
или относительных координатах.
Синтаксис
Описание
Замечание
СИНТАКСИС
placewindow
option value ?option value ...?
place
configurewindow option value ?option value ...?
place
forgetwindow
place
info window
place
slaveswindow
ОПИСАНИЕ
Геометрический менеджер place позволяет размещать виджеты в их
мастер-окнах, используя прямые указания о размерах и размещении виджета. Кроме
того, с его помощью можно добиваться режима “резинового листа“, указывая размеры
и размещение виджета в долях размера мастер-окна. При этом виджеты изменяют свои
размеры при изменении размеров мастер окна. И, наконец, менеджер place позволяет
сочетать оба этих метода, размещая, например, виджет определенного размера в
центре мастер-окна.
Команда place используется для управления соответствующим
геометрическим менеджером и для получения от него справочной информации. Команда
может иметь перечисленные ниже формы.
placewindow option value ?option value
...?
Если первый аргумент команды является именем окна (любая величина,
начинающаяся с “.“), команда выполняется точно так же, как команда place
configure.
place configurewindow
option value ?option value ...?
Аргумент команды состоит из имени размещаемого виджета, после которого идут
пары аргументов, состоящих из имени опции и ее значения. Если виджет уже
обрабатывался с помощью команды place, то для не определенных в команде
опций будут использоваться старые значения, а не значения по умолчанию. Команда
возвращает пустую строку
Ниже перечислены возможные опции.
-in master
Аргумент master определяет полное имя виджета (мастер-окна),
относительно которого будет размещаться виджет window. Мастер-окно должно быть
непосредственным предком виджета, или потомком этого предка. При этом они оба
должны быть потомками одного и того же toplevel-окна. Эти ограничения
необходимы, чтобы гарантировать, что виджет будет виден, когда видно
мастер-окно. По умолчанию виджет размещается в своем непосредственном
предке.
-x location
Аргумент location определяет x-координату в
мастер-окне для якорной точки виджета. Координата указывается на экране в одной
из следующих форм:
- в пикселях (число),
- в сантиметрах (число с буквой cна конце),
- в миллиметрах (число с буквой mна конце),
- в дюймах (число с буквой iна конце)
- в точках (число с буквой pна конце, точка равна 1/72 дюйма).
Якорная точка не обязана находиться внутри мастер-окна.-relx
location
Аргумент location определяет x-координату в мастер
окне для якорной точки виджета. Координата указывается на экране в виде
десятичного числа в долях соответствующего размера мастер-окна. Так “0.0”
соответствует левому краю мастер окна, 1.0 — правому краю. Если указаны обе
опции, -x и -relx, то соответствующие величины
складываются. Например, -relx 0.5 -x -2 помещает якорную точку на два
пикселя левее центра мастер-окна.
-y location
Аргумент location определяет y-координату в мастер-окне для якорной
точки виджета. Координата указывается на экране в одной из следующих
форм:
- в пикселях (число),
- в сантиметрах (число с буквой cна конце),
- в миллиметрах (число с буквой mна конце),
- в дюймах (число с буквой iна конце),
- в точках (число с буквой iна конце, точка равна 1/72
дюйма).
Якорная точка не обязана находиться внутри мастер-окна.
-rely location
Аргумент location определяет y-координату в
мастер-окне для якорной точки виджета. Координата указывается на экране в виде
десятичного числа в долях соответствующего размера мастер-окна. Так 0.0
соответствует верхнему краю мастер-окна, 1.0 — нижнему краю. Если указаны обе
опции, -y и -rely, то соответствующие величины
складываются. Например, -rely 0.5 -y -3 помещает якорную точку на три
пикселя ниже центра мастер-окна.-anchor where
Аргумент where определяет, какая точка виджета будет помещена в
якорной точке, заданной с помощью опций -x, -y,
-relx и -rely. В якорную точку помещается крайняя точка виджета
(включая границу, если она задана). Так значение se означает, что в
якорную точку будет помещен нижний правый угол виджета. Значение по умолчанию
nw.-width size
Аргумент size определяет ширину виджета на экране (допустимы те же
формы, что и для опций -xи -y). Ширина — это внешняя
ширина виджета, включая его границу (если она задана). Если аргумент
представляет собой пустую строку или если ни опция -width, ни опция
-relwidth не определены, ширина виджета определяется исходя из его
собственных запросов.-relwidth size
Аргумент size определяет ширину виджета на экране. Ширина
указывается в виде десятичного числа в долях соответствующего размера
мастер-окна. Так 0.5 соответствует ширине в половину ширины мастер-окна. Если
укзаны обе опции, -width и -relwidth, то соответствующие величины
складываются. Например, -relwidth 1.0 -width 5 делает виджет на 5
пикселей шире мастер-окна.-height size
Аргумент size определяет высоту виджета на экране (допустимы те же
формы, что и для опций -xи -y). Высота — это внешняя
высота виджета, включая его границу (если она задана). Если аргумент
представляет собой пустую строку или если ни опция -height, ни опция
-relheight не определены, высота виджета определяется исходя из его
собственных запросов.-relheight size
Аргумент size определяет высоту виджета на экране. Высота
указывается в виде десятичного числа в долях соответствующего размера
мастер-окна. Так ‘0.5’ соответствует высоте в половину высоты мастер-окна. Если
указаны обе опции, -height и -relheight, то соответствующие
величины складываются. Например, -relheight 1.0 -height -2делает
виджет на 2 пикселя ниже мастер-окна.-bordermode mode
Аргумент mode определяет, используются ли границы мастер-окна при
определении положения размещаемого виджета.Значение по умолчанию,
которое используется наиболее часто, —
inside. Оно означает, что менеджер
рассматривает в качестве мастер-окна его внутреннюю часть без границы. Опция
-x 0 означает при этом точку внутри границы мастер-окна. А опция
-relwidth 1.0 означает, что виджет будет размещен внутри соответствующих
границ мастер-окна.
Значение outside означает, что менеджер включает границу мастер-окна в
его состав. Это значение используется обычно, когда нужно разместить виджет вне
его мастер-окна (но в пределах границы мастер-окна), например, как при опциях
-x 0 -y 0 -anchor ne.
Значение ignore означает, что менеджер включает в состав окна все
внутренние границы, но не внешние границы (его официальное X-определение). Это
значение используется, вероятно, реже остальных.
ЗАМЕЧАНИЕ
Если значение одной и той же величины определено дважды с использованием
различных опций, например, если x-координата виджета определена сначала с
использованием опции -x, а позднее повторно определена с
использованием опции -relx, то используется только более позднее
определение.
place slaves window
Эта команда возвращает список всех виджетов, размещенных в мастер-окне.
Если в нем не размещены виджеты, команда возвращает пустой список.place forget window
Окно window больше не управляется менеджером place. Как
следствие, оно удаляется с экрана. Если окно не управлялось менеджером
place, команда не имеет никакого эффекта.Команда возвращает
пустую строку.
place infowindow
Возвращает список опций и их значений для окна window в той же
форме, в какой они задаются в команде place configure. Если конфигурацию
виджета, полученную с помощью этой команды, предполагается впоследствии
восстановить, то перед этим необходимо будет использовать команду place
forget, чтобы удалить текущую конфигурацию, а затем place configure с
сохраненной конфигурацией.В отличие от многих других геометрических
менеджеров place не пытается манипулировать геометрией мастер-окна
(например, переустанавливать их размер “по потребности“). Чтобы управлять
размерами этих окон, для них желательно использовать такие виджеты, как frame или
canvas.
raise
Команда изменяет положение окна в очереди стека.СИНТАКСИС
raise window ?aboveThis?ОПИСАНИЕ
Команда raise перемещает окно window в очереди стека либо
выше всех окон, имеющих одинаковый с window уровень иерархии, либо перед
одним из них, заданного аргументом aboveThis. Данное окно будет заслонять
окна, оказавшиеся ниже его.
scale
Создание примитива линейной шкалы и управление им.
СИНТАКСИС
scale имяПути параметрыСТАНДАРТНЫЕ ПАРАМЕТРЫ
-activebackground |
-font |
-highlightthickness |
-repeatinterval |
-background |
-foreground |
-orient |
-takefocus |
-borderwidth |
-highlightbackground |
-relief |
-troughcolor |
-cursor |
-highlightcolor |
-repeatdelay |
Подробное описание этих параметров приведено в разделе options.ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ
ПРИМИТИВА
Имя параметра: -bigincrement
Имя в Базе: bigIncrement
Класс в Базе: BigIncrement
Некоторые способы обращения со шкалой требуют использования “больших”
шагов. Этот параметр задает величину большого шага. Если его значение равно 0
(как, например, по умолчанию), то большой шаг считается равным 1/10 интервала
шкалы.
Имя параметра: -command
Имя в Базе: command
Класс в
Базе: CommandЗадает префикс команды Tcl, исполняемой при всяком
изменении показателя шкалы какой-либо командой примитива. Сама команда Tcl
состоит из этого префикса, за которым следует пробел и вещественное число,
равное новому значению показателя шкалы.
Имя параметра: -digits
Имя в Базе: digits
Класс в
Базе: DigitsЦелое число, указывающее, сколько значащих цифр следует
сохранить при преобразовании показателя шкалы в строку текста. Если это число
неположительно, то выбирается наименьшее число, обеспечивающее различное
представление всех возможных положений движка шкалы.
Имя параметра: -from
Имя в Базе: from
Класс в
Базе: FromВещественное число — левая или верхняя граница шкалы.
Имя параметра: -label
Имя в Базе: label
Класс в
Базе: LabelСтрока текста, выводимая в качестве названия шкалы. Для
вертикальной шкалы выводится непосредственно справа от верхнего конца шкалы. Для
горизонтальной шкалы название выводится непосредственно выше левого конца шкалы.
Если значением параметра служит пустая строка, то никакого названия не
выводится.
Имя параметра: -length
Имя в Базе: length
Класс в
Базе: LengthЗадает желаемую длину шкалы на экране в пикселах (т.е.
в любой форме, приемлемой для Tk_GetPixels). Это высота вертикальной
шкалы или ширина горизонтальной.
Имя параметра: -resolution
Имя в Базе: resolution
Класс в Базе: Resolution
Вещественное число, задающее цену деления шкалы. Если это значение
положительно, то показатель шкалы будет всегда округляться к целому кратному
этой величины (такими будут, в частности, метки шкалы и границы ее интервала).
Если это значение неположительно, то округления не происходит. Значение
параметра по умолчанию равно `1’ (т.е. показатели должны быть целыми).
Имя параметра: -showvalue
Имя в Базе: showValue
Класс
в Базе: ShowValueБулевское значение, указывающее, следует или нет
выводить текущий показатель шкалы.
Имя параметра: -sliderlength
Имя в Базе: sliderLength
Класс в Базе: SliderLengthЗадает размер движка шкалы
(вдоль его длинной стороны) в пикселах (т.е. в любой форме, приемлемой для
Tk_GetPixels).
Имя параметра: -sliderrelief
Имя в Базе: sliderRelief
Класс в Базе: SliderRelief
Задает вид движка шкалы, например, raised или
sunken.
Имя параметра: -state
Имя в Базе: state
Класс в Базе:
StateЗадает одно из трех состояний шкалы: normal, active
или disabled. Если шкала недоступна, то значение ее показателя нельзя
изменить и шкалу нельзя активизировать. Движок на активной шкале изображается
цветом, заданным параметром activeBackground.
Имя параметра: -tickinterval
Имя в Базе: tickInterval
Класс в Базе: TickInterval
Вещественное число, определяющее величину промежутка между числовыми
метками снизу или слева от движка. Если значение параметра равно “0”, то метки
не выводятся.
Имя параметра: -to
Имя в Базе: to
Класс в Базе:
To
Вещественное число — правая или нижняя граница шкалы. Может быть как
меньше, так и больше значения, задаваемого параметром from.
Имя параметра: -variable
Имя в Базе: variable
Класс в
Базе: VariableЗадает имя глобальной переменной, ассоциированной со
шкалой. При изменении значения переменной шкала обновляется и показывает новое
значение. При интерактивном изменении показателя шкалы происходит
соответствующее изменение значения переменной.
Имя параметра: -width
Имя в Базе: width
Класс в Базе:
WidthЗадает желаемую толщину полосы шкалы (в любой форме,
приемлемой для Tk_GetPixels). Для вертикальной шкалы это ее
ширина, для горизонтальной — высота.ОПИСАНИЕ
Команда scale создает новое окно (задаваемое аргументом
имяПути) и превращает его в примитив линейной шкалы. Детали изображения
шкалы, такие как ее цвета, ориентация и объемный вид задаются с помощью
описанных выше дополнительных параметров. Команда scale возвращает аргумент
имяПути. В момент выполнения этой команды не должно существовать окна с
именем имяПути, но должен существовать его предок.
Шкала представляет собой примитив, который выводит на экран прямоугольную
полоску шкалы и маленький движок. Полоска отображает интервал
вещественных чисел (определенный параметрами from, toи
resolution), а положение движка задает некоторое конкретное число на этом
интервале. Положение движка (а значит, и показатель шкалы) можно менять с
помощью “Мыши” или клавиатуры, как описано ниже (см. “ПРИВЯЗКИ”). При каждом
изменении показателя шкалы исполняется команда Tcl (заданная параметром
command), и другие примитивы получают доступ к результатам выполненного
изменения. Кроме того показатель шкалы можно (с помощью параметра variable)
связать с некоторой переменной, так что изменения значений показателя или
переменной немедленно отзываются друг на друге.
В примитиве шкалы можно вывести также три внешних атрибута: имя шкалы справа
сверху (или слева сверху, если шкала горизонтальна), число непосредственно слева
от движка (непосредственно сверху, если шкала горизонтальна) и набор числовых
меток непосредственно слева от текущего значения (непосредственно снизу, если
шкала горизонтальна). Вывод любого из этих атрибутов можно отменить с помощью
параметров конфигурации.
КОМАНДА ПРИМИТИВА
Команда scale создает новую команду Tcl с именем имяПути. С
помощью этой команды можно выполнять различные операции над примитивом. Ее общий
вид.
имяПути параметр арг арг ...
Параметр и аргументы уточняют поведение команды. Примитивы
линейной шкалы допускают следующие формы команды:
имяПути cget параметр
Возвращает текущее значение параметра конфигурации с
именемпараметр. Параметрможет быть любым из параметров
команды scale.
имяПути configure параметр значение параметр значение
...
Запрашивает значения параметров конфигурации примитива или изменяет их. Если
параметр не указан, то возвращает список, содержащий значения всех допустимых в
имениПути параметров (формат списка описан в Tk_ConfigureInfo).
Если параметр задан, а его новое значение — нет, то команда
возвращает часть полного списка, относящуюся к указанному параметру. Если заданы
одна или несколько пар параметр-значение, то указанным параметрам примитива
присваиваются новые значения, а команда возвращает пустую строку. Параметр может
быть любым из параметров команды scale.
имяПути coords ?значение?
Возвращает список, элементами которого являются x и y координаты точки
посередине полосы шкалы, отвечающей указанному значению. Если аргумент
значение опущен, то возвращаются координаты точки, отвечающей текущему
показателю шкалы.
имяПути get ?x y?
Если аргументы x иy опущены, то возвращает
текущий показатель шкалы. Если они заданы, то они определяют координаты точки в
примитиве; в этом случае команда возвращает значение показателя шкалы,
соответствующего указанной точке. При этом используется только одна из
координат: x для горизонтальной шкалы и y для вертикальной.
имяПути identify x y
Возвращает текстовую строку, указывающую, какая часть шкалы расположена в
точке с координатами xиy. Возвращаемое значение
slider означает, что это точка на движке; trough1 означает, что
точка находится выше или левее движка; trough2означает, что точка
находится ниже или правее движка. Если точка расположена вне шкалы, то команда
возвращает пустую строку.
имяПути set значение
Эта команда предназначена для изменения текущего показателя шкалы, а значит,
и положения движка. Аргумент значение задает новое значение
показателя. Если шкала недоступна, то команда не приводит ни к каким
результатам.
ПРИВЯЗКИ
При создании линейной шкалы Tk автоматически создает привязки класса,
определяющие следующее поведение примитива по умолчанию. В случае, если имеются
различия в поведении вертикальной и горизонтальной шкалы, описание поведения
горизонтальной приводится в скобках.
При нажатии клавиши 1 “Мыши” на полосе шкалы движок сдвигается в направлении
курсора на величину, заданную параметром resolution. Если клавишу
не отпускать, то сдвиг автоматически повторяется.
Если нажать клавишу 1 на движке, то движок можно тащить.
Если нажать клавишу 1 на полосе шкалы при нажатой клавише Control, то
движок пробежит до конца полосы в направлении курсора “Мыши”.
Если нажать клавишу 2, то показатель шкалы будет установлен в положение
курсора “Мыши”. Если тащить “Мышь” с нажатой клавишей 2, то показатель шкалы
будет соответственно меняться.
Нажатие на клавиши Up и Left приводит к перемещению движка
вверх (влево) на величину, указанную параметром resolution.
Нажатие на клавиши Down и Right приводит к перемещению движка
вниз (вправо) на величину, указанную параметром resolution.
Нажатие на клавиши Control-Up и Control-Left приводит к
перемещению движка вверх (влево) на величину, указанную параметром
bigIncrement.
Нажатие на клавиши Control-Down и Control-Right приводит к
перемещению движка вниз (вправо) на величину, указанную параметром
bigIncrement.
Нажатие на клавишу Home приводит к перемещению движка вверх (влево) до
конца полосы.
Нажатие на клавишу End приводит к перемещению движка вниз (вправо) до
конца полосы.
Если шкала сделана недоступной с помощью параметра state, то ни одна
из описанных выше привязок не оказывает какого-либо действия.
Определяя новые привязки к отдельным примитивам или переопределяя привязки
класса, поведение линейной шкалы можно изменить.
scrollbar
Создание примитива линейки прокрутки и управление им.
Синтаксис
Стандартные
параметры
Дополнительные
параметры примитива
Описание
Элементы
Команда
примитива
Команды
прокрутки
Синтаксис
команды
Привязки
СИНТАКСИС
scrollbar имяПути параметрыСТАНДАРТНЫЕ ПАРАМЕТРЫ
-activebackground |
-highlightbackground |
-orient |
-takefocus |
-background |
-highlightcolor |
-relief |
-troughcolor |
-borderwidth |
-highlightthickness |
-repeatdelay |
-cursor |
-jump |
-repeatinterval |
|
Подробное описание этих параметров приведено в разделе options.ДОПОЛНИТЕЛЬНЫЕ
ПАРАМЕТРЫ ПРИМИТИВА
Имя параметра: -activerelief
Имя в Базе: activeRelief
Класс в Базе: ActiveRelief
Задает объемный вид изображения активного элемента. Все неактивные
элементы изображаются выпуклыми.
Имя параметра: -command
Имя в Базе: command
Класс в
Базе: Command
Задает префикс команды Tcl, исполняемой при всяком изменении состоянии
линейки прокрутки пользователем. Сама команда Tcl состоит из этого префикса, за
которым следует дополнительная информация, описанная ниже. Значением этого
параметра обычно является что-нибудь вроде .t xview или .t yview —
имя примитива, за которым следует xview (для горизонтальной линейки)
или yview (для вертикальной). У каждого примитива линейки прокрутки есть
команды xview и yview, аргументы которых описаны ниже (см. "Команды
прокрутки").
Имя параметра: -elementborderwidth
Имя в Базе:
elementBorderWidth
Класс в Базе: ElementBorderWidth
Задает ширину окантовки каждого из внутренних элементов линейки (обеих
стрелок и движка). Значение может быть представлено в любом виде, приемлемом для
Tk_GetPixels. Если заданное значение отрицательно, то вместо него
используется значение параметра borderWidth.
Имя параметра: -width
Имя в Базе: width
Класс в Базе:
WidthЗадает желаемую толщину окна линейки (не включая трехмерной
окантовки, если она имеется) в любой форме, приемлемой для Tk_GetPixels.
Для вертикальной шкалы это ее ширина, для горизонтальной — высота.ОПИСАНИЕ
Команда scrollbar создает новое окно (задаваемое аргументом
имяПути) и превращает его в примитив линейки прокрутки. Детали
изображения линейки, такие как ее цвета, ориентация и объемный вид, задаются с
помощью описанных выше дополнительных параметров. Команда возвращает аргумент
имяПути. В момент выполнения этой команды не должно существовать окна с
именем имяПути, но должен существовать его предок.
Линейка прокрутки представляет собой примитив, который выводит на экран две
стрелки (по одной на каждом конце линейки) и движок в средней части
линейки. Линейка дает информацию о том, что видно в ассоциированном окне
линейки. Это окно содержит какой-нибудь документ — например, редактируемый текст
или рисунок. Размер и положение движка указывают, какая часть документа видна в
окне. Если, например, движок покрывает верхнюю треть вертикальной линейки, то в
ассоциированном окне выведена верхняя треть документа.
Линейки прокрутки используются для перемещения видимой части документа в
ассоциированном окне с помощью “Мыши”. Подробности описаны ниже (см. Привязки).
ЭЛЕМЕНТЫ
Линейка прокрутки состоит из пяти элементов, на которые ссылаются команды
примитива:
arrow1
Верхняя или левая стрелка линейки.trough1
Промежуток между движком и первой стрелкой.slider
Прямоугольник, который показывает, какая часть документа видна на
экране.trough2
Промежуток между движком и первой стрелкой.arrow2
Нижняя или правая стрелка линейки.КОМАНДА ПРИМИТИВА
Команда scrollbar создает новую команду Tcl с именем имяПути.
С помощью этой команды можно выполнять различные операции над примитивом. Ее
общий вид
имяПути параметр арг арг ...
Параметр и аргументы уточняют поведение команды. Примитивы
линейки прокрутки допускают следующие формы команды:имяПути
activate элемент
Помечает элемент, заданный аргументом элемент, как активный. Активный
элемент отображается на экране с использованием значений параметров
activeBackground и activeRelief. Значениями аргумента могут быть только
arrow1, slider или arrow2. Если элемент не задан, то
команда возвращает имя текущего активного элемента; если активных элементов нет,
то команда возвращает пустую строку.имяПути cget
параметр
Возвращает текущее значение параметра конфигурации с именем
параметр. Параметр может быть любым из параметров команды
scrollbar.имяПути configure параметр
значение параметр значение ...
Запрашивает значения параметров конфигурации примитива или изменяет их.
Если параметр не указан, то возвращает список, содержащий значения всех
допустимых в имениПути параметров (формат списка описан в
Tk_ConfigureInfo). Если параметр задан, а его новое значение
— нет, то команда возвращает часть полного списка, относящуюся к указанному
параметру. Если заданы одна или несколько пар параметр-значение,
то указанным параметрам примитива присваиваются новые значения, а команда
возвращает пустую строку. Параметр может быть любым из параметров команды
scrollbar.
имяПути delta прирX прирY
Возвращает вещественное число, задающее изменение показателя линейки при
данном перемещении движка. Например, если линейка горизонтальна, то результат
указывает, насколько нужно изменить показатель линейки, чтобы движок сдвинулся
вправо на прирX пикселей (в этом случае значение аргумента прирY
игнорируется). Если линейка вертикальна, то результат указывает, насколько нужно
изменить показатель линейки, чтобы движок сдвинулся вниз на прирY
пикселей. Как аргументы, так и результат могут принимать отрицательные и
нулевое значения.имяПутиfraction x y
Возвращает вещественное число между нулем и единицей, указывающее, где на
полосе линейки лежит точка с координатами x и y. Значение `0’ соответствует
самой левой или самой верхней точке полосы, значение `1’ — самой правой или
самой нижней, `0.5’ указывает на середину полосы и т.д. Координаты x и y — это
координаты в пикселях относительно примитива линейки. Если они задают точку вне
полосы линейки, то вместо нее используется точка полосы, ближайшая к
заданной.имяПути get
Возвращает показатели линейки в виде списка, элементы которого — значения
аргументов последней выполненной команды примитива
set.имяПути identify x y
Возвращает имя элемента, занимающего точку с координатами (x,y) (например,
arrow1). Если точка расположена вне линейки, то команда возвращает пустую
строку. Координаты x и y — это координаты в пикселах относительно примитива
линейки.имяПути set перв послед
Эта команда выполняется примитивом, ассоциированным с линейкой, и сообщает
линейке текущий вид этого примитива. Значением каждого из двух аргументов
команды является число в промежутке от ‘0’ до `1’. Эти числа описывают видимую в
окне примитива область документа. Если, например, значение аргумента перв
равно `0.2’, а значение аргумента послед равно `0.4’, то верхушка видимой
части документа отстоит на 20% от его начала, а конец видимой части — на 40% от
начала.КОМАНДЫ
ПРОКРУТКИ
Когда пользователь взаимодействует с линейкой прокрутки (например, тащит
движок), линейка требует от ассоциированного примитива изменения его состояния.
Это требование осуществляется за счет исполнения команды Tcl, которая
генерируется исходя из значения параметра -command примитива линейки.
Команда может иметь один из следующих видов, где префикс — это значение
параметра -command (обычно что-нибудь вроде .t yview).
префикс moveto величина
Величина представляет собой вещественное число между нулем и единицей.
Примитив должен изменить содержимое окна таким образом, чтобы точка, заданная
аргументом величина, располагалась в начале окна. Например, величина равная ‘0’
указывает на начало документа, `1.0’ — на его конец, `0.333’ — на точку,
отстоящую от начала документа на одну треть и т.д.префикс
scroll число units
Сдвигает содержимое окна примитива на число единиц. Единицы — это
порции документа, имеющие смысл для документа данного типа (например, символы
или строчки для текстового примитива). Аргумент число может принимать
значение `1' (и тогда одна единица должна уйти из окна вверх или влево), или
`-1’ (и тогда одна единица должна уйти из окна вниз или
вправо).префикс scroll числоpages
Содержимое окна примитива должно сдвинуться на число страниц.
Страницы — это порции документа, имеющие смысл для документа данного типа;
обычно размер порции несколько меньше того, что помещается в окне, и поэтому
новое содержимое окна частично перекрывается со старым. Аргумент число
может принимать значение `1’ (и тогда становится видимой следующая страница),
или `-1’ (и тогда становится видимой предыдущая страница).СИНТАКСИС КОМАНДЫ
В младших версиях Tk (до 4.0) команды примитива set и get
имели другой вид. В целях совместимости эта форма команд поддерживается и до сих
пор, однако использовать ее не стоит. Вот старый вид команды:
имяПути set числоЕдин окноЕдин первЕдин последЕдин
Значения всех аргументов команды должны быть целыми числами. Аргумент
числоЕдин задает общее число единиц в документе. Единицы — это порции
документа, имеющие смысл для документа данного типа (например, строчки для
текстового примитива). Аргумент окноЕдин указывает число единиц, одновременно
помещающихся в окно ассоциированного примитива. Аргументы первЕдин и
последЕдин указывают индексы первой и последней единиц, находящихся в
окне в текущий момент (ноль указывает на первую единицу
объекта).В старом синтаксисе команда get
возвращала список из четырех целых чисел — значений аргументов последней
выполненной команды примитива set.
В старом синтаксисе команды, генерируемые примитивом линейки, также имеют
другой вид:
префикс единица
Аргумент единица представляет собой целое число, указывающее, что
должно появляться вверху или слева в окне ассоциированного примитива. Этот
аргумент интерпретируется так же, как и аргументы первЕдин и
последЕдин команды примитива set.Последняя выполненная
команда примитива set определяет, следует ли использовать старый синтаксис. Если
ее аргументы — два вещественных числа, то в дальнейшем будет использоваться
новый синтаксис, а если четыре целых — то старый.ПРИВЯЗКИ
При создании линейки прокрутки Tk автоматически создает привязки класса,
определяющие следующее поведение примитива по умолчанию. В случае, если имеются
различия в поведении вертикальной и горизонтальной линеек, описание поведения
горизонтальной приводится в скобках.
При нажатии клавиши 1 “Мыши” на стрелке 1 (arrow1) содержимое окна
ассоциированного примитива сдвигается вниз (вправо) на одну единицу. Если
клавишу не отпускать, то сдвиг автоматически повторяется.
При нажатии клавиши 1 “Мыши” на полосе 1 (trough1) содержимое окна
ассоциированного примитива сдвигается вниз (вправо) на один экран. Если клавишу
не отпускать, то сдвиг автоматически повторяется.
Если нажать клавишу 1 на движке, то движок можно тащить. Если значение
параметра jump — истина, то содержимое окна не меняется, пока не отпущена
клавиша “Мыши”.
При нажатии клавиши 1 “Мыши” на полосе 2 (trough2) содержимое окна
ассоциированного примитива сдвигается вверх (влево) на один экран. Если клавишу
не отпускать, то сдвиг автоматически повторяется.
При нажатии клавиши 1 “Мыши” на стрелке 2 (arrow2) содержимое окна
ассоциированного примитива сдвигается вверх (влево) на одну единицу. Если
клавишу не отпускать, то сдвиг автоматически повторяется.
Если нажать клавишу 2 на полосе или на движке, то содержимое окна переходит в
положение, указанное курсором “Мыши” ; если тащить курсор при нажатой клавише 2,
то содержимое окна движется вслед за курсором. Нажатие клавиши 2 на стрелках
приводит к тому же результату, что и нажатие клавиши 1.
Если клавиша 1 нажимается при нажатой клавише Control, то в окне
появляется начало документа (если курсор “Мыши” находится на стрелке 1 или
полосе 1) или его конец (если курсор находится на стрелке 2 или полосе 2). При
других положениях курсора такое нажатие на клавиши не приводит ни к каким
действиям.
В вертикальных линейках прокрутки нажатие на клавиши Up и Down
приводят к такому же результату, что и щелчок “Мыши” на стрелках вверх и вниз
соответственно. В горизонтальных линейках нажатие на эти клавиши не вызывает
никаких действий.
В вертикальных линейках прокрутки нажатие на клавиши Control-Up и
Control-Down приводят к такому же результату, что и щелчок “Мыши” на
верхней и нижней полосках линейки соответственно. В горизонтальных линейках
нажатие на эти клавиши не вызывает никаких действий.
В горизонтальных линейках прокрутки нажатие на клавиши Up и
Down приводят к такому же результату, что и щелчок “Мыши” на левой и
правой стрелках соответственно. В вертикальных линейках нажатие на эти клавиши
не вызывает никаких действий.
В горизонтальных линейках прокрутки нажатие на клавиши Control-Up и
Control-Down приводят к такому же результату, что и щелчок “Мыши” на
левой и правой полосках линейки соответственно. В вертикальных линейках нажатие
на эти клавиши не вызывает никаких действий.
Нажатие на клавиши Prior и Next приводят к такому же
результату, что и щелчки “Мыши” на полосе 1 и полосе 2 соответственно.
Нажатие на клавишу Home приводит к появлению в окне начала документа.
Нажатие на клавишу End приводит к появлению в окне конца документа.
selection
Управление X выделениемСИНТАКСИС
selection параметр ?арг арг ...?ОПИСАНИЕ
Команда предоставляет интерфейс Tcl для механизма Х выделения и реализует
полный набор функций выделения, описанный в (1). Аргумент параметр
определяет формат последующих аргументов и поведение команды. В настоящее время
поддерживаются следующие формы команды:
selection clear ?-displayof окно?
?-selectionвыделение?
Если на дисплее окна имеются выделения, их следует очистить так, чтобы ни
одно из окон не владело выделением. Параметр выделение задает X
выделение, которое должно быть очищено; его значением должно быть имя атома,
например, PRIMARY или CLIPBOARD; полное описание см. в (1). По умолчанию
значением параметра выделение является PRIMARY, а параметра окно —
".". Команда возвращает пустую строку.selection get ?-displayof
окно? ?-selection выделение? ?-type тип?
Ищет выделение на дисплее окна и возвращает его значение в качестве
результата. По умолчанию значением параметра выделение является
PRIMARY, а параметра окно — ".". Параметр тип задает вид
возвращаемого результата (в терминологии (1) — “цель”), его значением должно
быть имя атома, например, STRING или FILE_NAME; полное описание
см. (1). По умолчанию он имеет значение STRING. Владелец выделения может
выбрать для его вывода любой из форматов STRING, ATOM,
INTEGER и т.д. (этот формат отличается от типа выделения; детально
различия описаны в (1)). Если формат, в котором выделение возвращается, не
строковый, например, INTEGER или ATOM, то команда selection
преобразует выделение в строковый формат, представляя его в виде набора полей,
разделенных пробелами: атомы представляются своими текстовыми именами, а все
остальное преобразуется в последовательность шестнадцатиричных
цифр.selection handle ?-selection выделение?
?-typeтип? ?-format формат? окно команда
Создает программу обработки запросов на поиск выделения: при каждой попытке
поиска выделения указанного типа в окне (например, командой selection
get) будет выполняться команда. По умолчанию значением параметра
выделение является PRIMARY, параметра тип STRING, и параметра
формат тоже STRING. Если значением параметра команда является
пустая строка, то все программы обработки для указанного окна,
типаи выделения удаляются.Если при запросе
выделения окно является его владельцем и выделение имеет указанный тип,
то к команде добавляется два числа (отделенных пробелами от имени команды и друг
от друга) и она исполняется как команда Tcl. Эти два дополнительных числа
представляют собой смещение и максБайт: смещение задает положение первого
символа в выделении, а максБайт — максимальное количество байтов для поиска.
Возвращаемое командой значение должно начинаться с указанного символа в
выделении и должно быть не длиннее максБайт. Для очень больших выделений (длина
которых превышает максБайт) поиск будет повторяться многократно с возрастающими
смещениями. Если длина строки, возвращаемой командой, меньше максБайт, то
предполагается, что возвращенное значение включает в себя весь остаток
выделения; если длина результата совпадает с максБайт, то команда будет
выполняться повторно пока она не возвратит, наконец, строку, более короткую, чем
указано параметром максБайт. Значение максБайт всегда довольно велико (порядка
нескольких тысяч байтов).
Если в результате работы команды возникает ошибка, то запрос на поиск
отвергается, как если бы никакого выделения вообще не существовало.
Аргумент формат задает представление, используемое для передачи
выделения автору запроса (см. (1), второй столбец в Таблице 2), его значение по
умолчанию STRING. Если значением аргумента формат является STRING, то
выделение передается в виде 8-битовых символов ASCII (т.е. в том же виде,
в каком его возвращает команда). Если его значение ATOM, то возвращаемое
значение разбивается на поля, отделенные друг от друга пробелами; каждое поле
преобразуется в свое атомарное значение и вместо имени атома передается
32-битовое атомарное значение. В любом другом формате возвращаемое командой
значение разбивается на поля, отделенные друг от друга пробелами, и каждое поле
преобразуется в целое 32-битовое число; полученный массив целых чисел передается
автору запроса.
Аргумент формат необходим лишь для обеспечения совместимости
пользователям, не использующим Tk. Если для поиска выделения используется Tk, то
на выходе из запроса результат преобразуется назад в строку, поэтому аргумент
формат не играет роли.
selection own ?-displayof окно?
?-selectionвыделение?
selection own ?-commandкоманда? ?-selection
выделение? окно
Первая форма команды selection own возвращает имя пути окна в
данном приложении, владеющего выделением на дисплее, содержащем
окно; если таких окон нет, то команда возвращает пустую строку. По
умолчанию значением параметра выделение является PRIMARY, а параметра
окно — ".".Вторая форма команды selection own делает
окно новым владельцем выделения на дисплее окна; она возвращает
пустую строку. Текущий владелец выделения (если такой существует)
получает сообщение о том, что он потерял выделение. Если задан параметр
команда, то его значением является скрипт Tcl, который должен исполняться
при попытке какого-либо другого окна заявить права на выделение вне данного
окна. По умолчанию значением параметра выделение является PRIMARY.
radiobutton
Создание примитива кнопки-переключателя и управление им.
Синтаксис
Стандартные
параметры
Дополнительные
параметры примитива
Описание
Команда
примитива
Привязки
СИНТАКСИС
radiobutton имяПути параметрыСТАНДАРТНЫЕ ПАРАМЕТРЫ
-activeBackground |
-cursor |
-highlightthickness |
-takefocus |
-activeforeground |
-disabledforeground |
-image |
-text |
-anchor |
-font |
-justify |
-textvariable |
-background |
-foreground |
-padx |
-underline |
-bitmap |
-highlightbackground |
-pady |
-wraplength |
-relief |
-borderwidth |
-highlightcolor |
|
Подробное описание этих параметров приведено в разделе options.ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ
ПРИМИТИВА
Имя параметра: -command
Имя в Базе: command
Класс в
Базе: CommandАссоциирует с кнопкой команду Tk. Обычно команда
выполняется при отпускании клавиши 1 “Мыши” на окне кнопки-переключателя. Перед
выполнением команды обновляется значение глобальной переменной переключателя
(параметр -variable).
Имя параметра: -height
Имя в Базе: height
Класс в
Базе: Height
Задает желаемую высоту кнопки. Если в кнопке выводится изображение или
двуцветное изображение, то значение параметра задается в пикселах (т.е., в любом
виде, приемлемом для Tk_GetPixels); высота текстовой кнопки задается
числом строчек текста. Если параметр не задан, то высота кнопки вычисляется по
ее содержимому.
Имя параметра: -indicatoron
Имя в Базе: indicatorOn
Класс в Базе: IndicatorOnУказывает, следует ли выводить
индикатор. Значение параметра должно быть булевским. Если значением является
ложь, то параметр relief игнорируется и примитив всегда изображается
вдавленным, если он выделен, и выпуклым в противном случае.
Имя параметра: -selectcolor
Имя в Базе: selectColor
Класс в Базе: Background
Задает цвет фона для изображения выделенной кнопки. Если параметр
IndicatorOn имеет значение истина, то указанный цвет применяется для
изображения индикатора. В системе Windows тот же цвет используется в качестве
фона изображения индикатора вне зависимости от состояния выделения. Если
значением параметра IndicatorOn является ложь, то указанный цвет
используется в качестве фона для всего примитива, когда он выделен, вместо
значений параметров background и activeBackground.
Имя параметра: -selectimage
Имя в Базе: selectImage
Класс в Базе: SelectImage
Задает изображение, выводимое в кнопке при выделении кнопки-переключателя
(вместо изображения, заданного параметром -image). Если параметр
-image отсутствует, то значение параметра -selectimage
игнорируется.
Имя параметра: -state
Имя в Базе: state
Класс в Базе:
State
Задает одно из трех состояний кнопки-переключателя: normal, active
или disabled. В нормальном состоянии кнопка-переключатель
изображается с использованием значений параметров foreground и
background. В активном состоянии кнопка-переключатель обычно находится,
если на ней расположен курсор. Кнопка-переключатель в активном состоянии
изображается с использованием значений параметров activeForeground и
activeBackground. Недоступное состояние указывает на то, что кнопка
должна быть нечувствительной: привязки по умолчанию не приводят к запуску
примитива и нажатия на кнопку “Мыши” игнорируются. В этом состоянии изображение
кнопки-перключателя определяется значениями параметров disabledForeground
и background.
Имя параметра: -value
Имя в Базе: value
Класс в Базе:
ValueЗадает значение, которое следует заносить в переменную
кнопки-переключателя при выделении этой кнопки.
Имя параметра: -variable
Имя в Базе: variable
Класс в
Базе: VariableЗадает имя глобальной переменной, значение которой
нужно устанавливать при выделении кнопки. Изменение значения этой переменной
также приводит к изменению состояния выделения кнопки. По умолчанию параметр
имеет значение selectedButton.
Имя параметра: -width
Имя в Базе: width
Класс в Базе:
Width
Задает желаемую ширину кнопки-переключателя. Если в кнопке выводится
изображение или двуцветное изображение, то значение параметра задается в
пикселах (т.е., в любом виде, приемлемом для Tk_GetPixels); ширина текстовой
кнопки задается числом символов. Если параметр не задан, то ширина кнопки
вычисляется по ее содержимому.
ОПИСАНИЕ
Команда radiobutton создает новое окно (задаваемое аргументом
имяПути) и превращает его в примитив кнопки-переключателя. Детали
изображения кнопки-переключателя, такие как ее цвета, шрифт, текст и исходный
объемный вид задаются с помощью описанных выше дополнительных параметров.
Команда radiobutton возвращает аргумент имяПути. В момент
выполнения этой команды не должно существовать окна с именем имяПути, но
должен существовать его предок.
Кнопка-переключатель представляет собой примитив, в котором выводится
текстовая строка, изображение или двуцветное изображение, а также ромб или
кружок, называемый индикатором. Весь выводимый текст должен быть записан
одним шрифтом, однако он может занимать несколько строчек на экране (если в нем
есть символы перевода строки или задан параметр wrapLength). Один из
символов текста может быть подчеркнут (в соответствии со значением параметра
underline). Кнопка-переключатель обладает всеми характеристиками обычной
кнопки, включая следующие: в зависимости от значения параметра state
кнопка имеет три разных вида; кнопка может выглядеть выпуклой, вдавленной
или плоской, кроме того, она может мигать. При инициации кнопки-переключателя
(нажатием на клавишу 1 “Мыши”, когда курсор “Мыши” находится на кнопке)
выполняется команда Tcl.
Кроме того, кнопки-переключатели можно выделять. Если кнопка выделена,
то индикатор обычно изображается как выделенный, а переменная Tcl,
ассоциированная с данной кнопкой, имеет предписанное значение (обычно 1). В ОС
Unix индикатор изображается вдавленным и имеет специальный цвет. В системе
Windows вместо этого в индикаторе появляется круглая метка. Если
кнопка-переключатель не выделена, то индикатор имеет невыделенный вид, а
ассоциированная переменная имеет другое значение (обычно “0”). В ОС Unix такой
индикатор изображается выпуклым и не имеет специального цвета. В системе Windows
в невыделенном индикаторе отсутствует круглая метка. Обычно одна переменная
обслуживает несколько кнопок-переключателей, а ее значение указывает, какая из
них должна быть выделена. При выделении кнопки происходит изменение значения
ассоциированной переменной. Кроме того, каждая кнопка-переключатель отслеживает
значение ассоциированной переменной и при его изменении состояние выделения
кнопки меняется. По умолчанию используется переменная selectedButton; ее
значением является имя выделенной кнопки или пустая строка, если ни одна из
кнопок, ассоциированных с данной переменной, не выделена. Имя переменной и
записываемые в ней значения “выделенная”/”невыделенная” можно поменять с помощью
параметров командной строки или в базе данных параметров. С помощью параметров
конфигурации можно также поменять вид индикатора (или даже отменить саму
необходимость его вывода). По умолчанию выделение кнопки-переключателя
происходит при щелчке на кнопке.
КОМАНДА ПРИМИТИВА
Команда radiobutton создает новую команду Tcl с именем
имяПути. С помощью этой команды можно выполнять различные операции над
примитивом. Ее общий вид
имяПути параметр арг арг ...
Параметр и аргументы уточняют поведение команды. Примитивы
кнопки-переключателя допускают следующие формы
команды:имяПути cget параметр
Возвращает текущее значение параметра конфигурации с именем параметр.
Параметр может быть любым из параметров команды
radiobutton.имяПути configure параметр
значение параметр значение ...
Запрашивает значения параметров конфигурации примитива или изменяет их.
Если параметр не указан, то возвращает список, содержащий значения всех
допустимых в имениПути параметров (формат списка описан в
Tk_ConfigureInfo). Если параметр задан, а его новое
значение - нет, то команда возвращает часть полного списка, относящуюся к
указанному параметру. Если заданы одна или несколько пар параметр-значение,
то указанным параметрам примитива присваиваются новые значения, а команда
возвращает пустую строку. Параметр может быть любым из параметров команды
radiobutton.имяПути deselect
Отменяет выделение кнопки-переключателя и придает ассоциированной
переменной значение “пустая строка”. Если в момент исполнения команды данная
кнопка-переключатель не была выделена, то команда не производит никаких
действий.имяПути flash
Заставляет кнопку-переключатель мигать. Этот эффект достигается путем
многократного вывода изображения кнопки поочередно в активном и нормальном
состоянии. По окончании работы команды кнопка-переключатель остается в том же
состоянии (активном или нормальном), что и перед началом ее выполнения. Если
перед началом выполнения команды кнопка находится в состоянии disabled,
то команда игнорируется.имяПути invoke
Приводит в точности к тому же результату, что и нажатие клавиши “Мыши” на
кнопке-переключателе: кнопка становится выделенной и выполняется команда Tcl,
ассоциированная с кнопкой (при наличии такой команды). Возвращаемое значение
совпадает с возвращаемым значением команды Tcl (или является пустой строкой,
если с кнопкой никакой команды не ассоциировано). Если перед началом выполнения
команды кнопка-переключатель находится в состоянии disabled, то команда
игнорируется.имяПути select
Выделяет кнопку, перерисовывая ее в новом состоянии и изменяя значение
ассоциированной переменной.ПРИВЯЗКИ
При создании кнопки-переключателя Tk автоматически создает привязки к ней,
определяющие ее поведение по умолчанию:
- в ОС Unix кнопка становится активной при появлении над ней курсора “Мыши”
и дезактивируется, когда курсор ее покидает. В системах Mac и Windows при
нажатии клавиши 1 “Мыши” на переключателе кнопка активизируется, когда курсор
“Мыши” находится на кнопке и дезактивируется, когда курсор ее покидает;
- при нажатии клавиши 1 “Мыши” на кнопке-переключателе кнопка становится
выделенной и выполняется команда, привязанная к ней;
- если кнопка-переключатель находится в фокусе ввода, то нажатие на клавишу
пробела приводит к выполнению команды, привязанной к этой кнопке;
- если кнопка-переключатель находится в состоянии disabled, то все
описанные выше действия не приводят ни к какому результату: кнопка остается
безответной.
Поведение кнопки-переключателя можно изменить с помощью
новых привязок к конкретным примитивам или путем переопределения привязок
данного класса.
send
Выполнить команду в другом приложении.
Синтаксис
Описание
Имена
приложений
Блокировка
посылаемых команд
Безопасность
СИНТАКСИС
send ?параметры? прил кмд ?арг арг ...?ОПИСАНИЕ
Обеспечивает выполнение команды, заданной параметром кмд (с
аргументами, заданными параметрами арг), в приложении с именем
прил. Возвращает результат выполненной команды или ошибку. Аргумент
прил может задавать имя любого из приложений, главное окно которого
расположено на том же дисплее, что и главное окно запрашивающего приложения;
запрошенное приложение не обязано управляться тем же процессом. Если аргументы
отсутствуют, то выполняемая команда полностью определяется аргументом
кмд. Если присутсвует один или несколько аргументов, то они
конкатенируются с кмд в точности так же, как и в команде eval.
Если первые аргументы команды начинаются с дефиса "-", то они
интерепретируются как параметры. В настоящее время допустимы следующие
параметры:
-async
Запрашивает асинхронный вызов. В этом случае выполнение команды send
завершается немедленно, не дожидаясь завершения выполнения команды, заданной
аргументом кмд, в приложении-адресате; результат выполнения посланной
команды или возникающие при выполнении ошибки игнорируются. Если адресат
управляется тем же процессом, что и посылающее приложение, то параметр
-async игнорируется.-displayof имяПути
Указывает на то, что главное окно приложения-адресата должно быть на том
же дисплее, что и окно, заданное аргументом имяПути, а не на дисплее посылающего
приложения.--
Единственная задача этого параметра — завершить список параметров. Он
используется только если значение аргумента прил может начинаться с
дефиса "-".ИМЕНА
ПРИЛОЖЕНИЙ
Первоначально имя приложения определяется именем программы или скрипта, его
создающего. Имя приложения можно узнать и изменить с помощью команды
appname Tk.БЛОКИРОВКА ПОСЫЛАЕМЫХ КОМАНД
Если отменить в приложении команду send (например, выполнив команду
rename send {}), то приложение перестанет реагировать на поступающие
запросы send и само не сможет посылать запросы. Восстановить
взаимодействие приложений можно, выполнив команду appname
Tk.БЕЗОПАСНОСТЬ
Команда send является потенциальным источником серьезных нарушений
защиты, так как любое приложение, способное соединиться с Вашим X сервером,
может посылать скрипты в Ваше приложение. С помощью Tcl присланные скрипты могут
читать Ваши файлы и выполнять запись в них и запускать подпроцессы под Вашим
именем. Особенно уязвимо управление доступом вида xhost, так как всякий
пользователь, заведенный на головном компьютере, может связаться с Вашим
сервером; если же это управление доступом отключить, то связь становится
возможной вообще для любого пользователя, где бы он ни находился. Чтобы
обеспечить хотя бы минимальную защиту, Tk проверяет систему управления доступом
на сервере и отвергает все присланные команды, если либо (а) xhost-система
управления доступом отключена (так что лишь некоторые головные компьютеры могут
устанавливать связь); либо (б) список головных компьютеров, которым такая связь
разрешена, пуст. В результате никакое приложение не сможет связаться с Вашим
сервером, если у него не будет дополнительных прав (например, предоставленных
xauth).
table
Создание таблиц и действия с ними.
Команда становится доступной для выполнения после загрузки библиотеки
Tktable2.3 командой:
load /usr/local/lib/Tktable2.3/Tktable.so.2.3
Синтаксис
Стандартные
опции
Специальные
опции команды
Описание
команды
Инициализация
Индексы
Теги
Встроенные
окна
Выбор
Командные
подстановки
Команды
виджета
Стандартное
поведение СИНТАКСИС
table имя виджета ? опции ?СТАНДАРТНЫЕ ОПЦИИ
-anchor |
-background |
-borderwidth |
-cursor |
-exportselection |
-font |
-foreground |
-highlightbackground |
-highlightcolor |
-highlightthickness |
-insertbackground |
-insertborderwidth |
-insertofftime |
-insertontime |
-insertwidth |
-invertselected |
-padx |
-pady |
-relief |
-takefocus |
-xscrollcommand |
-yscrollcommand |
|
|
Детальное описание стандартных опций (см. “Опции).СПЕЦИАЛЬНЫЕ ОПЦИИ КОМАНДЫ
Имя опции в Командной строке: -autoclear
Имя опции в Базе данных
Х ресурсов: autoClear
Имя Класса в Базе данных Х ресурсов:
AutoClearБулева величина, которая определяет, будет ли по первому
нажатию на клавишу удаляться из ячейки тот текст, который был прежде там.
Значение по умолчанию — 0.
Имя опции в Командной строке:-bordercursor
Имя опции в Базе
данных Х ресурсов: borderCursor
Имя Класса в Базе данных Х ресурсов:
Cursor
Определяет имя курсора, который появляется на границе поля и показывает,
что размеры поля могут быть изменены интерактивно (определяется значением опции
-resizeborders). По умолчанию – crosshair (перекрестье).
Имя опции в Командной строке:-browsecommand или
-browsecmd
Имя опции в Базе данных Х ресурсов: browseCommand
Имя Класса в Базе данных Х ресурсов: BrowseCommand
Определяет команду, которая выполняется каждый раз, когда изменяется
активная ячейка. В команде могут использоваться %-подстановки, описанные ниже в
разделе Командные
подстановки.
Имя опции в Командной строке:-cache
Имя опции в Базе данных Х
ресурсов: cache
Имя Класса в Базе данных Х ресурсов:
Cache
Булева величина, которая определяет, будет ли использоваться внутренний
кеш таблицы. Его использование позволяет существенно повысить производительность
при использовании опции -command, но требует дополнительной памяти. Может
улучшить производительность и тогда, когда опции -command и
-variable не заданы. Кеш автоматически сбрасывается всякий раз при
изменении опций -cache и -variable, в противном случае Вы должны
сами сделать это. Значение по умолчанию — ложь.
Имя опции в Командной строке:-colorigin
Имя опции в Базе данных
Х ресурсов: colOrigin
Имя Класса в Базе данных Х ресурсов:
OriginОпределяет, какой индекс столбца является самым левым
столбцом в таблице. Эта величина используется для пользовательских индексов в
таблице. Значение по умолчанию — ‘0’.
Имя опции в Командной строке:-cols
Имя опции в Базе данных Х
ресурсов: cols
Имя Класса в Базе данных Х ресурсов: Cols
Число столбцов в таблице. Значение по умолчанию — ‘10’.
Имя опции в Командной строке:-colseparator
Имя опции в Базе
данных Х ресурсов: colSeparator
Имя Класса в Базе данных Х ресурсов:
Separator
Определяет символ, который будет использоваться как разделитель столбцов
при выборе данных из таблицы или при вставке данных в таблицу. По умолчанию,
столбцы разделяются как элементы tcl-списка.
Имя опции в Командной строке:-colstretchmode
Имя опции в Базе
данных Х ресурсов: colStretchMode
Имя Класса в Базе данных Х
ресурсов: StretchModeОпределяет один из следующих способов
расширения столбцов для заполнения дополнительного пространства окна:
none
Столбцы не расширяются и не заполняют все отведенное пространство окна
таблицы. Если столбцы слишком узки, то в таблице справа будет пробел. Это –
значение по умолчанию.unset
Расширяются только те столбцы, которые не имеют явно заданной
ширины.all
Все столбцы расширяются на одно и то же количество пикселей, чтобы
заполнить все пространство окна. В этом режиме могут возникнуть трудности при
ручном изменении размеров ширины ячейки.fill (используется
только при значении опции –rowstretch, равном currently)
В таблице получится больше или меньше столбцов в соответствии с величиной
отведенного пространства. Этот способ имеет многочисленные причуды и может
исчезнуть в будущем.last
Последний столбец расширяется так, чтобы заполнить все пространство окна
таблицы.Имя опции в Командной строке:-coltagcommand
Имя опции в
Базе данных Х ресурсов: colTagCommand
Имя Класса в Базе данных Х
ресурсов: TagCommand
Задает имя процедуры, которая выполняется, чтобы определить тэг, который
используется для данного столбца. Чтобы определить, как отображать ячейку,
сначала проверяется, не задан ли тэг для столбца с помощью команды tag
col. Если тэг для столбца не задан, выполняется процедура, определенная с
помощью настоящей опции. Процедура получает номер столбца в качестве
единственного аргумента. Процедура должна возвратить имя тэга или пустую строку.
Если при выполнении процедуры происходит ошибка или процедура возвращает
недопустимое имя тэга, сообщения об ошибке не выдается.
Имя опции в Командной строке:-colwidth
Имя опции в Базе данных Х
ресурсов: colWidth
Имя Класса в Базе данных Х ресурсов:
ColWidthЗадает ширину столбца по умолчанию. Ширина столбца
определяется в символах шрифта (используемого по умолчанию), если она является
положительным числом, или в пикселях, если она является отрицательным числом.
Значение по умолчанию — `10’.
Имя опции в Командной строке:-command
Имя опции в Базе данных Х
ресурсов: command
Имя Класса в Базе данных Х ресурсов:
Command
Определяет команду, которая используется в качестве процедурного
интерфейса к содержимому ячеек. Если опция -usecommand имеет значение
истина, эта команда будет использоваться вместо любой ссылки на массив —
variable. При выборе значения из таблицы вместо содержимого ячейки
возвращается результат выполнения команды. Использует %-подстановки, описанные
ниже в разделе
Командные подстановки.
Имя опции в Командной строке:-drawmode
Имя опции в Базе данных Х
ресурсов: drawMode
Имя Класса в Базе данных Х ресурсов:
DrawMode
Устанавливает один из следующих режимов рисования таблицы:
slow
Таблица предварительно формируется в памяти (offscreen pixmap) с
использованием двойной буферизации. Для границ используются Tk-функции. Этот
способ исключает мигание, но оказывается медленным для больших
таблиц.compatible
Таблица изображается непосредственно на экране с использованием Tk-функций
для границ. Это более быстрый способ, но экран может мигать При изменениях. Это
– значение по умолчанию.fast
Таблица изображается непосредственно на экране, причем границы рисуются с
использованием быстрых X-вызывов, то есть шириной в один пиксель. Как побочный
эффект, сужается область значений допустимых значений опции -borderwidth
до `0’ и `1’. Этот способ обеспечивает наилучшую производительность для больших
таблиц, но при этом возможно мигание. Кроме того, этот способ допустим не при
всех возможных в Tk значениях ширины границы.single
Таблица рисуется на экране как в режиме fast, но линии изображаются
только одним пикселем.Имя опции в Командной строке: -flashmode
Имя опции в Базе данных Х ресурсов: flashMode
мя Класса в Базе
данных Х ресурсов: FlashModeБулево значение, которое определяет,
будут ли ячейки мигать, когда их величина изменяется. Тэг flash
назначается этим ячейкам на время, определенное с помощью опции
-flashtime. По умолчанию устанавливается на 0.
Имя опции в Командной строке:-flashtime
Имя опции в Базе данных
Х ресурсов: flashTime
Имя Класса в Базе данных Х ресурсов:
FlashTime
Время в четвертях секунды, в течение которого ячейка высвечивается при
изменении величины. Опция -flashmode должно иметь значение on.
Значение по умолчанию — 2.
Имя опции в Командной строке:-height
Имя опции в Базе данных Х
ресурсов: height
Имя Класса в Базе данных Х ресурсов:
Height
Определяет желаемую высоту для окна в рядах ячеек. Если задано нуль или
менее, высота окна выбирается достаточно большой, чтобы содержать все ряды
таблицы. Высота может ограничиваться с помощью опции -maxheight.
Имя опции в Командной строке:-invertselected
Имя опции в Базе
данных Х ресурсов: invertSelected
Имя Класса в Базе данных Х
ресурсов: InvertSelected
Определяет, будут ли цвета переднего и заднего планов ячейки заменены
друг на друга вместо использования опций тэга sel, когда ячейка выбрана.
По умолчанию устанавливается на 0 (использование опций тэга sel).
Имя опции в Командной строке:-maxheight
Имя опции в Базе данных
Х ресурсов: maxHeight
Имя Класса в Базе данных Х ресурсов:
MaxHeightМаксимально возможная высота окна в пикселях. Значение по
умолчанию — 600.
Имя опции в Командной строке:-maxwidth
Имя опции в Базе данных Х
ресурсов: maxWidth
Имя Класса в Базе данных Х ресурсов:
MaxWidthМаксимально возможная ширина окна в пикселях. Значение по
умолчанию — 800.
Имя опции в Командной строке:-multiline
Имя опции в Базе данных
Х ресурсов: multiline
Имя Класса в Базе данных Х ресурсов:
MultilineОпределяет значение по умолчанию для опции тэгов
-multiline. Значение по умолчанию — `1’.
Имя опции в Командной строке:-resizeborders
Имя опции в Базе
данных Х ресурсов: resizeBorders
Имя Класса в Базе данных Х ресурсов:
ResizeBordersОпределяет возможность интерактивного изменения
размеров ячеек. Допустимые значения опции — row, col, both
(по умолчанию) и none.
Имя опции в Командной строке:-rowheight
Имя опции в Базе данных
Х ресурсов: rowHeight
Имя Класса в Базе данных Х ресурсов:
RowHeightВысота колонки по умолчанию. Задается в числе строк текста
(шрифта, устанавливаемого по умолчанию), когда число является положительными,
или в пикселях, если оно — отрицательное. Значение по умолчанию — `1’.
Имя опции в Командной строке:-roworigin
Имя опции в Базе данных
Х ресурсов: rowOrigin
Имя Класса в Базе данных Х ресурсов:
OriginОпределяет, какую строку считать самой верхней строкой
таблицы. Эта величина используется для индексов пользователя в таблице. По
умолчанию устанавливается на “0”.
Имя опции в Командной строке:-rows
Имя опции в Базе данных Х ресурсов: rows
Имя Класса в Базе
данных Х ресурсов: RowsКоличество строк в таблице. Значение по
умолчанию — `10’.
Имя опции в Командной строке:-rowseparator
Имя опции в Базе
данных Х ресурсов: rowSeparator
Имя Класса в Базе данных Х ресурсов:
SeparatorОпределяет символ, который будет проинтерпретирован как
разделитель строк при вставке или удалении данных из таблицы. По умолчанию,
строки разделяются как списки tcl.
Имя опции в Командной строке:-rowstretchmode
Имя опции в Базе
данных Х ресурсов: rowStretchMode
Имя Класса в Базе данных Х
ресурсов: StretchModeОпределяет способ расширения строк для
заполнения дополнительного пространства окна. Допустимые значения опции такие
же, как для опции –colstretchmode.
Имя опции в Командной строке:-rowtagcommand
Имя опции в Базе
данных Х ресурсов: rowTagCommand
Имя Класса в Базе данных Х ресурсов:
TagCommandЗадает имя процедуры, которая выполняется, чтобы
определить тэг, который используется для данной строки. Процедура определяется
пользователем. Она получает номер строки в качестве единственного аргумента.
Процедура должна возвратить имя тэга или пустую строку. Опция аналогична опции
–coltagcommand и отличается только тем, что задает тэг строки.
Имя опции в Командной строке:-selectioncommand or
-selcmd
Имя опции в Базе данных Х ресурсов: selectionCommand
Имя Класса в Базе данных Х ресурсов: SelectionCommandОпределяет
команду, которая выполняется при получении значений ячеек через механизм выбора
(например, при выполнении команды “selection get”). Результат выполнения
команды возвращается как результат выбора. В команде могут использоваться
%-подстановки, описанные ниже в разделе Командные
подстановки. Если при выполнении команды происходит ошибка, она
обрабатывается как ошибка фонового Tcl процесса и команда ничего не возвращает.
Имя опции в Командной строке:-selectmode
Имя опции в Базе
данных Х ресурсов: selectMode
Имя Класса в Базе данных Х ресурсов:
SelectModeОпределяет один из возможных режимов выбора ячеек.
Величина опции может быть произвольной, но встроенная обработка имеется только
для следующих режимов: single, browse, multiple и extended;
значение по умолчанию browse. Эти режимы аналогичны соответствующим
режимам для Tk listbox, за исключением того, что они применяются для двумерных
таблиц.
Имя опции в Командной строке:-selecttitle
Имя опции в Базе
данных Х ресурсов: selectTitles
Имя Класса в Базе данных Х ресурсов:
SelectTitlesОпределяет, допускается ли выбор ячеек заголовков. По
умолчанию устанавливается на ‘0’ (выбор не допускается).
Имя опции в Командной строке:-selecttype
Имя опции в Базе
данных Х ресурсов: selectType
Имя Класса в Базе данных Х ресурсов:
SelectTypeОпределяет один из различных типов выбора для таблицы.
Опция может принимать одно из значений: row, col,
cell, или both (означает row && col); значение по
умолчанию cell. Определяет, будет ли изменение выбора для
ячейки (установление или снятие) воздействовать на весь ряд и(или) колонку.
Имя опции в Командной строке:-state
Имя опции в Базе данных
Х ресурсов: state
Имя Класса в Базе данных Х ресурсов:
StateОпределяет одно из двух состояний таблицы: нормальное или
неактивное. Если таблица не активна, то величины в ячейках не могут быть
изменены с использованием команд таблицы и никакой курсор вставки не
отображается, даже если фокус установлен в таблице. По умолчанию устанавливается
нормальное состояние.
Имя опции в Командной строке:-titlecols
Имя опции в
Базе данных Х ресурсов: titleCols
Имя Класса в Базе данных Х
ресурсов: TitleColsКоличество столбцов, используемое для
заголовков. По умолчанию устанавливается на ‘0’.
Имя опции в Командной строке:-titlerows
Имя опции в Базе
данных Х ресурсов: titleRows
Имя Класса в Базе данных Х ресурсов:
TitleRowsКоличество строк, используемое для заголовков. По
умолчанию устанавливается на 0.
Имя опции в Командной строке:-usecommand
Имя опции в Базе
данных Х ресурсов: useCommand
Имя Класса в Базе данных Х ресурсов:
UseCommandБулева величина, которое определяет, будет ли
использоваться команда, заданная с помощью опции -command. Эта величина
переустанавливается в нуль, если команда используется и возвращает ошибку.
Значение по умолчанию — `1’ (команда будет использоваться, если она задана).
Имя опции в Командной строке:-validate
Имя опции в Базе
данных Х ресурсов: validate
Имя Класса в Базе данных Х ресурсов:
ValidateБулева величина, определяющая, будет ли производиться
проверка корректности значения активной ячейки. По умолчанию устанавливается на
“0”.
Имя опции в Командной строке:-validatecommand или -vcmd
Имя опции в Базе данных Х ресурсов: validateCommand
Имя Класса в
Базе данных Х ресурсов: ValidateCommandОпределяет команду, которая
выполняется для проверки корректности нового значения при редактировании
активной ячейки. Эта команда должна возвращать булеву величину. Если она
возвращает true, то считается, что новое значение ячейки корректно. В
противном случае считается, что введенное значение некорректно и изменения
величины в ячейке не произойдет. Если при выполнении этой команды возникает
ошибка, она обрабатывается как ошибка фонового Tcl процесса. В команде могут
использоваться %-подстановки, описанные ниже в разделе Командные
подстановки.
Имя опции в Командной строке:-variable
Имя опции в Базе
данных Х ресурсов: variable
Имя Класса в Базе данных Х ресурсов:
VariableЗадает имя Tcl переменной (глобального массива), для работы
с С массивом, связанным с данной таблицей. Массив будет создан, если он не
существует или если это простая переменная. Индексы элементов массива имеют вид
row,col для соответствующих ячеек. В массиве содержится также элемент active,
который содержит величину буфера активной ячейки. Tcl массив может быть
разреженным массивом (не требуется, чтобы в нем содержались элементы для всех
ячеек таблицы). Более того, никакой элемент массива не содержит пустой величины,
и при очистке ячейки соответствующий элемент удаляется из Tcl массива.
Имя опции в Командной строке:-width
Имя опции в Базе данных
Х ресурсов: width
Имя Класса в Базе данных Х ресурсов:
WidthОпределяет желаемую ширину для окна в столбцах ячеек. Если она
задана равной нулю или отрицательной, то ширина для окна выбирается достаточно
большой, чтобы содержать все столбцы в таблице. Определенная таким образом
величина будет ограничена значением опции –maxwidth, если она задана.
Имя опции в Командной строке:-wrap
Имя опции в Базе данных
Х ресурсов: wrap
Имя Класса в Базе данных Х ресурсов:
WrapРазрешает для тэга перенос текста в ячейках на следующую
строку. Значение по умолчанию — ‘0’.ОПИСАНИЕ КОМАНДЫ
Команда table создает таблицу — 2-мерную сетку ячеек. Таблица может
использовать переменную Tcl массива или Tcl команду для сохранения и выбора
данных. Таблица имеет активную ячейку, содержимое которой может быть
отредактировано (если таблица находится в нормальном состоянии). Таблица
поддерживает общий стиль для ячеек, а также многочисленные тэги, которые могут
использоваться, чтобы изменить стиль колонки, столбца или конкретной ячейки (см.
"Теги").
Для ячеек можно установить поведение, при котором измененные ячейки меняют цвет
на определенное время (“мигают“). Ячейки могут содержать не только текст, но и
графические изображения или встроенные окна, как указано во фрагментахТеги и
“Встроенные
окна“ соответственно.
Одна или более ячеек могут быть выбраны, как указано ниже. Если таблица
экспортирует свой выбор (смотри опцию -exportselection), то соблюдаются
стандартные протоколы X11 для обработки выбора. (См. “Выбор”).
Не обязательно, чтобы все ячейки таблицы были видны сразу в табличном окне;
описанные ниже команды могут использоваться для просмотра ячеек. Таблицы
допускают “прокрутку” в обоих направлениях, используя стандартные опции
-xscrollcommand и -yscrollcommand. Они также поддерживают просмотр
ячеек, как указано ниже.
Чтобы обеспечить достаточную производительность, для таблиц можно выбирать
один из трех методов прорисовки, два из которых являются полностью
Tk-совместимыми.
ИНИЦИАЛИЗАЦИЯ
Когда команда table загружается в интерпретатор, выполняется
встроенная Tcl команда tkTableInit. Она ищет и исполняет файл с описанием
стандартного поведения таблиц. Файл ищется в каталогах $tcl_pkgPath (как
для конкретной, так и для произвольной версии Tktable), $tk_library и
[pwd] (текущий каталог). Вы можете также определить
$env(TK_TABLE_LIBRARY), который будет поставлен в начало этого списка. По
умолчанию, ищется файл tkTable.tcl, но имя файла может быть изменено с помощью
переменной $env(TK_TABLE_LIBRARY_FILE).
Этот скрипт может быть заменен на ваш собственный, если вы создадите
собственную процедуру tkTableInit прежде, чем библиотека будет загружена. В
противном случае, вышеупомянутая переменная env(TK_TABLE_LIBRARY) будет
содержать имя каталога, в котором был найден файл
$env(TK_TABLE_LIBRARY_FILE).
ИНДЕКСЫ
Многие команды для таблиц используют один или более индексов как аргументы.
Индекс определяет конкретную ячейку таблицы одним из следующих способов:
число,число
Определяет ячейку, соответствующую элементу row,col связанного Tcl
массива, где -roworigin,-colorigin соответствует первой ячейке в
таблице (0,0 по умолчанию).active
Указывает активную ячейку, (ячейку, которая содержит курсор). Активная
ячейка может задаваться командой activate.anchor
Указывает якорную точку для выбора, которая устанавливается с помощью
команды selection anchor.bottomright
Указывает самую нижнюю — самую правую ячейку, видимую в
таблице.end
Указывает самую нижнюю — самую правую ячейку в
таблице.origin
Указывает самую верхнюю — самую левую редактируемую ячейку таблицы, не
обязательно видимую на экране.topleft
Указывает самую верхнюю — самую левую редактируемую ячейку, видимую в
таблице.@x,y
Указывает ячейку, которая покрывает в табличном окне точку с координатами x
и y (в пикселях). Если никакая ячейка не покрывает эту точку, используется
ближайшая к этой точке ячейка.В описаниях команд таблиц, приведенных
ниже, аргументы, называющиеся index, first или last всегда
обозначают индексы в одной из вышеуказанных форм.ТЕГИ
Тэг является текстовой строкой, которая связывается с нулем или больше
колонок, столбцов или ячеек в таблице. Тэги могут содержать произвольные
символы, но желательно избегать использования для тегов имен, похожих на
индексы. С колонками, столбцами или ячейками таблицы может быть связано любое
количество тэгов. В каждой таблице есть несколько постоянных тэгов, которые
могут конфигурироваться пользователем и определят атрибуты для специальных
ячеек:
active
Это тэг активной ячейки.flash
Если режим высвечивания включен, этот тэг дается всем недавно
отредактированным ячейкам.sel
Этот тэг дается всем выбранным ячейкам.title
Этот тэг дается всем ячейкам, используемым для заголовков колонок и строк.
Для этого тэга по умолчанию определено состояние “неактивно”.Тэги
определяют, как соответствующие ячейки отображаются на экране. По умолчанию,
ячейки отображаются, как определено опциями -background, -font, и
–foreground для таблицы. Тем не менее, для каждого тэга могут быть заданы
индивидуальные значения этих опций с помощью команды
pathName tag configureЕсли для ячейки задан тэг, опции
тэга переопределяют стиль таблицы. В настоящее времени для тэгов поддерживаются
следующие опции:
-anchor anchor
якорь для текста или другого объекта в пространстве
ячейки;-background или -bg color
цвет Фона ячейки;-font fontName
шрифт для текста в ячейке;-foeground или -fg
color
цвет переднего плана ячейки;-justify justify
выключка текста в ячейке. Возможные значения left,
right, center;-image imageName
графический объект, который будет отображен в ячейке вместо
текста;-multiline boolean
отобразить текст с символами “конец строки” в виде нескольких
строк;-relief relief
рельеф для ячейки;-showtext boolean
показывать текст поверх графического объекта;-state
state
состояние ячейки, позволяет определенным ячейкам быть неактивными. Это
предохраняет ячейку от редактирования с помощью вставки или удаления, но
остается возможным прямое занесение информации в массив, результаты которого
отображаются в таблице;-wrap boolean
разрешает переносить символы в следующую строку, если ячейка недостаточно
широкая.Для тэгов определен порядок приоритета. Он используется при
выполнении некоторых описанных ниже функций, связанных с тэгами. Когда ячейка
отображается, ее свойства определяются тэгами, которые ей присвоены. Этот
порядок, включая специальные тэги, — flash, active, sel, title,
celltag, rowtag, coltag, default.
Если с ячейкой связано несколько различных тэгов и если их опции противоречат
между собой, используются опции самого приоритетного тэга. Если конкретная опция
не определена для конкретного тэга или если она определена как пустая строка,
эта опция никогда не будет использована. Будет использовано значение опции от
следующего по приоритету тэга. Если ни для одного тэга опция не определена,
будет использован стиль, заданный по умолчанию для виджета.
Графические объекты используются только для показа. Редактирование текста в
таких ячейках остается возможным, и любой запрос покажет текст, хранящийся в
ячейке, независимо от значения опции -showtext.
ВСТРОЕННЫЕ ОКНА
В таблице может быть произвольное количество встроенных окон (по одному на
ячейку), и любой виджет (подчиняющийся обычным правилам, по которым встроенное
окно должно быть потомком табличного окна или его родителя) может быть
использован в качестве встроенного окна. Позиция встроенного окна на экране
будет скорректирована, как только будет изменена или передвинута таблица, и оно
будет отображено на экране или спрятано в зависимости от того, находится ли
соответствующая ячейка в видимой области таблицы. Каждое встроенное окно
занимает одну ячейку таблицы, и на него можно сослаться по индексу ячейки.
Встроенные окна уничтожаются, когда уничтожается содержащая их таблица.
Окна используются только для показа. Текстовое значение для ячеек, занятых
окнами, существует, но оно не отображается, пока окно не удаляется некоторым
способом.
Когда встроенное окно вставлено в таблицу с помощью команды window configure,
с ним связывается несколько опций, которые могут быть изменены с помощью
последующих вызовов команды window configure. В настоящее время поддерживаются
следующие опции:
-create script
В НАСТОЯЩЕЕ ВРЕМЯ НЕ ПОДДЕРЖИВАЕТСЯ. Определяет Tcl скрипт, который может
выполняться для создания заявленного окна. Если для окна, встроенного в ячейку,
опция –window не задана, при необходимости отобразить ячейку на экране будет
выполнен скрипт. Скрипт должен создать окно и вернуть его имя как результат
выполнения скрипта. Если впоследствии окно будет удалено, перед повторным
появлением ячейки на экране скрипт будет выполнен
опять.-background или -bg color
Цвет Фона окна. Если опция не определена, то используется цвет фона
таблицы.-padx pixels
Как определено в руководстве по Tk.-pady pixels
Как определено в руководстве по Tk.-relief relief
Рельеф, используемый для ячейки, в которой лежит окно. Если опция не
определена, используется значение для таблицы.-sticky
sticky
“Клейкость” окна в ячейке, как определено для команды grid.-window
pathName
Определяет имя окна, которое будет отображено в ячейке. Окно должно
существовать прежде, чем может быть использовано здесь.ВЫБОР
Табличные выборы представляют собой данные типа СТРОКА. По умолчанию,
величина выбора состоит из величин (значений) выбранных ячеек в форме Tcl
списка, где каждый ряд является списком и каждый столбец является элементом
списка ряда. Вы можете изменить способ, которым интерпретируется эта величина, с
помощью опций -rowseparator и colseparator. Например, формат
Эксела устанавливается с помощью значений
-rowseparator “\n“ и
-colseparator “\t“. Изменение этих опций влияет как на формирование
выбора для таблицы, так и на чтение данных при вставке, гарантируя, что в
таблице можно вырезать данные и вставить их в нее же. Можно изменять поведение
таблицы при вставке данных с помощью редактирования библиотечной процедуры
tk_tablePasteHandler. Это может потребоваться, если установлена опция
-selectioncommand.КОМАНДНЫЕ
ПОДСТАНОВКИ
Команды, задающиеся с помощью различных опций таблиц, могут использовать
традиционные для Tk %-ные подстановки (см. bind).
Следующие %-ные подстановки выполняются при работе с таблицами:
%c
Для SelectionCommand это — максимальное количество столбцов в ряду в
выбранной области.
Для остальных команд – индекс столбца ячейки, вызвавшей событие.
%c
Удобная замена для %r,%c.%i
Для SelectionCommand это — общее число ячеек в выбранной
области.Для Command это — `0’ для чтения (get) и `1’ для
записи (set).
Для остальных команд — текущая позиция курсора в ячейке.
%R
Для SelectionCommand это — количество рядов в выбранной
области.Для остальных команд — ряд ячейки, породившей событие.
%S
Для ValidateCommand это — текущее значение в ячейке, которое будет
проверяться.Для SelectionCommand это — значение по умолчанию для
выбора.
Для BrowseCommand это — индекс последней активной ячейки.
Для Command это — пустое значение для чтения (get) и текущая значение в
ячейке для записи (set).
%S
Для ValidateCommand это — потенциальное новое значение в ячейке, значение в
которой проверяется.Для BrowseCommand это — индекс новой активной
ячейки.
%W
Имя окна, вызвавшего событие.КОМАНДЫ ВИДЖЕТА
Команда table создает новую команду Tcl, чье имя является именем созданного
виджета. Эта команда может использоваться, чтобы выполнить различные действия с
виджетом. У нее есть следующая общая форма:
pathName option ?arg arg ...?
где pathName – имя виджета.
Значение опции и аргументов определяют точное назначение команды.
Для таблиц определены следующие опции команды:
pathName activate index
Активизирует ячейку, заданную индексом.pathName bbox
first ?last?
Возвращает параметры области, объемлющей заданную ячейку (группу ячеек) в
виде списка из четырех элементов: координат x и y левого верхнего угла области,
ее ширины и высоты в пикселях. Область объемлет только те из указанных ячеек,
которые видны на экране. Если таких ячеек нет, возвращается пустая
строка.pathName border optionargs
Эта команда является волшебным средством, для переноса границ ячеек при
изменении их размеров. Обычно она вызывается через события с одной из следующих
подопций:pathName border mark x y
?row|col?
Запоминает координаты x и y и границу строки и/или столбца под этой точкой
в таблице, если точка лежит на границе. Используется в связке с последующей
командой border dragto. Чаще всего эта команда вызывается по нажатию
кнопки “Мыши” на таблице. Если аргумент row или col не задан,
команда возвращает кортеж из обоих индексов границы (пустой кортеж означает, что
точка не принадлежит границе). В противном случае возвращается индекс заданной
границы (строки или столбца соответственно).pathName
border dragto x y
Эта команда вычисляет разность между своими x и y аргументами
и y и x аргументами последней команды border mark
для таблицы. Затем она изменяет положение границы на вычисленную разность. Эта
команда обычно вызывается по событию движения “Мыши” в таблице, чтобы произвести
эффект интерактивного изменения границы.pathName cget
option
Возвращает текущую величину опции. Option может быть любой из опций,
определенных для таблиц.pathName clear option
?first? ?last?
Эта команда является удобной утилитой, чтобы удалять различные объекты
таблицы. first и last представляют правильные табличные индексы.
Если ни один индекс не задан, команда выполняется для всей таблицы. Возможные
подопции:pathName clear cache ?first? ?last?
Очищает определенный раздел кеша, если таблица использовала
кеш.pathName clear sizes ?first? ?last?
Отменяет заданные размеры ячеек для столбцов и колонок, входящих в заданную
область. Если задан только один индекс, например, ‘2,0’, то он задает область,
состоящую из колонки ‘2’ и столбца ‘0’.pathName clear tags
?first? ?last?
Очищает определенную область от тэгов (все row, column и cell
тэги).pathName clear all ?first? ?last?
Выполняет все вышеуказанные действия в определенной
области.pathName configure ?option?
?value? ?option value ...?
Запрашивает или модифицируют опции таблицы. Если никакая опция не
определена, возвращает список, описывающий все доступные опции для виджета
(смотри Tk_ConfigureInfo для информации о формате этого списка). Если
опция указана без значения, команда возвращает список, описывающий одну опцию
(этот список идентичен соответствующему подсписку списка, возвращаемого, если
никакая опция не задана). Если заданы одна или более пар опция-величина, то
команда модифицирует данную опцию виджета, чтобы она имела данное значение
(значения); в этом случае команда возвращает пустую строку. Опция может быть
любой из опций, определенных для команды
table.pathName curselection ?set
value?
Если аргументы команды не заданы, то команда возвращает отсортированные
индексы выбранных ячеек. В противном случае она устанавливает во все выбранные
ячейки заданное значение. Опция set не воздействует на таблицу, если у таблицы
нет связанного Tcl массива или состояние таблицы
неактивно.pathName curvalue?value?
Если величина не задана, возвращается величина из редактируемой ячейки (с
индексом active), иначе величина устанавливается в активной
величине.pathName deleteoptionarg?arg?
Эта команда используется, чтобы удалять различные компоненты таблицы. У нее
есть различные формы, в зависимости от подопции:pathName
deleteactive index?index?
Удаляет текст из активной ячейки. Если дан только один индекс, команда
удаляет символ после этого индекса, в противном случае удаляются символы с
первого индекса по второй. index может быть числом, insert или
end.pathName
deletecols?switches?index?count?
Удаляет count колонок, начиная с колонки с индексом index. Если
count — отрицательное, удаляет колонки влево от начальной. В противном
случае удаляет колонки вправо. Выбор очистится. Дополнительные
ключи:-cols value
Устанавливает искусственное ограничение на число столбцов в активной
области. Столбцы за пределами активной области при этом изменяться не будут. По
умолчанию используется величина опции -cols таблицы, то есть активная
область распространяется на все столбцы. Использование опции может вызвать
интересные побочные эффекты, когда опция используется в связке с другими
опциями.-holddimensions
Обеспечивает сохранение числа столбцов в таблице (при удалении могут
появиться пустые столбцы вместо удаленных). По умолчанию число столбцов
уменьшается в соответствии со значением
count.-holdtags
Обеспечивает сохранение тэгов, созданных с помощью команды tag, при
удалении всех ячеек, для которых они были заданы. Тэги присваиваются новым
ячейкам с соответствующими индексами. Также предотвращает изменение ширины
таблицы, если она задана с помощью команды width. По умолчанию новые
ячейки, вставшие на место удаленных, не наследуют их
тегов.-keeptitles
Защищает ячейки области заголовка от изменения. В противном случае они
могут быть удалены подобно регулярным ячейкам.-rows
value
Устанавливает искусственное ограничение на число строк в активной области.
Строки за пределами активной области при этом изменяться не будут. По умолчанию
используется величина опции -rows таблицы, то есть активная область
распространяется на все строки. Использование опции может вызвать интересные
побочные эффекты, когда опция используется в связке с другими
опциями.--
Означает конец ключей.pathName delete rows
?switches?index?count?
Удаляет count строк таблицы, начиная со строки index (и
включая ее). Если count отрицательное, то удаляются предшествующие
строки. В противном случае удаляются последующие строки. Выбор очищается. Ключи
– такие же, как для удаления столбца.pathName
flush?first? ?last?
Сохраняет табличный кеш от first до last. Если индексы не
заданы, сохраняется весь кеш.pathName
getfirst?last?
Возвращает (в виде списка) значения из ячеек, содержащихся в прямоугольной
области с левым верхним углом, заданным индексом first, и правым нижним углом,
определяемым индексом last (если задан).pathName
height?row? ?value
rowvalue ...?
Если никакая строка не задана, возвращает список, описывающий все строки,
для которых высота установлена. Если колонка задана без величины, возвращает
высоту этой колонки в символах (положительное число) или пикселях (отрицательное
число). Если одна или более пар строка-величина определены, тогда, устанавливает
высоту соответствующих строк в строках символов (положительное число) или
пикселях (отрицательный номер). Если задано значение высоты “default”, то высота
строки определяется значением опции -rowheight.pathName
icursor?arg?
Если команда задана без аргументов, то она возвращает позицию курсора
вставки в активной ячейке. Если команда задана с одним аргументом, то она
устанавливает курсор в этой точке в строке. 0 — перед первым символом.
Допустимые индексы: insert для текущего положения курсора и end для конца
текста.pathName index
index?row|col?
Возвращает индекс ячейки, которая соответствует указанному индексу, в форме
row,col. Если задана опция row или col, то команда
возвращает только индекс строки или столбца
соответственно.pathName insertoptionarg
arg
Эта команда используется, чтобы вставлять различные объекты (значения,
колонки, столбцы и т.п.) в таблицу. У нее есть различные формы в зависимости от
подопции:pathName insert active index
value
value является текстовой строкой, которая вставляется в активную
ячейку, начиная с позиции index. Курсор затем позиционируется после
встроенного текста. index может быть числом, insert или
end.pathName insert
cols?switches? index ?count?
Вставляет count столбцов, начиная с индекса col. Если
count является отрицательным числом, они вставляются перед столбцом с
индексом col. В противном случае они вставляются после столбца с индексом
col. Выбор очищается. Ключи — те же, как при удаления
столбца.pathName insert rows
?switches? index ?count?
Вставляет count строк, начиная с индекса col. Если count
является отрицательным числом, они вставляются перед строкой с индексом
col. В противном случае они вставляются после строки с индексом
col. Выбор очистится. Ключи — те же, как для удаления
строки.pathName reread
Перечитывает старое содержимое ячейки снова в буфер редактирования. Полезно
для обработки событий, когда <Escape> нажимается, чтобы прервать
редактирование (стандартное поведение).pathName
scan option args
Эта команда используется, чтобы осуществить “прокрутку” таблицы. У нее есть
две формы в зависимости от опций:pathName scan
mark x y
Запоминает текущие координаты x и y и вид таблицы;
используется в связке с последующей scan dragto командой. Обычно эта
команда вызывается по нажатию на кнопку “Мыши”. Возвращает пустую
строку.pathName scan dragto x y
Эта команда вычисляет разность между текущими координатами y и x и
координатами x и y, запомненными в последней команде scan mark для данного
виджета. Затем она “прокручивает” таблицу на 5-кратную разность координат. Эта
команда обычно вызывается при движении “Мыши” на таблице и используется для
ускоренного просмотра таблицы. Возвращает пустую
строку.pathName seeindex
“Прокручивает” таблицу так, чтобы ячейка, заданная индексом, оказалась
первой ячейкой с левого верхнего края таблицы (исключая строки и столбцы
заголовков), если ячейка к настоящему времени не видна на экране. Фактическая
ячейка может не оказаться самой первой, если за ней в таблице недостаточно
ячеек, чтобы заполнить экран.pathName
selectionoptionarg
Эта команда используется, чтобы управлять выбором в таблице. У нее есть
различные формы, в зависимости от опций:pathName
selectionanchorinde
Устанавливает якорь выбора в ячейке, заданной индексом. Якорь выбора
является концом выбора, который фиксируется, пока второй конец области выбора
передвигается с помощью “Мыши”. Индекс anchor может использоваться для
ссылок на соответствующую ячейку.pathName selection
clear first ?last?
Снимает выбор с выбранных ячеек от first до last
(включительно). Состояние выбора для ячеек за пределами этой области не
изменяется. Если first равно all, команда удаляет выбор из всех
ячеек.pathName selection includesindex
Возвращает `1’, если ячейка, указанная индексом, выбрана, и `0’ — если
нет.pathName selection set first ?last?
Выбирает все ячейки в области от first до last включительно,
не влияя на состояние выбора ячеек за пределами этой
области.pathName
set?row|col? index?value? ?index value
...?
Для каждой пары index value устанавливает значение value в
ячейке, определенной индексом. Проверка корректности значений при этом не
производится. Если списку пар индекс-величина предшествует row или
col, величина value рассматривается как Tcl список, и значения из
списка устанавливаются в последовательных ячейках строки или колонки
соответственно. Например, команда
set row 2,3 {2,3 2,4 2,5}Установит
значения в 3 ячейки, от 2,3 до 2,5.pathName
tagoption?arg arg ...?
Эта команда используется, чтобы управлять тэгами. Точное поведение команды
зависит от значения опции и аргументов. Только опция cget требует использования
реально существующих тэгов. В настоящее время поддерживаются следующие формы
команды:pathName tag cell tagName?index ...
?
Если команда задана без аргументов, то она распечатывает список ячеек,
которые используют тэг. В противном случае она устанавливает тэг заданным
ячейкам. Если тэг пустой ({}), ячейкам восстанавливается тэг по умолчанию. Тэги,
добавленные с помощью опций -*tagcommand, здесь не
обрабатываются.pathName tag cget
tagNameoption
Эта команда возвращает текущую величину опции option для тэга
tagName. option может быть любой из опций, определенных для
команды tag configure для таблиц.pathName
tag col tagName?col ... ?
Если команда задана без аргументов, то она распечатывает список колонок,
которые используют данный тэг. В противном случае устанавливает тэг заданным
столбцам. Если тэг пустой ({}), столбцам восстанавливается тэг по умолчанию.
Тэги, добавленные с помощью опции -coltagcommand, здесь не
обрабатываются.pathName tag configure tagName ?option?
?value? ?option value ...?
Эта команда подобна команде configure для таблиц, за исключением того, что
она изменяет опции, связыванные с тэгом tagName вместо модификации опций для
всей таблицы. Если никакая опция не задана, команда возвращает список всех
доступных опций для tag_Name (смотри Tk_ConfigureInfo для
информации о формате этого списка). Если опция указана без величины,
возвращается подсписок указанного списка, соответствующий указанной опции. Если
указана одна или более пар опция- величина, то команда модифицирует данную опцию
(опции) для указанного тэга; в этом случае команда возвращает пустую строку. См.
"ТЭГИ".pathName tag delete
tagName
Удаляет тэг. Если тэг не существует, ошибки не
возникает.pathName tag exists
tagName
Возвращает `1’, если указанный тэг существует, и ‘0’ — в противном
случае.pathName tag includes
tagNameindex
Возвращает `1’, если ячейка с данным индексом имеет указанный тэг, и ‘0’ —
в противном случае.pathName tag names
?pattern?
Если никакой образец не задан, показывает имена всех определенных тэгов в
таблице. В противном случае образец используется в качестве шаблона, и
показываются только тэги, удовлетворяющие этому
шаблону.pathName tag row tagName?row
...?
Если команда задана без аргументов, то она распечатывает список строк,
которые используют данный тэг. В противном случае она устанавливает данный тэг
указанным строкам. Если тэг пустой ({}), строкам восстанавливается тэг по
умолчанию. Тэги, добавленные с помощью опции –rowtagcommand, не
обрабатываются здесь.pathName
validateindex
Явно проверяет корректность значения в ячейке, определенной индексом, с
помощью команды, заданной опцией –validatecommand. Возвращает ‘0’ или `1’
в зависимости от результатов проверки.pathName
width?col? ?value col value
...?
Если никакой столбец не задан, возвращает список, описывающий все столбцы,
для которых установлена ширина. Если столбец указан без указания ширины, команда
возвращает ширину соответствующего столбца в символах (положительное число) или
пикселях (отрицательное число). Если заданы одна или более пар колонка-величина,
тогда команда устанавливает каждому перечисленному столбцу соответствующую
ширину в символах (положительное число) или пикселях (отрицательное число). Если
величина совпадает с шириной, задаваемой по умолчанию, колонка в дальнейшем
будет использовать ширину, определенную с помощью опции
-colwidth.pathName window option ?arg
arg ...?
Эта команда используется, чтобы управлять встроенными окнами. Точное
поведение команды зависит от значения опции и аргументов. В настоящее время
поддерживаются следующие формы команды:pathName
window cget index option
Эта команда возвращает текущую величину опции option для окна в
ячейке с данным индексом. option может иметь любое из значений, допустимых для
команды window configure.pathName window
configureindex ?option? ?value? ?option value ...?
Эта команда подобна команде configure для таблицы, за исключением
того, что она изменяет опции, связанные с встроенным окном с данным индексом, а
не опции таблицы в целом. Если опция указана без величины, возвращается
подсписок указанного списка, соответствующий указанной опции. Если указана одна
или более пар опция-величина, то команда модифицирует данную опцию (опции) для
указанного окна; в этом случае команда возвращает пустую строку. См. "Встроенные
окна".pathName window deleteindex ?index
...?
Удаляет встроенное окно из таблицы. Соответствующее окно также будет
удалено.pathName window move indexFrom
indexTo
Перемещает встроенное окно из одной ячейки в другую. Если в целевой ячейке
уже существует другое окно, оно будет удалено.pathName
window names ?pattern?
Если никакой шаблон не задан, команда показывает все ячейки, в которых есть
встроенные окна. В противном случае показывает только те ячейки, в которых есть
встроенные окна с именами, удовлетворяющими шаблону.pathName
xview args
Эта команда используется для запросов о горизонтальной позиции таблицы в
окне и для изменения горизонтальной позиции таблицы в окне. Команда может
использоваться в одной из следующих форм:pathName
xview
Возвращает список, содержащий два элемента. Каждый из них является
действительным числом из диапазона ‘0’ – `1’. Они указывают соответственно левую
и правую границы видимой области. Например, если первый элемент — “.2” а второй
элемент — “.6”, то 20% табличного текста выходит за пределы экрана слева,
средние 40% текста видны в окне, и 40% текста выходит за пределы экрана вправо.
Эти величины используются для конфигурации полос прокрутки с помощью команды,
заданной опцией -xscrollcommand.pathName
xview index
“Прокручивает” таблицу так, чтобы столбец с данным индексом отображался на
левом крае окна.pathName xview moveto
fraction
“Прокручивает” таблицу так, чтобы доля общей ширины табличного текста,
выходящая за пределы экрана влево, равнялась fraction. fraction
должно быть дробью между ‘0’ и `1’.pathName xview scroll
numberwhat
Эта команда “прокручивает” таблицу влево или вправо на заданное расстояние.
number должно быть целым числом. what должно быть units или
pages или сокращением одного из их. Если what равно units,
таблица сдвигается на number символов (символ равен ширине символа
0); если what равно pages, таблица сдвигается на
соответствующее число экранов. Если number является отрицательным числом, тогда
более левые символы становятся видимыми; если number – положительное число,
тогда более правые символы становятся видимыми.pathName
yviewargs
Эта команда используется для запросов о вертикальной позиции таблицы в окне
и для изменения вертикальной позиции таблицы в окне. Команда может
использоваться в одной из следующих форм:pathName
xview
Возвращает список, содержащий два элемента. Каждый из них является
действительным числом из диапазона ‘0’ – `1’. Они указывают соответственно
верхнюю и нижнюю границы видимой области (например, `.5’ означает середину
таблицы) Эти величины используются для конфигурации полос прокрутки с помощью
команды, заданной опцией
-yscrollcommand.pathName yview index
“Прокручивает” таблицу так, чтобы строка с данным индексом отображалась на
верхнем крае окна.pathName yview moveto
fraction
“Прокручивает” таблицу так, чтобы доля общей высоты табличного текста,
выходящая за пределы экрана вверх, равнялась fraction. fraction
должно быть дробью между ‘0’ и `1’.pathName yview scroll
number what
Эта команда “прокручивает” таблицу вверх или вниз на заданное расстояние.
number должно быть целым числом. what должно быть units или
pages или сокращением одного из их. Если what равно units,
таблица сдвигается на number строк текста; если what равно
pages, таблица сдвигается на соответствующее число экранов. Если
number является отрицательным числом, тогда более ранние символы
становятся видимыми; если number – положительное число, тогда более
поздние символы становятся видимыми.СТАНДАРТНОЕ ПОВЕДЕНИЕ
Вновь созданная таблица обладает следующим поведением.
[1] Нажатие левой кнопки “Мыши” в ячейке активизирует эту ячейку. Нажатие
кнопки “Мыши” в уже активной ячейке перемещает курсор вставки на ближайший
символ.
[2] Перемещение курсора “Мыши”, при нажатой левой кнопке, позволяет выделить
область таблицы. Выход курсора из таблицы вниз, при нажатой левой кнопке “Мыши”,
обеспечивает прокрутку таблицы одновременно с выделением ячеек.
[3] Перемещение курсора “Мыши”, при нажатой средней кнопке “Мыши”,
обеспечивает прокрутку таблицы без выделения.
[4] Клавиша Home возвращает к началу таблицы.
[5] Клавиша End перемещает в конец таблицы.
[6] Сочетание клавиш Control-Home перемещает в начало таблицы и
активизирует первую ячейку.
[7] Сочетание клавиш Control-End перемещает в конец таблицы и
активизирует последнюю ячейку.
[8] Сочетание клавиш Shift-Control-Home расширяет выделенную область
таблицы до ее начала.
[9] Сочетание клавиш Shift-Control-End расширяет выделенную область
таблицы до ее конца.
[10] Клавиши с изображениями стрелок позволяют выбрать соседнюю ячейку в
соответствующем направлении.
[11] Сочетание клавиш Shift-<arrow> расширяет выбранную область
в направлении, указываемом стрелкой.
[12] Сочетание клавиш Control-leftarrow и Control-rightarrow
перемещают курсор вставки внутри ячейки.
[13] Сочетание клавиш Control-slash выбирает все ячейки.
[14] Сочетание клавиш Control-backslash clears снимает выбор со всех
ячеек.
[15] Клавиша Backspace удаляет символ перед курсором вставки в
активной ячейке.
[16] Клавиша Delete удаляет символ после курсора вставки в активной
ячейке.
[17] Клавиша Escape перечитывает содержимое активной ячейки из
заданного источника данных, отменяя любые изменения, выполненные в ячейке.
[18] Сочетание клавиш Control-a перемещает курсор вставки в начало
активной ячейки.
[19] Сочетание клавиш Control-e перемещает курсор вставки в конец
активной ячейки.
[20] Control-minus и Control-equals уменьшает и
увеличивает ширину столбца, содержащего активную ячейку.
[21] Перемещение курсора “Мыши” с нажатой правой кнопкой когда курсор
находится на границе ячейки вызовет изменение размеров строки и/или столбца,
(при соответствующей величине опция –resizeborders).
Поведение таблицы может незначительно отличаться от описанного выше в
зависимости от значения опции -selectionmode.
Если таблица дезактивирована с помощью опции -state, то ее вид не
отличается от вида активной таблицы, и ячейки могут по-прежнему быть выбраны, но
никакой курсор вставки не появится в ячейках и никакие модификации ячейки не
произойдут.
Поведение таблиц может изменяться путем определения новых событий для
конкретной таблицы или путем переопределения событий для всего класса. Описание
стандартных событий приведено в файле tkTable.tcl.
text
Создание текстового примитива и управление им.
Синтаксис
Стандартные
параметры
Дополнительные
параметры примитва
Описание
Индексы
Теги
Метки
Вставленные
окна
Вставленные
изображения
Выделение
Курсор
ввода
Команда
примитива
Привязки
Вопросы
производительности СИНТАКСИС
text имяПути параметрыСТАНДАРТНЫЕ ПАРАМЕТРЫ
-background |
-highlightbackground |
-insertontime |
-selectborderwidth |
-borderwidth |
-highlightcolor |
-insertwidth |
-selectforeground |
-cursor |
-highlightthickness |
-padx |
-setgrid |
-exportselection |
-insertbackground |
-pady |
-takefocus |
-font |
-insertborderwidth |
-relief |
-xscrollcommand |
-foreground |
-insertofftime |
-selectbackground |
-yscrollcommand |
Подробное описание этих параметров приведено в разделе options.ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ
ПРИМИТИВА
Имя параметра: -height
Имя в Базе: height
Класс в
Базе: Height
Задает желаемую высоту окна в символах; размер символа определяется
шрифтом, который задан параметром -font.
Значение параметра должно быть не меньше единицы.
Имя параметра: -spacing1
Имя в Базе: spacing1
Класс в
Базе: Spacing1
Запрашивает дополнительный промежуток перед каждой строкой текста в
примитиве (в любой из разрешенных форм для расстояний на экране). При переносе
строки заданное значение относится только к первой строчке на экране. Параметр
-spacing1 в тегах подавляет данный.
Имя параметра: -spacing2
Имя в Базе: spacing2
Класс в
Базе: Spacing2Задает величину дополнительного промежутка между
двумя последовательными строчками на экране, полученными в результате переноса
одной строки текста (в любой из разрешенных форм для расстояний на экране).
Параметр –spacing2 в тегах подавляет данный.
Имя параметра: -spacing3
Имя в Базе: spacing3
Класс в Базе: Spacing3
Запрашивает дополнительный промежуток после каждой строкой текста в
примитиве (в любой из разрешенных форм для расстояний на экране). При переносе
строки заданное значение относится только к последней строчке на экране.
Параметр -spacing3 в тегах подавляет данный.
Имя параметра: -state
Имя в Базе: state
Класс в Базе:
State
Задает одно из двух состояний текста: нормальное (normal) или
недоступное (disabled). Текст, находящийся в недоступном состоянии,
нельзя редактировать и в нем не отображается курсор ввода, даже если данный
примитив находится в фокусе ввода.
Имя параметра: -tabs
Имя в Базе: tabs
Класс в Базе:
TabsЗадает набор положений табулятора в окне. Значение параметра
представляет собой список расстояний на экране, задающих эти положения. Элемент
списка, следующий за элементом, который указывает очередное положение
табулятора, может описывать способ расположения текста относительно этого
положения с помощью ключевых слов left, right, center или numeric.
Значение по умолчанию равно left; в этом случае левый край текста,
следующего за символом табуляции, располагается в позиции табуляции.
Right означает, что в позиции табуляции располагается правый край текста,
следующего за символом табуляции, а center указывает на необходимость
центрировать текст относительно позиции табуляции. Numeric означает, что
в позиции табуляции следует располагать десятичную точку текста; если в тексте
нет десятичной точки, то младшая значащая цифра числа располагается
непосредственно слева от позиции табуляции; если в тексте нет чисел, то он
выравнивается вправо по позиции табуляции. Например, задание параметра -tabs
{2c left 4c 6c center} приводит к созданию трех позиций табулятора с
двухсантиметровым интервалом, первые два из которых используют выравнивание
влево, а третья — выравнивание по центру. Если в списке положений табулятора их
оказывается недостаточно, чтобы обеспечить все символы табуляции в строке
текста, то Tk создает дополнительные позиции табуляции, экстраполируя промежуток
и способ выравнивания текста, указанные последним элементом списка. Параметр
-tabs в тегах подавляет данный. Если параметр -tabs не задан или
его значением является пустая строка, то Tk использует табуляцию по умолчанию —
с шагом, равным восьми символам среднего размера.
Имя параметра: -width
Имя в Базе: width
Класс в
Базе: Width
Задает желаемую ширину окна в символах; размер символа определяется
шрифтом, который задан параметром -font. Если ширина символа в шрифте
непостоянна, то для перевода числа символов в единицы экрана используется ширина
символа “0”.
Имя параметра: -wrap
Имя в Базе: wrap
Класс в Базе:
WrapЗадает способ обращения с чересчур длинными строками,
которые не помещаются в одной строчке экрана. Может принимать одно из значений
none, char или
word. Значение
none указывает на то, что
каждая строка текста отображается в единственной строчке экрана — не
поместившиеся символы не выводятся. В остальных двух режимах при необходимости
осуществляется перенос каждой строки текста, чтобы все ее содержимое
отображалось на экране. В режиме
char переход на новую строчку можно
осуществлять после любого символа; в режиме
word перенос строки
выполняется только после конца слова.
ОПИСАНИЕ
Команда text создает новое окно (задаваемое аргументом
имяПути) и превращает его в текстовый примитив. Детали изображения
текста, такие как цвет фона по умолчанию и объемный вид, задаются с помощью
описанных выше дополнительных параметров. Команда text возвращает имя
пути нового окна.
Текстовый примитив предназначен для вывода одной или нескольких строк текста
и для редактирования этого текста. Текстовые примитивы поддерживают четыре
способа отметить часть текста — так называемые теги, метки, вставленные окна и
вставленные изображения. Теги позволяют выводить различные части текста
различными шрифтами и цветом. Кроме того с тегами можно связать команды Tcl,
которые будут выполняться каждый раз при совершении определенных действий, —
например, при нажатиях на клавиши клавиатуры и “Мыши”, если курсор находится в
определенной части текста. Подробно эти возможности описаны ниже (см. “Теги”).
Метки представляют собой другой способ отметить часть текста. Они
предназначены для указания на различные интересные места в тексте, возникающие в
процессе его редактирования. Подробно эти возможности описаны ниже (см. Метки).
Третий способ обеспечивает возможность вставки в текст произвольных окон.
Подробно эти возможности описаны ниже (см. “Вставленные
окна”).
Четвертый способ обеспечивает возможность вставки в текст изображений Tk.
Подробно эти возможности описаны ниже (см. “Вставленные
изображения
ИНДЕКСЫ
Аргументами многих команд примитива являются один или несколько индексов.
Индекс представляет собой строку, указывающую конкретное место в тексте —
например, место вставки текста или один из граничных символов удаляемого участка
текста. Индексы имеют следующий синтаксис:
база модификатор модификатор модификатор ...
База — это указатель начальной точки, а модификаторы
указывают сдвиг от начальной точки (например, на один символ влево или вправо от
базы). База является обязательной частью индекса, а модификаторы —
необязательной.База индекса должна быть представлена в одном
из следующих видов:
строка.сим
Указывает на символ с номером сим в строке с номером строка.
Для совместимости с другими программами ОС UNIX, использующими тот же подход к
нумерации, строки нумеруются, начиная с “1”. Нумерация символов в строке
начинается с “0”. Если значением сим является end, то база
ссылается на символ перевода строки, завершающий строку.@x,y
Указывает на символ, в котором находится точка с координатами в окне текста
равными x и y.end
Указывает на конец текста (на символ, следующий непосредственно за
последним символом перехода на новую строку).метка
Указывает на символ, следующий непосредственно за меткой с именем
метка.тег.first
Указывает на первый символ в тексте, помеченный тегом с именем тег.
Если в тексте нет символов, помеченных тегом, то возникает
ошибка.тег.last
Указывает на символ, непосредственно следующий за последним символом,
помеченным тегом с именем тег. Если в тексте нет символов, помеченных
тегом, то возникает ошибка.имяПути
Указывает положение вставленного окна с именем имяПути. Если
вставленное окно с заданным именем отсутствует, то возникает
ошибка.имяИзобр
Указывает положение вставленного изображения с именем имяИзобр. Если
вставленное изображение с заданным именем отсутствует, то возникает
ошибка.Если вид базы не определяется однозначно (так, например, если
метка и имяИзобр имеют одинаковое значение, то их нельзя
различить), то предпочтение отдается виду, встречающемуся в приведенном списке
раньше. Если за индексом базы идут модификаторы, то каждый из них должен быть
представлен в одном из описанных ниже видов. Ключевые слова, например,
chars или wordend, можно сокращать, если результат сокращения
позволяет однозначно восстановить слово.
+ счет chars
Увеличивает индекс на счет символов, при необходимости переходя на
следующую строку. Если за символом с текущим индексом следует меньше символов,
чем счет, то индекс устанавливается на последний символ в тексте. Пробелы
по обе стороны от значения счет необязательны.-
счет chars
Уменьшает индекс на счет символов, при необходимости переходя на
предыдущую строку. Если перед символом с текущим индексом идет меньше символов,
чем счет, то индекс устанавливается на первый символ в тексте. Пробелы по
обе стороны от значения счет необязательны.+
счет lines
Увеличивает индекс на счет строк, сохраняя номер символа в строке.
Если за строкой с текущим индексом следует меньше строк, чем счет, то
индекс устанавливается на символ с тем же номером в последней строчке текста.
Если длина строки с новым положением индекса меньше номера символа, то индекс
указывает на последний символ в этой строке (символ перевода строки). Пробелы по
обе стороны от значения счет необязательны.-
счетlines
Уменьшает индекс на счет строк, сохраняя номер символа в строке.
Если перед строкой с текущим индексом идет меньше строк, чем счет, то
индекс устанавливается на символ с тем же номером в первой строчке текста. Если
длина строки с новым положением индекса меньше номера символа, то индекс
указывает на последний символ в этой строке (символ перевода строки). Пробелы по
обе стороны от значения счет необязательны.linestart
Устанавливает индекс на первый символ в строке.lineend
Устанавливает индекс на последний символ в строке (символ перевода
строки).wordstart
Устанавливает индекс на первый символ в слове, содержащем символ с текущим
значением индекса. Слово представляет собой последовательность букв, цифр или
символов подчеркивания (состоящую, быть может, из одного
символа).wordend
Устанавливает индекс на первый символ в слове, содержащем символ с текущим
значением индекса. Если текущее значение индекса и без того указывает на
последний символ в слове, то оно не изменяется.Если в команде задано
несколько модификаторов, то они применяются слева направо. Так, например, индекс
“end-1 chars“ указывает на предпоследний символ в тексте, а индекс
“insert wordstart-1 c“ указывает на символ, непосредственно
предшествующий первому символу в слове, содержащем символ с текущим значением
индекса.ТЕГИ
Участки текста можно помечать с помощью тегов. Тег представляет собой
символьную строку, которая привязана к некоторым символам текста. В принципе
теги могут содержать любые символы, однако использования символов “ ” (пробел),
“+” и “-” лучше избегать: это специальные символы индексов и использование тега,
в котором присутствуют такие символы, в качестве индекса невозможно. С символами
данного текста можно связать произвольное количество тегов. Каждый тег может
относиться к одному символу, последовательности символов или к нескольким
последовательностям символов. С отдельным символом может быть связано
произвольное количество тегов.
Все теги упорядочены; на этот порядок опираются некоторые из описываемых ниже
функций работы с тегами. При определении тега (путем связывания его с символами,
или при установке параметров его представления на экране, или при привязке к
нему команд) он получает более высокий приоритет, чем все существующие теги.
Приоритетный порядок тегов можно изменить с помощью команд примитива “имяПути
tag raise“ и “ имяПути tag lower“.
В текстовых примитивах теги служат для достижения трех целей. Во-первых, они
управляют отображением информации на экране. По умолчанию способ отображения
текста определяется значениями параметров background, font и
foreground текстового примитива. Однако команда примитива “имяПути
tag configure“ позволяет связать с каждым тегом свои значения параметров
отображения. Если с символом связан тег, то значения параметров отображения для
этого тега подавляют значения по умолчанию. В настоящее время для тегов можно
пользоваться следующими параметрами:
-background цвет
Параметр цвет задает цвет фона для изображения символов, связанных с
данным тегом. Его значение может быть представлено в любом виде, приемлемом
для Tk_GetColor.-bgstipple двуцвет
Параметр двуцвет задает двуцветное изображение, предназначенное для
вывода в качестве фона для текста. Его значение может быть представлено в любом
виде, приемлемом для Tk_GetBitmap. Если параметр двуцвет не задан
или его значением является пустая строка, то используется равномерное заполнение
фона.-borderwidth пиксели
Параметр пиксели задает ширину трехмерного бордюра, окружающего фон.
Его значение может быть представлено в любом виде, приемлемом для
Tk_GetPixels. Этот параметр используется в сочетании с
параметром -relief для описания трехмерного представления фона для
символов; если параметр -background для тега не задан, то параметр
-borderwidth игнорируется.-fgstipple двуцвет
Параметр двуцвет задает двуцветное изображение, предназначенное для
вывода в качестве фона для рисования текста и другой информации переднего плана
(например, подчеркивания). Его значение может быть представлено в любом виде,
приемлемом для Tk_GetBitmap. Если параметр двуцвет
не задан или его значением является пустая строка, то используется
равномерное заполнение фона.-font имяШрифта
Параметр имяШрифта задает имя шрифта для изображения символов. Его
значение может быть представлено в любом виде, которы описан в команде
font
.-foreground цвет
Параметр цвет задает цвет символов текста и другой информации
переднего плана, например, подчеркивания. Его значение может быть представлено в
любом виде, приемлемом для Tk_GetColor.-justify
вырав
Если первый символ строчки на экране связан с тегом, для которого задан
такой параметр, то значение параметра определяет способ выравнивания текста в
строчке. Параметр вырав может принимать значения left, right и
center. При переносе строки выравнивание каждой из получившихся строчек
на экране определяется первым символом этой строчки.-lmargin1
пиксели
Если первый символ строчки на экране связан с тегом, для которого задан
такой параметр, то значение параметра пиксели задает величину отступа от левого
края окна. Значение параметра пиксели представляет собой расстояние на экране в
любом допустимом виде. При переносе строки этот параметр применяется только к
первой строчке на экране; отступом остальных строк управляет параметр
-lmargin2.-lmargin2 пиксели
Если первый символ строчки на экране связан с тегом, для которого задан
такой параметр, и если строчка на экране не является первой строчкой строки
текста (т.е. она представляет собой часть перенесенной строки текста), то
значение параметра пиксели задает величину отступа данной строчки от левого края
окна. Значение параметра пиксели представляет собой расстояние на экране в любом
допустимом виде. Этот параметр используется только если допускается перенос
строки; он применяется только ко второй и последующим перенесенным
строчкам.-offset пиксели
Параметр пиксели задает величину сдвига (в пикселях) по вертикали
базиса строки текста от базиса основной строки. Например, для верхних индексов
базисная строка сдвигается вверх, а для нижних — вниз. Значение параметра
пиксели представляет собой расстояние на экране в любом допустимом
виде.-overstrike булевское
Указывает, следует ли проводить горизонтальную прямую посередине символов.
Значение параметра булевское может быть представлено в любом виде,
приемлемом для Tk_GetBoolean.-relief обвид
Значение параметра обвид задает объемный вид фона в любом виде,
приемлемом для Tk_GetRelief. Этот параметр используется в
сочетании с параметром -borderwidth для установления трехмерного вида фона для
символов; если параметр -background для данного тега не установлен, то
параметр -relief игнорируется.-rmargin пиксели
Если первый символ строчки на экране связан с тегом, для которого задан
такой параметр, то значение параметра пиксели задает величину отступа между
последним символом строчки и правым краем окна. Значение параметра пиксели
представляет собой расстояние на экране в любом допустимом виде. Этот параметр
используется только, если перенос строки допустим. При переносе строки этот
параметр применяется только ко всем перенесенным
строчкам.-spacing1 пиксели
Параметр пиксели задает размер дополнительного пространства над
каждой строкой текста. Значение параметра пиксели представляет собой расстояние
на экране в любом допустимом виде. При переносе строки этот параметр применяется
только к первой строчке на экране.-spacing2 пиксели
Параметр пиксели задает размер дополнительного пространства над
каждой перенесенной строчкой из строчек, составляющих одну строку текста.
Значение параметра пиксели представляет собой расстояние на экране в любом
допустимом виде.-spacing3 пиксели
Параметр пиксели задает размер дополнительного пространства под
каждой строкой текста. Значение параметра пиксели представляет собой расстояние
на экране в любом допустимом виде. При переносе строки этот параметр применяется
только к последней строчке на экране.-tabs списТаб
Параметр списТаб задает набор положений табулятора в том же виде,
что и параметр -tabs для текстового примитива. Этот параметр относится к
строке текста только в том случае, если он связан с первым символом строки. Если
значением параметра является пустая строка, то параметр считается не заданным
для данного тега (по умолчанию). Если значением параметра является не пустая
строка, а пустой список (например, установка параметра имеет вид -tags {
}), то его значением считается стандартный набор 8-символьных позиций
табулятора (см. описание параметра -tags для
примитива).-underline булевское
Параметр булевское указывает, следует ли подчеркивать символы.
Значение параметра булевское может быть представлено в любом виде, приемлемом
для Tk_GetBoolean.-wrap режим
Параметр режим задает способ обработки строк, длина которых
превышает ширину текстового окна. Допустимые значения параметра те же, что и у
параметра -wrap текстового примитива: none, char и
word. Если этот параметр задан, то он подавляет параметр -wrap
текстового примитива.Если с символом связано несколько тегов, причем
задаваемые ими параметры вывода противоречат друг другу, то используются
значения параметров тегов с наивысшим приоритетом. Если некоторый параметр
вывода для конкретного тега не задан или если его значением является пустая
строка, то этот параметр при выводе не используется; вместо него берется
параметр тега со следующим приоритетом. Если ни один из тегов не определяет
параметра вывода, то используется стиль, принятый для данного примитива по
умолчанию.
Во-вторых, теги служат для привязки событий. Привязки к тегу осуществляются
практически таким же образом, как и привязки к классу примитива: заданная
команда Tcl исполняется всякий раз, когда на символе с данным тегом происходит
указанное событие. С помощью привязок к тегам можно задать поведение групп
символов; помимо прочего таким образом можно реализовать некоторые свойства
гипертекста. Подробное описание этих возможностей см. ниже в описании команды
примитива tag bind.
Третья задача тегов — обеспечивать
управление выделениями(См. "
Выделение
" ).
МЕТКИ
Метки представляют собой другой способ отмечать части текста. Они служат
для запоминания фиксированных мест в тексте. Метки похожи на теги в том, что они
поименованы и ссылаются на определенные места в тексте, однако они не связаны ни
с какими конкретными символами. Напротив, метка указывает на промежуток между
двумя символами. В каждый момент времени метка указывает в точности на одно
положение. При удалении символов, окружающих положение метки, сама метка
сохраняется, меняются лишь ее соседи. Теги же теряют привязку к символам при
удалении этих символов. Для работы с метками предназначена команда примитива
“имяПутиmark“; имя метки можно использовать в качестве индекса в
командах примитива — этот индекс указывает на текущее положение метки.
Каждой метке приписывается притяжение, которое может принимать
значения left и right. Притяжение определяет поведение метка при
вводе текста в положении метки. При левом притяжении метка ведет себя, как если
бы она была приписана к символу слева от нее; такая метка будет оставаться слева
от вновь вводимого текста. Для метки с правым притяжением вновь вводимый текст
окажется слева от нее. По умолчанию притяжение имеет значение right.
Пространства имен меток и тегов различны: одинаковые имена могут
использоваться для метки и тега; при этом они будут ссылаться на различные
объекты.
У двух меток есть особый смысл. Метка insert связана с курсором ввода;
см. описание ниже (см. Курсор
ввода”). Метка current связана с символом, ближайшим к курсору
“Мыши”, ее положение меняется автоматически при изменении позиции курсора и
любых изменениях текста в примитиве (с одним исключением: метка current
не обновляется в ответ на изменение положения курсора при нажатой клавише
“Мыши”; обновление откладывается до момента, когда все клавиши “Мыши” будут
отпущены). Ни одну из этих двух специальных меток нельзя удалить.
ВСТАВЛЕННЫЕ ОКНА
Вставленное окно — это третий тип ссылок в текстовом примитиве. Ссылка на
вставленное окно приводит к появлению окна в заданном месте текста. В текстовом
примитиве может быть любое количество вставленных окон; в качестве вставленного
окна может быть использован любой примитив (при соблюдении обычных ограничений
управления геометрией, согласно которым текстовое окно должно быть
непосредственным предком вставленного окна или потомком этого предка). Положение
вставленного окна меняется при редактировании или прокрутке текста; окно
выводится или стирается в зависимости от того, попадает ли оно в видимую часть
текста. Вставленное окно считается одним символом в индексном пространстве
текстового примитива; на него можно сослаться либо по имени текстового окна,
либо по значению индекса в индексном пространстве. При удалении области текста,
содержащей вставленное окно, оно разрушается.
При добавлении в текстовый примитив вставленного окна с помощью команды
примитива window create с ним можно связать несколько параметров
конфигурации. Значения этих параметров можно впоследствии изменить командой
примитива window configure. В настоящее время поддерживаются следующие
параметры:
-align где
Если высота вставленного окна отличается от высоты строчки, в которой оно
выводится, то этот параметр определяет место, где выводится окно. Параметр где
может принимать следующие значения: top (верхушка окна совпадает с
верхней частью строчки), center (окно центрируется в области строчки),
bottom (нижняя часть окна совпадает с нижней частью строчки) и
baseline (нижняя часть окна совпадает с базой
строчки).-create скрипт
Задает скрипт Tcl, выполняемый для создания вставленного окна. Этот скрипт
выполняется при выводе окна, если для окна не был указан параметр -window.
Скрипт создает окно и возвращает в качестве результата имя этого окна.
Если окно удаляется, то при его повторном выводе снова исполняется тот же
скрипт.-padx пиксели
Параметр пиксели задает размер дополнительного пространства, которое
следует оставить по обе стороны вставленного окна. Его значение представляет
собой расстояние на экране в любом допустимом виде.-pady
пиксели
Параметр пиксели задает размер дополнительного пространства, которое
следует оставить сверху и снизу от вставленного окна. Его значение представляет
собой расстояние на экране в любом допустимом виде.-stretch
булевское
Параметр указывает, следует ли вытягивать вставленное окно до высоты
строчки, если запрошенная для него высота меньше высоты строчки, на которой это
окно выводится. Если для окна задан также параметр -pady, то запрошенное
этим параметром обрамление сохраняется и при вытягивании
окна.-window имяПути
Задает имя выводимого окна.ВСТАВЛЕННЫЕ ИЗОБРАЖЕНИЯ
Последним видом пометок в текстовых примитивах являются вставленные
изображения. Такая пометка приводит к выводу изображения в заданном месте
текста. В текстовом примитиве может присутствовать произвольное количество
вставленных изображений, а одно и то же изображение может вставляться в
произвольном количестве мест в тексте. Положение вставленного изображения
меняется при редактировании или прокрутке текста. Вставленное изображение
считается одним символом в индексном пространстве текстового примитива; на него
можно сослаться либо по значению индекса в индексном пространстве, либо по
имени, которое оно получает при создании командой image
create. При удалении области текста, содержащей вставленное изображение,
данная его копия стирается с экрана.
При добавлении в текстовый примитив вставленного изображения с помощью
команды примитива image
create команда возвращает уникальное имя данного вхождения изображения в
текст. Это имя в дальнейшем можно использовать для ссылок на вхождение
изображения. Имя совпадает со значением параметра -name (см. ниже). Если
параметр -name не задан, то вместо него используется имя -image .
Если значение имяИзобр уже использовано в примитиве, то к нему
дописываются символы #nn, где nn — произвольное целое число. Таким
образом обеспечивается уникальность имени. После присвоения имени данному
вхождению изображения это имя в дальнейшем не меняется, несмотря на то, что
значения параметров -image и -name можно поменять с помощью
команды image configure.
При добавлении в текстовый примитив вставленного изображения с помощью
команды примитива image create с ним можно связать несколько параметров
конфигурации. Значения этих параметров можно впоследствии изменить командой
примитива image configure. В настоящее время поддерживаются следующие
параметры:
-align где
Если высота вставленного изображения отличается от высоты строчки, в
которой оно выводится, то этот параметр определяет место, где выводится
изображение. Параметр где может принимать следующие значения: top
(верхушка изображения совпадает с верхней частью строчки), center
(изображение центрируется в области строчки), bottom (нижняя часть
изображения совпадает с нижней частью строчки) и baseline (нижняя часть
изображения совпадает с базой строчки).-image изобр
Задает имя выводимого изображения Tk. Если значение параметра не является
допустимым именем изображения, то возвращается сообщение об
ошибке.-name ИмяИзобр
Задает имя ссылки на данное вхождение изображения. Если параметр
ИмяИзобр не задан, то именем служит имя изображения Tk. Если значение
параметра ИмяИзобр уже использовалось, то к нему приписываются символы #nn, как
описано выше.-padx пиксели
Параметр пиксели задает размер дополнительного пространства, которое
следует оставить по обе стороны вставленного изображения. Его значение
представляет собой расстояние на экране в любом допустимом
виде.-pady пиксели
Параметр пиксели задает размер дополнительного пространства, которое
следует оставить сверху и снизу от вставленного изображения. Его значение
представляет собой расстояние на экране в любом допустимом
виде.ВЫДЕЛЕНИЕ
Выделение реализуется с помощью тегов. Если параметр exportSelection
текстового примитива имеет значение истина, то с выделением ассоциируется тег
sel:
Если некоторые символы помечены тегом sel, то текстовый примитив
притязает на владение выделением.
Результатом поиска выделения будут служить все символы, помеченные тегом
sel.
Если выделение запрашивается другим приложением или другим окном данного
приложения, то тег sel снимается со всех символов текста.
Тег sel определяется автоматически при создании текстового примитива;
его нельзя удалить командой примитива “имяПути tag delete“. Кроме
того параметры selectBackground, selectBorderWidth и
selectForeground текстового примитива связаны с параметрами
-background, -borderwidth и -foreground тега sel: изменение
одного из этих параметров примитива автоматически вызывает изменение
соответствующего параметра тега и наоборот.
КУРСОР ВВОДА
Метка с именем insert имеет в текстовых примитивах специальное
значение. Она определяется автоматически при создании примитива и ее нельзя
отменить командой примитива “имяПутиmark unset“. Метка
insert задает положение курсора ввода; курсор ввода отображается в этом
положении всякий раз, когда текстовый примитив попадает в фокус ввода.КОМАНДА ПРИМИТИВА
Команда text создает новую команду Tcl, имя которой совпадает с
именем текстового окна. С помощью этой команды можно выполнять различные
операции над примитивом. Ее общий вид
имяПути параметр арг арг ...
имяПути является именем команды; оно совпадает с именем пути
текстового примитива. Параметр и аргументы уточняют поведение команды. Текстовые
примитивы допускают следующие формы команды:имяПутиbbox
индекс
Возвращает список из четырех элементов, описывающий область экрана,
занимаемую символом с индексом индекс. Первые два элемента списка
представляют собой координаты x и y верхнего левого угла этой области; последние
два — это ее ширина и высота. Если символ виден на экране лишь частично, то
возвращаемые значения описывают видимую часть области. Если символ на экране не
виден, то возвращаемое значение является пустым
списком.имяПути cget параметр
Возвращает текущее значение параметра конфигурации с именем
параметр. Параметр может быть любым из параметров команды
text.имяПути compare индекс1 оп
индекс2
Сравнивает индексы, задаваемые параметрами индекс1 и индекс2,
в соответствии с оператором отношения, задаваемым параметром оп; команда
возвращает `1’, если указанное отношение выполняется, и ‘0’ в противном случае.
Параметр оп может принимать одно из значений `<’, `<=’, `=’, `>=’,
`>’ или `!=’. Если значением оператора является `=’, то команда возвращает
`1’, если оба индекса ссылаются на один и тот же символ; при операторе `<’
команда возвращает `1’, если индекс1 ссылается на символ, предшествующий
символу с индексом индекс2, и т.д.имяПути configure
параметр значение параметр значение ...
Запрашивает значения параметров конфигурации примитива или изменяет их.
Если параметр не указан, то возвращает список, содержащий значения всех
допустимых в имениПути параметров (формат списка описан в
Tk_ConfigureInfo). Если параметр задан, а его новое значение —
нет, то команда возвращает часть полного списка, относящуюся к указанному
параметру. Если заданы одна или несколько пар параметр-значение, то
указанным параметрам примитива присваиваются новые значения, а
команда возвращает пустую строку. Параметр может быть любым из параметров
команды text.имяПути debug ?булевское?
Если задан параметр булевское, то он может иметь значение истина или
ложь в виде, приемлемом для Tcl_GetBoolean. Если значение параметра
истина, то в B-дереве, связанном с текстовыми примитивами, будет выполняться
внутренняя проверка согласованности. В противном случае эта проверка будет
отключена. Независимо от полученного значения команда возвращает пустую строку.
Если параметр булевское не задан, то команда возвращает on или
off в зависимости от того, подключена или нет в момент выполнения команды
система отладки. Переключатель отладки один на все текстовые примитивы:
изменение его значения в одном примитиве приводит к изменению этого значения для
всех примитивов.Проверка согласованности для примитивов с длинными
текстами может привести к существенному замедлению работы.
имяПути deleteиндекс1 ? индекс 2?
Удаляет последовательность символов в тексте. Если заданы оба параметра
индекс1 и индекс2, то удаляются все символы, начиная с символа с
индексом индекс1, и кончая символом, непосредственно предшествующим
символу с индексом индекс2 (т.е. символ с индексом индекс2 не
удаляется). Если параметр индекс2 не задан, то удаляется только символ с
индексом индекс1. Невозможно такое удаление, при котором последний символ
оставшегося текста не будет символом перевода строки. Команда возвращает пустую
строку.имяПути dlineinfo индекс
Возвращает список из пяти элементов, описывающий область экрана, занимаемую
строчкой, содержащей символ с индексом индекс. Первые два элемента списка
представляют собой координаты x и y верхнего левого угла этой области; следующие
два — это ее ширина и высота; пятый элемент — это расстояние от верхней границы
области вниз до базы строчки. Все значения измеряются в пикселях. Если текущий
режим переноса строки имеет значение none и строка видна на экране лишь
частично, то возвращаемые значения описывают всю область строки, включая и ее
невидимые части. Если строчка короче полной ширины экрана, то возвращаемые
значения описывают только ту ее часть, которая занята символами и вставленными
окнами. Если строчка, содержащая символ с индексом индекс, на экране не
видна, то возвращаемое значение является пустым списком.имяПути
dump ?переключатели? индекс1 ?индекс2?
Возвращает содержимое текстового примитива от символа с индексом
индекс1 до символа с индексом индекс2 (не включая последний),
включая сам текст, а также информацию о метках, тегах и вставленных окнах. Если
параметр индекс2 не задан, то по умолчанию описывается символ с индексом
индекс1. Возвращаемая информация имеет следующий
формат:ключ1 значение1 индекс1 ключ 2 значение 2 индекс 2 ...
Ключи могут принимать значения text, mark, tagon, tagoff и
window. Соответствующими возвращаемыми значениями будут текст, имя метки,
имя тега или имя окна. Возвращаемыми значениями индекса будут индекс начала
текста, метки, тегового перехода или окна. Для управления результатом можно
использовать один или несколько из следующих переключателей (или их
аббревиатур):-all
Возвращается информация обо всех элементах — тексте, метках, тегах и окнах.
Это значение принято по умолчанию.-command команда
В этом случае вместо возвращения информации об элементах текстового
примитива на каждом из этих элементов в указанной области текста выполняется
команда. Аргументами команды служат ключ, значение и индекс
соответствующего элемента.-mark
Включить в результат информацию о метках.-tag
Включить в результат информацию о теговых переходах. Информация о тегах
возвращается в виде элементов tagon и tagoff, указывающих
соответственно начало и конец каждой области тега.-text
Включить в результат информацию о тексте. Значением служит текст до
следующего элемента или до конца области, указанного параметром индекс2.
Текстовый элемент не захватывает новых строк. Часть текста, содержащая несколько
строк и не включающая меток и теговых переходов, будет выводиться в виде набора
отрезков текста, каждый из которых кончается символом перевода строки. Эти
символы являются частью результата.-window
Включить в результат информацию о вставленных окнах. Значением является имя
Tk пути вставленного окна, за исключением случая, когда окно еще не создано.
(Окно должно содержать создающий скрипт.) В последнем случае результатом служит
пустая строка, а дополнительную информацию об окне можно получить, задав
значение его индекса.имяПути get индекс1 ? индекс
2?
Возвращает последовательность символов в тексте. В последовательность
включаются все символы текста, начиная с символа с индексом индекс1 и
кончая символом, непосредственно предшествующим символу с индексом индекс2
(символ с индексом индекс2 в эту последовательность не входит). Если
параметр индекс2 опущен, то команда возвращает единственный символ с
индексом индекс1. Если в указанном интервале нет символов (например, если
индекс1 указывает за конец файла или значение индекс2 меньше, чем
индекс1), то команда возвращает пустую строку. Если в указанном интервале
есть вставленные окна, то информация о них в возвращаемую строку не
входит.имяПути image параметр ?арг арг ...?
Команда предназначена для управления вставленными изображениями. Поведение
команды определяется значением аргумента параметр. В настоящее время
поддерживаются следующие формы команды:имяПути image cget
индекс параметр
Возвращает значение параметра конфигурации вставленного изображения.
Аргумент индекс указывает вставленное изображение, а параметр
задает имя требуемого параметра конфигурации; это имя должно быть элементом
списка, приведенного (см. “Вставленные
изображения”).имяПути image configureиндекс
?параметр значение ...?
Запрашивает значение параметров вставленного изображения или изменяет
эти значения. Если ни один аргумент параметр не задан, то возвращает список,
содержащий значения всех наличных параметров вставленного изображения с индексом
индекс (формат списка описан в Tk_ConfigureInfo). Если параметр задан, а его
значение нет, то команда возвращает часть списка, относящуюся к данному
параметру. Если задано несколько пар параметр-значение, то команда придает
указанным параметрам новые значения; в этом случае команда возвращает пустую
строку. Описание поддерживаемых параметров (см. “Вставленные
изображения”).имяПути image createиндекс
?параметр значение ...?
Команда создает новую ссылку на изображение, которое появляется в тексте в
положении, указанном аргументом индекс. Для установки параметров
конфигурации изображения можно указать произвольное число пар
параметр-значение. Команда возвращает уникальный идентификатор, который
можно использовать в качестве индекса при ссылке на данное изображение. Описания
поддерживаемых параметров и возвращаемого идентификатора см. “Вставленные
изображения”.имяПути image names
Возвращает список, элементами которого служат имена всех вхождений
изображений, вставленных в данное окно.имяПути
index индекс
Возвращает положение символа с индексом индекс; положение выдается в
виде строч.симв, где строч — это номер строчки, а симв — номер символа в этой
строчке. Аргумент индекс может иметь любую из форм, описанных выше (см. Индексы).имяПути
insert индекс символы ?списТегов символы списТегов...?
Вставляет значения всех аргументов символы непосредственно перед символом с
индексом индекс. Если индекс ссылается на конец текста (т.е. на
символ, следующий за последним символом перевода строки), то новый текст
вставляется непосредственно перед последним символом перевода строки. Если у
команды один аргумент символы, а аргументы списТегов отсутствуют, то ко
вновь введенному тексту будут приписаны все теги, присутствующие у обоих
символов слева и справа от нового текста; если тег приписан лишь к одному из
соседних символов, то на вновь введенный текст он не распространяется.
Аргументы списТегов представляют собой списки имен тегов; новым символам
будут приписаны только эти теги, независимо от состояния тегов по обе стороны от
точки ввода. Если в аргументах команды присутствует несколько пар
символы-списТегов, то результат ее выполнения совпадает с результатом
выполнения нескольких таких же команд примитива, по одной на каждую пару.
Последний аргумент списТегов может быть опущен.имяПути
mark параметр ?арг арг ...?
Эта команда предназначена для работы с метками. Поведение команды
определяется значением аргумента параметр. В настоящее время
поддерживаются следующие формы команды:имяПути mark
gravity имяМетки ?направление?
Если аргумент направление не задан, то команда возвращает значение
left или right, указывающее, притягивается ли метка к символу
слева или справа от нее. Если направление задано, то оно должно иметь
значение left или right, и притяжению метки с именем
имяМетки присваивается указанное значение.имяПути
mark names
Возвращает список, элементами которого являются имена всех уже
установленных меток.имяПути mark next индекс
Возвращает имя первой метки, идущей за символом с индексом индекс
(или притягивающейся к этому символу). Если аргумент индекс задан в
числовом виде, то поиск метки начинается с указанного символа. Если значением
аргумента индекс является имя метки, то поиск очередной метки начинается
непосредственно после заданной метки. При этом возвращаемым значением может
оказаться имя метки с тем же самым положением, если в этом положении находится
несколько меток. Смысл этого действия состоит в том, что команда mark
next позволяет последовательно перебрать все метки в текстовом примитиве в
том же порядке, в котором информация о метках выводится командой dump.
Если метка установлена в положении, указанном специальным индексом end,
то для операции mark next эта метка находится после индекса
end. Если после символа с индексом индекс меток нет, то команда
возвращает пустую строку.имяПути mark previous
индекс
Возвращает имя первой метки, идущей перед символом с индексом индекс
(или притягивающейся к этому символу). Если аргумент индекс задан в
числовом виде, то поиск метки начинается с символа, непосредственно
предшествующего указанному. Если значением аргумента индекс является имя
метки, то поиск очередной метки начинается непосредственно перед заданной
меткой. При этом возвращаемым значением может оказаться имя метки с тем же самым
положением, если в этом положении находится несколько меток. Смысл этого
действия состоит в том, что команда mark previous позволяет
последовательно перебрать все метки в текстовом примитиве в порядке, обратном
тому, в котором информация о метках выводится командой dump. Если перед
символом с индексом индекс меток нет, то команда возвращает пустую
строку.имяПути mark set имяМетки индекс
Устанавливает метку с именем имяМетки непосредственно перед символом
с индексом индекс. Если метка с именем имяМетки уже существует, то она
перемещается из своего старого положения в новое; если такой метки нет, то
создается новая метка. Команда возвращает пустую строку.имяПути
mark unset имяМетки ? имяМетки имяМетки...?
Удаляет все метки с именами имяМетки. Удаленные метки нельзя
использовать в качестве индексов; команда “имяПути mark names“ так
же не возвращает их в списке меток. Команда возвращает пустую строку.
имяПути scan параметр арг
Команда используется для сканирования текстов. Она может иметь один из двух
видов в зависимости от значения параметра:имяПути scan
mark x y
Записывает координаты x и y и текущий вид текстового окна для последующего
использования командами scan dragto. Обычно эта команда связана с
нажатием клавиши “Мыши” в примитиве. Возвращает пустую
строку.имяПути scan dragto x y
Команда вычисляет разность значений аргументов x и y и значений аргументов
x и y последней выполненной на примитиве команды scan mark. Затем команда
переносит сохраненный вид окна на расстояние, в 10 раз пресыщающее вычисленную
разность. Обычно эта команда связывается с событиями движения курсора “Мыши” в
примитиве и предназначена для перетаскивания текста по окну с высокой скоростью.
Возвращает пустую строку.имяПути search
?переключатели? образец индекс ?индексСтоп?
Ищет в примитиве с именем имяПути текст, подходящий под образец,
начиная с символа с индексом индекс. Если подходящая последовательность символов
найдена, то команда возвращает в качестве результата индекс первого символа в
этой последовательности; в противном случае возвращает пустую строку. Для
управления поиском можно задать один или несколько из описываемых ниже
переключателей (или их аббревиатур):
-forwards
Поиск осуществляется в направлении “вперед”, подходящая последовательность
символов ищется в положении, указанном аргументом индекс, и дальше по
тексту. Это значение принято по умолчанию.-backwards
Поиск осуществляется в направлении “назад”, подходящая последовательность
символов ищется перед положением, указанным аргументом индекс, и ближе
всего к нему.-exact
Требует точного соответствия образцу: символы в подходящей
последовательности должны в точности совпадать с символами образца. Это значение
принято по умолчанию.-regexp
Указывает на необходимость считать образец регулярным выражением и
устанавливать соответствие согласно правилам, принятым для регулярных выражений
(подробности см. в описании команды regexp).-nocase
Игнорировать различие регистров в образце и
тексте.-count имяПерем
Аргумент имяПерем представляет собой имя переменной; если подходящая
последовательность найдена, то в эту переменную заносится число символов в
ней.--
Единственная задача этого переключателя — завершение списка переключателей;
следующий за ним аргумент будет интерпретирован как образец, даже если он
и начинается с -.Вся подходящая последовательность
должна содержаться в одной строке текста. Перед сопоставлении с регулярным
выражением из текста удаляются все символы перевода строки. Для поиска
соответствия такому символу можно воспользоваться служебным символом “$” в
регулярных выражениях. Для точных соответствий переводы строк сохраняются. Если
задан аргумент индексСтоп, то поиск прекращается по достижении символа с
этим индексом: для поиска вперед не будут рассматриваться соответствия,
начинающиеся на символе с этим индексом или позднее, для поиска назад не
рассматриваются соответствия, начинающиеся раньше указанного индекса. Если
аргумент индексСтоп опущен, то поиск осуществляется по всему тексту: по
достижении одного из краев текста поиск продолжается, начиная с другого края, до
тех пор пока не будет снова достигнуто исходное положение. Если аргумент
индексСтоп задан, то перескакивания на противоположный край текста не
происходит.
имяПути see индекс
Сдвигает содержимое окна таким образом, чтобы символ с индексом
индекс был виден полностью. Если этот символ расположен недалеко от
видимой части текста, то сдвиг осуществляется настолько, чтобы он был виден у
края окна. Если же указанный символ располагается далеко, то в результате сдвига
он оказывается в центре окна.имяПути tag параметр
?арг арг ...?
Эта команда используется для работы с тегами. Ее поведение определяется
значением аргумента параметр. В настоящее время поддерживаются следующие
формы команды:имяПути tag addимяТега индекс1
?индекс2 индекс1 индекс2 ...?
Приписывает тег имяТега ко всем символам, начиная с индекса1
и кончая непосредственно перед символа с индексом индекс2 (к самому этому
символу данный тег не приписывается). В одной команде может присутствовать
произвольное число пар индекс1-индекс2. Если последний аргумент
индекс2 опущен, то тег приписывается к единственному символу с индексом
индекс1. Если в указанном промежутке нет символов (например,
индекс1 указывает за конец файла или индекс2 оказывается не больше
индекса1), то команда не совершает никаких
действий.имяПути tag bind имяТега ?послед?
?скрипт?
Эта команда приписывает скрипт к тегу с именем имяТега. При
наступлении последовательности событий, заданной аргументом послед, на
символе, к которому приписан тег с именем имяТега, выполняется указанный
скрипт. Эта команда примитива похожа на команду bind;
единственное ее отличие состоит в том, что она действует на символах, а не на
всем примитиве. Полное описание синтаксиса последовательности и подстановок,
производимых в скрипте перед его выполнением, см. в п. 1.3. Если указаны все
аргументы, то создается новая привязка, заменяющая все предыдущие привязки
данной последовательности к тегу имяТега (если первым символом аргумента
скрипт является “+”, то скрипт присоединяется к текущей привязке, а не замещает
ее). В этом случае команда возвращает пустую строку. Если аргумент скрипт
опущен, то команда возвращает скрипт, привязанный к тегу имяТега (при
отсутствии такого скрипта возникает ошибка). Если опущены и аргумент
скрипт, и аргумент послед, то команда возвращает список всех
последовательностей, привязки к которым определены для тега с именем
имяТега.Привязки можно определять только для событий,
связанных с “Мышью” и клавиатурой (например, Enter, Leave, ButtonPress,
Motion и KeyPress), или для виртуальных событий. Привязки событий для
текстового примитива используют текущую метку (см.Метки).
Событие Enter наступает для тега при первом появлении этого тега на
текущем символе, а событие Leave наступает, когда текущий символ
оказывается несвязанным с данным тегом. События Enter и Leave
могут наступить либо в результате перемещения текущей метки, либо как следствие
изменения символа в позиции текущей метки. Обратите внимание на то, что эти
события отличаются от событий Enter и Leave для окон. События,
связанные с “Мышью” и клавиатурой, направлены на текущий символ. Если в привязке
используется виртуальное событие, то оно может наступить только в случае если
для его определения был использован выход с подчеркиванием, связанный с “Мышью”
или клавиатурой.
К текущему символу может быть приписано много тегов, причем каждый из этих
тегов может иметь привязку для одной и той же последовательности событий. В
таком случае исполняется по одной привязке к каждому из тегов в порядке от
наименьшего приоритета к наибольшему. Если к одному тегу подходят несколько
образцов привязок, то выбирается самая конкретная из них (подробности приведены
в п. 1.3). Команды continue и break в скрипте привязки обрабатываются так же,
как и в случае привязок, созданных командой bind.
Если есть привязки и к примитиву в целом (созданные с помощью команды bind), то они
служат дополнением привязок к тегам. Сначала выполняются привязки к тегам, а
затем привязки ко всему примитиву.
имяПути tag cget имяТега параметр
Команда возвращает текущее значение параметра с именем параметр,
ассоциированного с тегом имяТега. Параметр может иметь любое значение,
воспринимаемое командой примитива tag configure.имяПути
tag configure имяТега ?параметр? ?значение?
?параметр значение ...?
Эта команда похожа на команду примитива configure; ее отличие
состоит в том, что она модифицирует параметры, связанные с тегом имяТега,
а не со всем текстовым примитивом. Если аргумент параметр не задан, то
команда возвращает список значений всех параметров тега имяТега (формат
списка описан в Tk_ConfigureInfo). Если параметр задан, а его
значение нет, то возвращается часть списка, относящаяся к указанному
параметру. Если заданы одна или несколько пар параметр-значение, то
команда присваивает указанным параметрам тега имяТега новые значения; в
этом случае она возвращает пустую строку. Подробно параметры тегов описаны выше
(см. Теги).имяПути
tag delete имяТега ? имяТега...?
Стирает всю информацию о тегах для каждого из аргументов имяТега.
Команда снимает теги с символов и удаляет всю остальную информацию о них —
например, привязки и характеристики вывода на экран. Возвращает пустую
строку.имяПути tag lower имяТега?нижеЭтого?
Изменяет приоритет тега с именем имяТега, устанавливая его
непосредственно перед тегом с именем нижеЭтого. Если аргумент
нижеЭтого опущен, то тег имяТега получается самый нижний приоритет
среди всех тегов.имяПути tag names?индекс?
Возвращает список имен всех тегов, активных в позиции, указанной аргументом
индекс. Если аргумент индекс опущен, то команда возвращает список
всех существующих тегов в тексте (это все теги, установленные командой примитива
“имяПути tag“ и не удаленные командой примитива “имяПути
tag delete“, в том числе и те из них, которые в текущий момент не
относятся ни к какому символу). Выводимый список отсортирован в порядке
приоритетов тегов (от тега с наименьшим приоритетом к тегу с
наибольшим).имяПути tag nextrange имяТега индекс1
?индекс2?
Команда ищет последовательность символов, помеченных тегом имяТега,
первый символ которой стоит после символа с индексом индекс1, а последний
символ предшествует символу с индексом индекс2. В случае, если таких
последовательностей несколько, выбирается первая из них. Команда возвращает
список из двух элементов, первый из которых — индекс первого символа
последовательности: а второй — индекс символа, непосредственно следующего за
последним символом последовательности. Если подходящей последовательности нет,
то команда возвращает пустую строку. Если аргумент индекс2 не задан, то
его значением по умолчанию считается конец текста.имяПути
tag prevrange имяТега индекс1 ?индекс2?
Команда ищет последовательность символов, помеченных тегом имяТега,
первый символ которой стоит перед символом с индексом индекс1, но не
раньше, чем символ с индексом индекс2 (символ с этим индексом
допускается). В случае, если таких последовательностей несколько, выбирается
ближайшая к символу с индексом индекс1. Команда возвращает список из двух
элементов, первый из которых — индекс первого символа последовательности: а
второй — индекс символа, непосредственно следующего за последним символом
последовательности. Если подходящей последовательности нет, то команда
возвращает пустую строку. Если аргумент индекс2 не задан, то его
значением по умолчанию считается начало текста.имяПути tag
raise имяТега?вышеЭтого?
Изменяет приоритет тега с именем имяТега, устанавливая его
непосредственно после тега с именем вышеЭтого. Если аргумент
вышеЭтого опущен, то тег имяТега получается самый большой
приоритет среди всех тегов.имяПути tag ranges
имяТега
Возвращает список всех участков текста, помеченных тегом с именем
имяТега. Первые два элемента списка описывают первый участок, следующие
два — второй и т.д. Первый элемент каждой пары представляет собой индекс первого
символа на соответствующем участке, второй элемент пары — индекс символа,
непосредственно следующего за последним символом участка. Если тегом
имяТега не помечен ни один символ, то команда возвращает пустую
строку.имяПути tag remove имяТега индекс1 ?индекс2
индекс1 индекс2 ...?
Снимает пометку тегом имяТега со всех символов в промежутках,
указанных индексами индекс1 и индекс2 (на символ с индексом
индекс2 команда не действует). Если в указанном промежутке нет символов
(например, если индекс1 указывает за конец текста или индекс2
оказывается не меньше индекса1), то команда не совершает никаких
действий. Возвращает пустую строку.имяПути window
параметр ?арг арг ...?
Команда используется для работы со вставленными окнами. Поведение команды
зависит от значения аргумента параметр. В настоящее время поддерживаются
следующие формы команды:имяПути window cget индекс
параметр
Возвращает значение параметра конфигурации вставленного окна. Окно задается
аргументом индекс, а аргумент параметр указывает имя конкретного
параметра конфигурации; это имя должно бвть одним из тех, которые описаны во
фрагменте “Вставленные
окна”.имяПути window configure индекс ?параметр
значение ...?
Запрашивает или модифицирует значения параметров конфигурации вставленного
окна. Если параметр не указан, то возвращает список, содержащий значения
всех допустимых параметров вставленного окна (формат списка описан в
Tk_ConfigureInfo). Если параметр задан, а его новое
значение — нет, то команда возвращает часть полного списка, относящуюся к
указанному параметру. Если заданы одна или несколько пар
параметр-значение, то указанным параметрам присваиваются новые
значения, а команда возвращает пустую строку. Список возможных параметров
приведен в фрагменте “Вставленные
окна”.имяПути window create индекс ?параметр
значение ...?
Команда создает ссылку на новое окно, положение которого в тексте
определяется аргументом индекс. Конфигурация окна задается произвольным
числом пар параметр-значение. Список возможных параметров см. в
“ВСТАВЛЕННЫЕ ОКНА”. Команда возвращает пустую строку.имяПути
window names
Возвращает список имен всех вставленных в настоящий момент в окно
окон.имяПути xview параметр арг
Команда используется для запроса горизонтального положения текста в окне
примитива и изменения этого положения. Она может принимать одну из следующих
форм:имяПути xview
Возвращает список из двух элементов, каждый из которых представляет собой
вещественное число в промежутке между ‘0’ и “1”. В совокупности эти два числа
описывают, какая часть документа по горизонтали видна в окне. Если, например,
значение первого числа равно “.2”, а второго “.6”, то слева от экрана не видно
20% текста, 40% видимы на экране и еще 40% не видимы справа от экрана. Числа
относятся только к строчкам, которые действительно попадают на экран. Если все
строчки в окне короткие и полностью умещаются на экране, то команда возвращает
значения ‘0’ и `1’, даже если в тексте фактически присутствуют строчки, длина
которых намного превышает ширину окна. Те же самые значения передаются полосам
прокрутки через параметр -xscrollcommand.имяПути
xview moveto число
Сдвигает содержимое окна таким образом, чтобы часть текста по горизонтали,
описываемая аргументом число, находилась слева от экрана. Число
должно быть вещественным числом в промежутке между ‘0’ и
`1'.имяПути xview scroll число что
Команда сдвигает содержимое окна влево или вправо в соответствии со
значениями аргументов число и что. Число должно быть целым.
Аргумент что может принимать значения units и pages, а также
их аббревиатуры. Если аргумент что имеет значение units, то сдвиг
происходит на числосимволов средней ширины; в случае значения
pages сдвиг выполняется на число страниц (размер страницы равен
размеру экрана). Если число отрицательно, то сдвиг происходит вправо, в
противном случае — влево.имяПути yview параметр арг
Команда используется для запроса вертикального положения текста в окне
примитива и изменения этого положения. Она может принимать одну из следующих
форм:имяПути yview
Возвращает список из двух элементов, каждый из которых представляет собой
вещественное число в промежутке между ‘0’ и `1’. Первый элемент списка указывает
положение в тексте первого символа верхней строчки на экране (например, значение
“0.5” означает, что этот символ находится в середине текста). Второй элемент
списка указывает положение символа, следующего непосредственно за последним
символом нижней строчки экрана. Те же самые значения передаются полосам
прокрутки через параметр -yscrollcommand.имяПути
yview moveto число
Сдвигает содержимое окна таким образом, чтобы символ, положение которого
задано аргументом число, оказался в верхней строчке экрана. Число
должно быть вещественным числом в промежутке между ‘0’ и `1’; значение ‘0’
указывает на первый символ в тексте, значение `0.33’ — на символ, отстоящий от
начала текста на `1/3’ и т.д.имяПути yview scroll
число что
Команда сдвигает содержимое окна вверх или вниз в соответствии со
значениями аргументов число и что. Число должно быть целым.
Аргумент что может принимать значения units и pages, а также
их аббревиатуры. Если аргумент что имеет значение units, то сдвиг
происходит на число строчек; в случае значения pages сдвиг
выполняется на число страниц (размер страницы равен размеру экрана). Если
число отрицательно, то сдвиг происходит вверх, в противном случае —
вниз.имяПути yview ?-pickplace? индекс
Сдвигает содержимое окна примитива таким образом, чтобы сделать видимым
символ с индексом индекс. Если аргумент -pickplace не задан, то
символ с указанным индексом появляется в верхней строчке экрана. Если же этот
аргумент задан, то примитив определяет место появления символа на экране по
следующему правилу:Если символ с индексом индекс уже виден на
экране, то ничего не изменяется.
Если этот символ находится лишь незначительно выше экрана, то он оказывается
в верхней строчке экрана.
Если этот символ находится лишь незначительно ниже экрана, то он оказывается
в нижней строчке экрана.
В остальных случаях указанный символ оказывается в центре экрана.
Параметр -pickplace устарел после введения команды примитива
see, которая управляет движениями как в горизонтальном, так и в
вертикальном направлении, в то время, как -pickplace влияет только на
движение по вертикали.
имяПути yview число
Команда сдвигает содержимое в окне таким образом, чтобы первый символ
строки с номером, следующим за номером число, оказался в верхней строчке
экрана. Аргумент число должен быть целым. Команда использовалась для
прокрутки, но теперь она устарела.ПРИВЯЗКИ
Tk автоматически создает привязки класса, которые определяют следующее
поведение текстовых примитивов по умолчанию. В приводимом ниже описании “слово”
— это непрерывная последовательность символов, состоящая из букв, цифр и
символов подчеркивания “_”, либо из любого другого одиночного символа.
Щелчок клавишей 1 “Мыши” устанавливает курсор ввода непосредственно перед
символом, на котором расположен курсор “Мыши”.
Движение “Мыши” с нажатой клавишей 1 растягивает выделение от курсора ввода
то символа под курсором “Мыши”.
Двойной щелчок по клавише 1 “Мыши” выделяет слово, на котором находится
курсор “Мыши”, и устанавливает курсор ввода на начало этого слова. Если тащить
“Мышь” после двойного щелчка, то выделение растягивается на полные слова.
Тройной щелчок по клавише 1 “Мыши” выделяет строку, на которой находится
курсор “Мыши”, и устанавливает курсор ввода на начало этой строки. Если тащить
“Мышь” после тройного щелчка, то выделение растягивается на полные строки.
Край выделения можно переместить, таща “Мышь” с нажатой клавишей 1 при
нажатой клавише Shift: при этом движется край выделения, ближайший к
курсору “Мыши” в момент нажатия клавиши 1. Если перед началом движения по
клавише “Мыши” был сделан двойной щелчок, то выделение будет растягиваться на
полные слова; если тройной щелчок — то на полные строки.
Щелчок по клавише 1 “Мыши” при нажатой клавише Control перемещает курсор
ввода, не изменяя выделения.
При нажатии на клавиши обычных символов эти символы вводятся на месте курсора
ввода.
Содержимое окна примитива можно сдвинуть с помощью движения “Мыши” при
нажатой клавише 2. Если щелкнуть по клавише 2 “Мыши”, не перемещая “Мышь”, то
выделение в тексте копируется в место курсора “Мыши”. Нажатие на клавишу Insert
также приводит к копированию выделения, но в место курсора ввода, а не курсора
“Мыши”.
При движении “Мыши” вне экрана с нажатой клавишей 1 содержимое примитива
автоматически прокручивается и на экране появляется дополнительная порция текста
(если вне экрана в направлении движения “Мыши” есть еще текст).
Нажатие на клавиши Left или Right приводит к сдвигу курсора
ввода на один символ влево или вправо соответственно; при этом всякое выделение
в тексте отменяется. Нажатие на клавиши Left или Right при нажатой
клавише Shift приводит к сдвигу курсора ввода и расширению выделения на
один символ.
Нажатие на клавиши Control-Left или Control-Right сдвигает
курсор ввода на целое слово, а нажатие на клавиши Control-Shift-Left или
Control-Shift-Right приводит к сдвигу курсора ввода и расширению
выделения на одно слово.
Нажатие на клавиши Control-b и Control-f приводит к такому же
результату, что и нажатие на Left и Right соответственно.
Комбинации клавиш Meta-b и Meta-f дают тот же эффект, что и
Control-Left и Control-Right соответственно.
Нажатие на клавиши Up и Down переводит курсор ввода на одну
строчку вверх или вниз, отменяя при этом любое выделение в тексте. Нажатие на
клавиши Up и Down при нажатой клавише Shift приводит к
сдвигу курсора ввода и растягиванию выделения до нового положения курсора.
Комбинации Control-Up и Control-Down сдвигают курсор ввода на один
абзац (группу строчек, отделенную от соседней группы пустой строчкой), а
комбинации Control-Shift-Up и Control-Shift-Down приводят к тому
же к растягиванию выделения до нового положения курсора ввода. Комбинации
Control-p и Control-n дают тот же результат, что и Up и
Down соответственно.
Клавиши Next и Prior сдвигают курсор ввода вперед или назад на
одну страницу; при этом выделения в тексте отменяются. Нажатие на клавиши
Next и Prior при нажатой клавише Shift приводит к сдвигу
курсора ввода и растягиванию выделения до нового положения курсора.
Control-v сдвигает видимую часть текста на одну страницу вперед, причем
курсор ввода не меняет своего положения и выделение также остается неизменным.
Комбинации Control-Next и Control-Prior сдвигают видимую часть
текста на одну страницу вправо или влево, причем курсор ввода не меняет своего
положения, и выделение также остается неизменным.
Нажатие на клавиши Home и Control-a помещает курсор ввода в
начало текущей строчки, причем все выделения в примитиве отменяются.
Shift-Home помещает курсор ввода в начало текущей строчки и растягивает
выделение до нового положения курсора. Нажатие на клавиши End и
Control-e помещает курсор ввода в конец текущей строчки, причем все
выделения в примитиве отменяются. Shift-End помещает курсор ввода в конец
текущей строчки и растягивает выделение до нового положения курсора.
Комбинации Control-Home и Meta-< устанавливают курсор ввода
в начало текста, причем все выделения в примитиве отменяются.
Control-Shift-Home устанавливает курсор ввода в начало текста и
растягивает выделение до нового положения курсора.
Комбинации Control-End и Meta-> устанавливают курсор ввода в
конец текста, причем все выделения в примитиве отменяются.
Control-Shift-End устанавливает курсор ввода в конец текста и растягивает
выделение до нового положения курсора.
Клавиша Select и комбинация Control-Space устанавливают опорную
точку выделения в текущее положение курсора ввода. Текущее выделение при этом не
изменяется. Комбинации Shift-Select и Control-Shift-Space
растягивают выделение до текущего положения курсора ввода; если в тексте не было
выделения, то выделяются символы между опорной точкой выделения и курсором
ввода.
Нажатие на клавиши Control-/ приводит к выделению всего содержимого
примитива.
Control-\ отменяет выделение в примитиве.
Клавиша F16 (на многих станциях Sun обозначенная Copy) или
Meta-w копируют выделение в примитиве (если оно есть) в буфер обмена.
Клавиша F20 (на многих станциях Sun обозначенная Cut) или
Control-w копируют выделение в примитиве в буфер обмена и удаляют
выделение. Если выделения нет, то нажатие на эти клавиши не приводит ни к каким
действиям.
Клавиша F18 (на многих станциях Sun обозначенная Paste) или
Control-y вставляет содержимое буфера обмена в положении курсора ввода.
Нажатие на клавишу Delete приводит к удалению выделения (если оно есть
в примитиве). Если выделения нет, то нажатие на эту клавишу приводит к удалению
символа справа от курсора ввода.
Backspace и Control-h удаляют выделение (если оно есть в
примитиве). Если выделения нет, то нажатие на эти клавиши приводит к удалению
символа слева от курсора ввода.
Control-d удаляет символ справа от курсора ввода.
Meta-d удаляет слово справа от курсора ввода.
Нажатие на клавиши Control-k приводит к удалению символов справа от
курсора ввода до конца строки. Если курсор ввода находится в конце строки, то
удаляется символ перевода строки.
Control-o открывает новую строку, вставляя символ перевода строки
перед курсором ввода; положение курсора ввода при этом не изменяется.
Meta-backspace и Meta-Delete удаляют слово слева от курсора
ввода.
Control-x удаляет выделение в текстовом примитиве.
Control-t меняет местами два символа справа от курсора ввода.
Если примитив сделан недоступным с помощью параметра -state, то текст
можно двигать по экрану и выделять, однако курсор ввода не будет отображаться в
примитиве и никакие модификации текста невозможны.
Определяя новые привязки к отдельным примитивам или переопределяя привязки
класса, поведение текстовых примитивов можно изменить.
ВОПРОСЫ ПРОИЗВОДИТЕЛЬНОСТИ
Текстовые примитивы должны обрабатываться эффективно при самых
разнообразных условиях. В них используется 2-3 байта основной памяти на каждый
символ текста, поэтому текст длиной 1 Мегабайт и более вполне может эффективно
обрабатываться на большинстве рабочих станций. Внутреннее представление текста
имеет вид модифицированного B-дерева, поэтому обработка даже длинных текстов
довольно эффективна. Реализация меток также позволяет использовать много меток.
В большинстве случаев удобно пользоваться большим числом уникальных тегов или
тегом, приписанным к большому числу различных частей текста.
Проблема эффективности может возникнуть при использовании сотен или тысяч
различных тегов со следующими характеристиками: первая часть текста, приписанная
к каждому тегу, начинается вблизи начала текста, а последняя кончается вблизи
его конца или имеется единственная такая часть, включающая в себя почти весь
текст. Цена добавления или удаления таких тегов пропорциональна числу тегов с
такими свойствами. Напротив, тысячи различных тегов обрабатываются эффективно,
если области их действия невелики и равномерно распределены по всему тексту.
Эффективность может понижаться при наличии очень длинных строк текста,
содержащих большое число меток и тегов.
При каждом мигании курсора ввода строчка экрана, на которой он находится,
перерисовывается целиком, что приводит к постоянному потоку графической
информации. Для устранения этого эффекта установите атрибут insertOffTime
в “0”.
tk
Управляет внутренним состоянием TkСИНТАКСИС
tk параметр ?арг арг
...?ОПИСАНИЕ
Команда tk обеспечивает доступ к различным элементам
внутреннего состояния Tk. Большая часть информации, с которой работает команда,
относится к приложению в целом или к экрану или дисплею, а не к конкретному
окну. Команда может принимать одну из нескольких форм в зависимости от значения
аргумента параметр. Допустимы следующие формы:
tk appname ?новИмя?
Если аргумент новИмя не задан, то команда возвращает имя приложения
(которое можно использовать в команде send для
взаимодействия с приложениями). Если аргумент новИмя задан, то имя
приложения заменяется на новИмя. Если приложение с заданным именем уже
существует, то для того, чтобы имя было уникальным, к нему добавляется суффикс
вида "#2" или "#3". Результатом выполнения команды является
фактически присвоенное имя; новИмя не должно начинаться с прописной
буквы. В противном случае может возникнуть коллизия с обработкой параметров, так
как имена, начинающиеся с прописной буквы, интерпретируются как имена классов; в
результате может случиться так, что Tk не найдет некоторые параметры приложения.
Если блокировать пересылку путем удаления команды send, то
эта команда отменит блокировку и воссоздаст команду send.tk
scaling ?-displayof окно? ?число?
Устанавливает коэффициент масштабирования, используемый Tk, при переводе
физических единиц (например, точки, дюймы или миллиметры) в пиксели, и
запрашивает текущее значение коэффициента. Аргумент число представляет
собой число с плавающей точкой, которое задает число пикселей в точке на экране.
Если аргумент окно опущен, то его значением по умолчанию является главное
окно. Если опущен аргумент число, то команда возвращает текущее значение
коэффициента масштабирования.“Точка” — это единица измерения, равная
1/72 дюйма. Коэффициент масштабирования 1.0 соответствует одному пикселу на
точку — стандартному 72 dpi (точек на дюйм) монитору. Коэффициент
масштабирования 1.25 соответствует 1.25 пикселю на точку, т.е. стандартному
значению для монитора 90 dpi; установка коэффициента 1.25 для 72 dpi монитора
увеличивает изображение всех элементов приложения в 1.25 раз по сравнению с
нормальным. Исходное значение коэффициента устанавливается при запуске
приложения на основании характеристик монитора, однако его можно изменить в
любой момент. Все измерения, выполняемые после установки коэффициента, будут
использовать его новое значение, однако будут ли существующие примитивы
динамически меняться, подстраиваясь под новое значение коэффициента, предсказать
нельзя.
tk_menuBar,
tk_bindForTraversal
Устаревшие команды для управления меню.СИНТАКСИС
tk_menuBar frame ?menu menu …?
tk_bindForTraversal arg arg …
ОПИСАНИЕ
Команды использовались в Tk версии 3.6, и более ранних, для управления
ниспадающими меню взаимодействия с ними при помощи клавиатуры. В настоящий
момент команды остаются только для обеспечения совместимости с ранними версиями,
и их не следует использовать в новых разработках.
tk_bisque, tk_setPalette
Модифицирует цветовую палитру Tk.СИНТАКСИС
tk_setPalette фон
tk_setPalette имя значение ? имя значение...?
tk_bisque
ОПИСАНИЕ
Процедура tk_setPalette изменяет цветовую схему Tk. Это
происходит за счет изменения цветов в существующих примитивах и внесения
изменений в базу данных параметров, в результате чего будущие примитивы будут
пользоваться новой цветовой схемой. При выполнении команды tk_setPalette
с единственным аргументом, этим аргументом является имя цвета, который
становится нормальным цветом фона; процедура tk_setPalette вычисляет всю
палитру цветов на основе этого цвета фона. Если же аргументы команды
tk_setPalette включают несколько пар имя-значение, то имя — это имя
параметра, а второй элемент пары представляет собой новое значение параметра. В
настоящее время поддерживаются следующие имена параметров в базе данных:
activeBackground |
foreground |
selectColor |
activeForeground |
highlightBackground |
selectBackground |
background |
highlightColor |
selectForeground |
disabledForeground |
insertBackground |
troughColor |
|
|
|
Процедура tk_setPalette пытается вычислить разумные значения по
умолчанию для любого незаданного параметра. Можно указать и параметры, отличные
от приведенных выше, и Tk изменит значения и этих параметров. Такая возможность
полезна при использовании специальных примитивов с дополнительными цветовыми
параметрами.
После того, как новое значение каждого из цветовых параметров вычислено,
tk_setPalette просматривает иерархию примитивов, чтобы изменить значения
параметров всех существующих примитивов. Для каждого примитива она проверяет,
определен ли для него какой-либо из заданных параметров. Если это так и если
текущее значение параметра совпадает со значением по умолчанию, то это значение
заменяется новым; если же текущее значение отлично от значения по умолчанию, то
tk_setPalette не изменяет его. Значением параметра по умолчанию является
то, которое порождено примитивом ([lindex [$w configure $option] 3]) или,
если процедура tk_setPalette выполнялась и раньше, то значение,
установленное ее предыдущим выполнением.
После модификации всех примитивов в приложении tk_setPalette добавляет
параметры в базу данных параметров, изменяя значения по умолчанию для будущих
примитивов. Новые параметры добавляются с приоритетом widgetDefault, поэтому они
будут подавлены параметрами из файла .Xdefaults или параметрами,
заданными в командной строке, создающей примитив.
Процедура tk_bisque обеспечивает совместимость с предыдущими версиями:
она задает схему "bisque" на основе светло-коричневого (бисквитного) цвета,
которая использовалась в Tk 3.6 и более ранних версиях.
tk_chooseColor
Открывает диалоговое окно для выбора цвета
пользователем.СИНТАКСИС
tk_chooseColor
?параметрзначение...?ОПИСАНИЕ
Процедура tk_chooseColor открывает диалоговое окно для выбора
цвета пользователем. В строке аргументов допустимы следующие пары
параметр-значение:
-initialcolor цвет
Задает начальный цвет, выводимый в окне диалога при его открытии. Параметр
цвет может иметь любое значение, приемлемое для функции
Tk_GetColor.-parent окно
Делает окно логическим родителем окна диалога. Окно диалога
выводится поверх своего родительского окна.-title
строкаЗаголовка
Задает строку, которую нужно вывести в качестве заголовка окна диалога.
Если этот параметр не задан, то будет выведен заголовок по
умолчанию.При выборе пользователем цвета tk_chooseColor
возвращает имя цвета в виде, приемлемом для Tk_GetColor. Если
пользователь прерывает операцию, то обе команды возвращают пустую строку.
ПРИМЕР
button .b -fg [tk_chooseColor -initialcolor gray -title "Choose
color"]
tk_dialog
Создает окно модального диалога и ожидает ответа.СИНТАКСИС
tk_dialog окно заголовок текст двуцвет умолч строка строка
...ОПИСАНИЕ
Эта процедура является частью библиотеки скриптов Tk. Ее аргументы
описывают диалоговое окно:
окно
Имя окна верхнего уровня, которое следует использовать для диалога. Любое
существующее под этим именем окно уничтожается.заголовок
Текст, предназначенный для вывода в строке заголовка менеджера
окон.текст
Сообщение, которое должно появиться в верхней части диалогового
окна.двуцвет
Если значение этого параметра непусто, то оно задает двуцветное изображение
для вывода в верхней части диалогового окна слева от текста. Если значением
является пустая строка, то никакого двуцветного изображения не
выводится.умолч
Если значение этого параметра является неотрицательным целым числом, то оно
представляет собой номер кнопки, которая должна быть кнопкой по умолчанию (‘0’
для самой левой кнопки и т.д.) Если значение параметра отрицательно или
представляет собой пустую строку, то кнопки по умолчанию не
будет.строка
Каждому из аргументов строка ставится в соответствие одна кнопка.
Каждая строка задает текст, который должен быть выведен в соответствующей кнопке
слева направо.После создания диалогового окна процедура
tk_dialog ожидает, пока пользователь выберет одну из кнопок либо щелкнув
по ней “Мышью”, либо нажав на клавишу Return, чтобы выбрать значение по
умолчанию (если такое есть). Затем процедура возвращает номер выбранной кнопки:
`0’ для самой левой кнопки, `1’ для соседней с ней и т.д. Если окно диалога
уничтожено до того, как пользователь выбрал одну из кнопок, то процедура
возвращает `-1’.
В ожидании ответа пользователя tk_dialog производит локальный захват.
В результате пользователь может взаимодействовать только с окном диалога.
tk_focusFollowsMouse, tk_focusNext,
tk_focusPrev
Утилиты служат для управления фокусом ввода.СИНТАКСИС
tk_focusNext window
tk_focusPrev window
tk_focusFollowsMouse
ОПИСАНИЕ
Процедура tk_focusNext возвращает имя следующего после
window окна в очередности фокусов, который определяется очередью стека
окон и структурой иерархии окон.
Процедура tk_focusPrev противоположна по действию процедуре
tk_focusNext: она возвращает имя предыдущего окна.
Утилита tk_focusFollowsMouse переводит фокус в то окно, над которым в
данный момент находится курсор “Мыши”.
tk_getOpenFile,
tk_getSaveFile
Открывает окно диалога, в котором пользователь должен выбрать файл для
того, чтобы открыть или сохранить его.СИНТАКСИС
tk_getOpenFile ?параметрзначение...?
tk_getSaveFile ? параметрзначение...?
ОПИСАНИЕ
Процедуры tk_getOpenFile и tk_getSaveFile открывают окно
диалога, в котором пользователь должен выбрать файл для того, чтобы открыть или
сохранить его. Команда tk_getOpenFile обычно выполняется при вызове
команды Open из меню File. Она позволяет лишь выбрать один из существующих
файлов. Если пользователь вводит имя несуществующего файла, то окно диалога
информирует его об ошибке и предлагает сделать другой выбор. Если приложение
позволяет пользователю создавать файлы, то для этой цели должна быть
предназначена специальная команда меню New.
Команда tk_getSaveFile обычно связана с командой Saveas меню File. При
входе пользователя в уже существующий файл окно диалога предлагает пользователю
подтвердить, что старый файл следует затереть.
В качестве пар аргумент-значение в командной строке этих двух команд
допускаются следующие варианты:
-defaultextension расширение
Задает строку, которая автоматически приписывается к имени файла в случае,
если имя, введенное пользователем, не имеет расширения. По умолчанию значение
этого параметра — пустая строка, т.е. имя файла не будет получать расширения ни
в каком случае. На платформе Макинтош, где имена файлов не требуют расширения,
этот параметр игнорируется.-filetypes
списокТиповФайлов
Если в файловом диалоге на конкретной плаформе имеется окно списка типов
файлов, то этот параметр задает содержимое списка. При выборе типа файла в
списке выводятся только файлы этого типа. Если параметр не задан или его
значение — пустая строка, а также если на данной платформе не поддерживается
окно списка типов файлов, то выводятся имена всех файлов, несмотря на их типы.
Содержимое списка обсуждается ниже (см. “ОПИСАНИЕ ОБРАЗЦОВ ТИПОВ
ФАЙЛОВ”).-initialdir каталог
Указывает, файлы какого каталога должны выводиться при появлении окна
диалога. Если этот параметр не задан, то выводится список имен файлов в текущем
каталоге процесса. На платформе Макинтош параметр каталог срабатывает не
всегда. Это не результат ошибки. Этот эффект является следствием того, что
панель управления General Controls на Макинтоше позволяет конечному пользователю
подавить значение каталога приложения по умолчанию.-initialfile
имяфайла
Задает имя файла, которое должно выводиться в окне диалога при его
появлении. Команда tk_getOpenFile игнорирует этот
параметр.-parent окно
Делает окно логическим родителем файлового диалога. Окно файлового
диалога выводится поверх родительского окна.-title
строкаЗаголовка
Задает строку, которая выводится в качестве заголовка в окне диалога. Если
параметр не задан, то в окне выводится заголовок по умолчанию. На платформе
Макинтош параметр игнорируется.После того, как пользователь выбрал
файл, обе команды tk_getOpenFile и tk_getSaveFile возвращают
полное имя пути к этому файлу. Если пользователь прерывает выполнение операции,
то обе команды возвращают пустую строку.ОПИСАНИЕ ОБРАЗЦОВ ТИПОВ ФАЙЛОВ
Значение списокТиповФайлов параметра -filetypes
представляет собой список образцов типов файлов. Каждый из образцов — это список
вида
имяТипа {расширение ? расширение...?} ?{макТип
? макТип...?}?
имяТипа — это имя типа файлов; его значение это текстовая строка,
которая попадает в список типов файлов. расширение — это одно из расширений для
файлов данного типа. макТип — это четырехсимвольный тип файлов на
платформе Макинтош. Список макТипов необязателен, и для приложений,
которые не планируется использовать на платформе Макинтош, его можно опустить.
Одно и то же имяТипа может встречаться в нескольких образцах; в этом
случае все они описывают файлы одного типа и им соответствует одна строка в
списке типов. При выборе такой строки в списке выводится список всех файлов,
имена которых подходят хотя бы под один образец. Обычно каждому типу файлов
соответствует в точности один образец. Использование нескольких образцов
необходимо лишь для платформы Макинтош.
На платформе Макинтош файл подходит под образец, если расширение его имени
совпадает по крайней мере с одним из расширений И оно имеется по крайней мере в
одном из значений параметра макТип в образце. Например, под образец
исходных файлов на языке C подходят файлы с расширением .c И и с
макТипом TEXT. Для того, чтобы заменить конъюнкцию И дизъюнкцией ИЛИ,
нужно вместо одной строки образца завести две строки, в одной из которых есть
только расширения, а в другой — только макТипы. Под образец файлового
типа GIF подходят файлы с расширением .gif ИЛИ имеющие
макТип GIFF.
На платформах Unix и Windows файл подходит под образец файлового типа, если
расширение его имени соответствует одному из расширений в образце.
макТипы игнорируются.
ЗАДАНИЕ
РАСШИРЕНИЙ
На платформах Unix и Macintosh соответствие образцам устанавливается
обычным образом. На платформах Windows соответствие образцам устанавливается
операционной системой. Возможными расширениями могут быть:
- специальное расширение *, под которое подходит любой файл;
- специальное расширение "", под которое подходит любой файл без расширения
(т.е. файл, имя которого не содержит точки);
- произвольная строка символов, среди которых нет символов маски (* и ?).
Ввиду того, что на различных платформах используются различные правила
соответствия, появление символов маски в расширениях не допускается, за
исключением специального расширения ‘*’. Расширения, в которых нет точки
(например, ‘~’), допустимы, но они могут работать не на всех платформах.
ПРИМЕР
set types {
{{Text Files} {.txt} }
{{TCL Scripts} {.tcl} }
{{C Source Files} {.c} TEXT}
{{GIF Files} {.gif} }
{{GIF Files} {} GIFF}
{{All Files} * }}
set filename [tk_getOpenFile -filetypes $types]
if {$filename
!= ""} {
# Открыть файл ...}
tk_messageBox
Выводит окно сообщения и ждет ответа пользователя.СИНТАКСИС
tk_messageBox ?параметрзначение...?ОПИСАНИЕ
Эта процедура создает и выводит на экран окно сообщения, в котором
находится определяемое приложением сообщение, пиктограмма и набор кнопок. Каждая
из кнопок в окне сообщения отождествляется с уникальным символическим именем
(см. параметры -type). После появления окна сообщения команда
tk_messageBox ожидает, пока пользователь не выберет одну из кнопок. После
того, как выбор сделан, команда возвращает символическое имя выбранной кнопки.
Команда поддерживает следующие пары параметр-значение:
-default имя
Параметр имя задает символическое имя кнопки по умолчанию для окна
сообщения ('ok', 'cancel' и т.п.). Список возможных символических имен см. в
описании параметра -type. Если в окне сообщения лишь одна кнопка, то она
автоматически делается кнопкой по умолчанию; если же кнопок несколько, а
параметр -default не задан, то кнопки по умолчанию не
будет.-icon изобрПикт
Задает выводимую пиктограмму. Параметр изобрПикт может иметь одно из
следующих значений: error, info, question или warning. Если
параметр не указан, то пиктограмма не выводится.-message
строка
Задает сообщение, выводимое в окне сообщений.
-parent окно
Делает окно логическим родителем окна сообщений. Окно сообщения
выводится поверх своего родительского окна.-title
строкаЗаголовка
Задает текстовую строку, которая выводится в качестве заголовка в окне
сообщения. Значением параметра по умолчанию является пустая
строка.-type предопределенныйТип
Устанавливает предопределенный набор кнопок в окне. Параметр
предопределенныйТип может иметь следующие значения:
abortretryignore
Выводит три кнопки с символическими именами abort, retry и
ignore.ok
Выводит одну кнопку с символическим именем ok.
okcancel
Выводит две кнопки с символическими именами ok и
cancel.retrycancel
Выводит две кнопки с символическими именами retry и
cancel.yesno
Выводит две кнопки с символическими именами yes и
no.yesnocancel
Выводит три кнопки с символическими именами yes, no и
cancel.ПРИМЕР
set answer [tk_messageBox -message "Really quit?" -type yesno -icon
question]
case $answer {
yes exit
no {tk_messageBox -message "I know you like this
application!" -type ok}
}
tk_optionMenu
Процедура создает меню-кнопку с защелкиванием (option menubutton) и ее
меню.СИНТАКСИС
tk_optionMenu w varName value ?value value
…?ОПИСАНИЕ
Команда создает меню-кнопку с защелкиванием по имени w и связанное с ней
меню. Такое меню позволяет пользователю выбрать одно из значений, заданных
аргументами value. Текущее выбранное значение присваивается глобальной
переменной varName, а также отображается на кнопке в виде ярлыка.
Для выбора нового значения следует щелкнуть “Мышью” на кнопке и в открывшемся
меню выбрать значение. Также текущее значение можно изменить, присвоив
переменной varName новое значение.
tk_popup
Процедура открывает всплывающее меню.СИНТАКСИС
tk_popup menu x y ?entry?ОПИСАНИЕ
Процедура выводит на дисплей всплывающее меню при помощи примитива меню
menu в позиции, заданной аргументами x и y. Необязательный
аргумент entry указывает индекс некоторой команды (входа) меню
menu, к которой будет относиться выводимое меню.
tkerror
Команда обрабатывает фоновые ошибки.СИНТАКСИС
tkerror messageОПИСАНИЕ
Данная команда обрабатывает фоновые ошибки и предназначена для обеспечения
совместимости с ранними версиями Tk. В настоящей версии Tk ее функции исполняет
команда bgerror.
Поддержка команды tkerror может быть вскоре прекращена, поэтому
рекомендуется в приложениях заменять эту команду на bgerror.
tkvars
Переменные, используемые или задаваемые Tk.ОПИСАНИЕ
Нижеследующие переменные используются Tk в разные моменты работы, или
задаются им.
tk_library — переменная содержит путь к каталогу с библиотекой
скриптов Tcl, относящихся к Tk.
tk_patchLevel — переменная содержит десятичное число, соответствующее
номеру версии поправок к Tk.
TkPriv — эта переменная есть массив значений внутренних данных Tk,
используемых библиотечными процедурами Tk и привязками (bindings) по умолчанию.
Внешние по отношению к Tk программы эти данные не используют.
tk_strictMotif — это флаг. Если приложение устанавливает его, то Tk
будет стремиться наиболее полно поддерживать стиль графического интерфейса
Motif.
tk_version — переменная содержит номер версии библиотеки Tk.
tkwait
Команда организует паузу до момента
изменения значения переменной или закрытия окна.СИНТАКСИС
tkwait variable name
tkwait visibility name
tkwait window name
ОПИСАНИЕ
Команда ожидает наступления одного из нескольких событий, после этого она
завершает работу без выполнения каких-либо действий. Если первый аргумент
команды есть variable, то name есть имя глобальной переменно, и
команда ожидает изменения значения этой переменной. Если первый аргумент команды
есть visibility, то name есть имя окна, и команда ожидает
изменения его состояния внешних параметров (visibility). Если первый аргумент
команды есть window, то name есть имя окна, и команда ожидает
закрытия этого окна.
toplevel
Создание примитива верхнего уровня и управление им.
Синтаксис
Стандартные
параметры
Дополнительные
параметры примитива
Описание
Команда
примитива
ПривязкиСИНТАКСИС
toplevel имяПути параметрыСТАНДАРТНЫЕ ПАРАМЕТРЫ
-background |
-highlightbackground |
-highlightthickness |
takefocus |
-cursor |
-highlightcolor |
-relief |
|
|
Подробное описание этих параметров приведено в разделе optionsДОПОЛНИТЕЛЬНЫЕ
ПАРАМЕТРЫ ПРИМИТИВА
Имя параметра: -background
Имя в Базе: background
Класс в Базе: BackgroundЭтот параметр по смыслу совпадает со
стандартным параметром background за исключением того, что его значением
может являться и пустая строка. В последнем случае при выводе примитива не
появляется ни фона, ни бордюра, и для них не используется ни одна из красок его
палитры.
Имя параметра: -class
Имя в Базе: class
Класс в Базе:
ClassЗадает класс окна. Этот класс используется при запросах базы
данных параметров о значениях других параметров примитива; а также при
определении привязок. Параметр -class нельзя переопределить командой
примитива configure.
Имя параметра: -colormap
Имя в Базе: colormap
Класс в
Базе: ColormapЗадает палитру, используемую в окне. Значением
параметра может быть либо new (и в этом случае для данного окна и его
потомков создается новая палитра), либо имя другого окна (которое должно
находиться на том же экране и иметь то же значение параметра -visual, что
и имяПути). Если параметр -colormap не задан, то новое окно
использует палитру экрана по умолчанию. Параметр -colormap нельзя
переопределить командой примитива configure.
Имя параметра: -container
Имя в Базе: container
Класс
в Базе: ContainerЗначение параметра должно быть булевским. Если его
значение истина, то окно будет использоваться в качестве контейнера, в который
будет вставляться некоторое другое приложение (например, можно вставить примитив
верхнего уровня Tk с помощью параметра -use). Окно будет поддерживать
соответствующие протоколы управления окнами, например, для обработки
геометрических запросов. Параметр -container нельзя переопределить
командой примитива configure.
Имя параметра: -height
Имя в Базе: height
Класс в
Базе: HeightЗадает желаемую высоту окна в любом виде, приемлемом
для Tk_GetPixels. Если введенное значение неположительно, то место для
окна вообще не запрашивается.
Имя параметра: -menu
Имя в Базе: menu
Класс в Базе:
MenuЗадает примитив меню, используемый в качестве полосы меню. На
Macintosh полоса меню будет выведена вверху основного монитора. В Microsoft
Windows и на всех платформах UNIX меню выводится поверх окна верхнего уровня как
деталь оформления окна менеджером окон.
Имя параметра: -screen
Имя в Базе:
Класс в Базе:Задает
экран, на котором следует разместить новое окно. Может быть использовано
произвольное допустимое имя экрана, в том числе и отличное от текущего. По
умолчанию значением является имя текущего экрана. Параметр -screen
является специальным и его нельзя переопределить командой примитива
configure.
Имя параметра: -use
Имя в Базе: use
Класс в Базе:
UseИспользуется для вставки. Если значение параметра отлично от
пустой строки, то оно должно быть идентификатором окна-контейнера, заданным в
виде шестнадцатеричной строки, — в том виде, в котором возвращает результат
команда window id. Примитив верхнего уровня будет создаваться как
непосредственный потомок указанного контейнера, а не корневого окна экрана. Если
окно-контейнер содержится в приложении Tk, то оно должно быть либо рамкой, либо
примитивом верхнего уровня, для которого задан параметр -container.
Параметр -use нельзя переопределить командой примитива configure.
Имя параметра: -visual
Имя в Базе: visual
Класс в
Базе: VisualЗадает внешний вид окна в любом виде, приемлемом для
Tk_GetVisual. Если параметр не задан, то используется его значение по
умолчанию для экрана. Параметр -visual нельзя переопределить командой
примитива configure.
Имя параметра: -width
Имя в Базе: width
Класс в Базе:
WidthЗадает желаемую ширину окна в любом виде, приемлемом для
Tk_GetPixels. Если введенное значение неположительно, то место для окна
вообще не запрашивается.ОПИСАНИЕ
Команда toplevel создает новый примитив верхнего уровня (задаваемый
аргументом имяПути). Детали изображения примитива верхнего уровня, такие
как цвет его фона и объемный вид, задаются с помощью описанных выше
дополнительных параметров. Команда toplevel возвращает аргумент
имяПути.
Примитив верхнего уровня похож на рамку; отличие состоит в том, что он
создается как окно верхнего уровня: его непосредственным X предком является
корневое окна экрана, а не логический предок, определяемый именем пути. Основная
задача примитива верхнего уровня — служить контейнером для диалоговых окон и
других наборов примитивов. Единственными параметрами вывода примитива верхнего
уровня являются цвет его фона и необязательный трехмерный бордюр, который
позволяет примитиву выглядеть выпуклым или вдавленным.
КОМАНДА ПРИМИТИВА
Команда toplevel создает новую команду Tcl, имя которой совпадает с
именем окна примитива верхнего уровня. С помощью этой команды можно выполнять
различные операции над примитивом. Ее общий вид
имяПути параметр арг арг ...
имяПути является именем команды, которое совпадает с именем пути
примитива верхнего уровня. Параметр и аргументы уточняют поведение
команды.Примитивы верхнего уровня допускают следующие команды:
имяПути cget параметр
Возвращает текущее значение параметра конфигурации с именем
параметр. Параметр может быть любым из параметров команды
toplevel.имяПути configure параметр значение
параметр значение ...
Запрашивает значения параметров конфигурации примитива или изменяет их.
Если параметр не указан, то возвращает список, содержащий значения всех
допустимых в имениПути параметров (формат списка описан
вTk_ConfigureInfo). Если параметр задан, а его новое
значение — нет, то команда возвращает часть полного списка, относящуюся к
указанному параметру. Если заданы одна или несколько пар
параметр-значение, то указанным параметрам примитива присваиваются
новые значения. В этом случае команда возвращает пустую строку.
Параметр может быть любым из параметров команды
toplevel.ПРИВЯЗКИ
При создании примитива верхнего уровня никаких привязок не создается: эти
примитивы не предполагаются интерактивными.
winfo
winfo -возвращает информацию об окне.СИНТАКСИС
winfo option ?arg arg ...?ОПИСАНИЕ
Команда winfo позволяет получать информацию об окнах, созданных с
помощью Tk. Команда имеет несколько допустимых форм в зависимости от указанных
опций. Ниже перечислены допустимые формы команды:
winfo atom ? -displayof window? name
Команда возвращает десятичную строку — числовой идентификатор атома
(напрмер, виджета). Если атома name не существует, он создается. А после
создания соответствующего виджета он получает этот идентификатор атома. Если
указана опция -displayof window, атом ищется на том же
дисплее, на котором находится указанное окно. В противном случае атом ищется на
дисплее, на котором размещено главное окно приложения.winfo
atomname ?-displayofwindow?id
Возвращает текстовое имя атома с идентификатором id. Если
указана опция -displayofwindow, атом ищется на том
же дисплее, на котором находится указанное окно. В противном случае атом ищется
на дисплее, на котором размещено главное окно приложения. Команда является
обратной к команде winfo atom. Команда возвращает код ошибки, если атом
не существует.winfo cells window
Команда возвращает десятичную строку — число возможных цветов в палитре для
window.winfo children window
Возвращает список полных имен всех потомков окна window.
Потомки перечисляются в порядке стека, начиная с нижних. Toplevel-окна также
считаются потомками своих логических предков.winfo class
window
Возвращает класс окна window.winfo
colormapfull window
Возвращает `1’, если известно, что палитра (colormap) окна
заполнена, и ‘0’ в противном случае. Палитра считается заполненной, если
последняя попытка разместить в ней еще один цвет окончилась неуспешно, а
приложение не освободило с того момента не одного цвета в
палитре.winfo containing ?-displayof
window? rootX rootY
Возвращает имя окна, содержащего точку с координатами rootX и
rootY. Координаты задаются в экранных единицах (в любой форме,
поддерживаемой Tk) в системе координат корневого окна (если используется
менеджер виртуального корневого окна, координаты задаются в его системе
координат). Если указана опция -displayofwindow, окно
ищется на дисплее, содержащем window. В противном случае
координаты считаются указанными для дисплея, на котором размещено главное окно
приложения. Если данная точка не содержится ни в каком окне приложения,
возвращается пустая строка. Если точка содержится в нескольких виджетах
(например, в кнопке, лежащей в рамке), преимущество имеют логические потомки. Из
окон “одного поколения“ выбирается окно, лежащее выше других в
стеке.winfo depth window
Возвращает “глубину цвета“ — число бит на пиксель изображения — для окна
window.winfo exists window
Возвращает `1’, если существует окно window, и ‘0’ в противоположном
случае.winfo fpixels window number
Возвращает число пикселей (дробное, с плавающей точкой), соответствующее на
экране расстоянию number. Расстояние может быть указано в любой форме,
поддерживаемой Tk, например, 2.0c или 1i. Чтобы получить целое
число пикселей, можно использовать команду winfo
pixels.winfo geometry window
Возвращает размеры и положение окна в форме ширинаxвысота+x+y. Все
размеры приводятся в пикселях.winfo height window
Возвращает десятичную строку, содержащую высоту окна в пикселях. Когда окно
только что создано, его размер 1 пиксель. Через некоторое время оно принимает
правильные размеры. Однако, если вы хотите получить правильные размеры окна
сразу после его создания, используйте перед этим команду update,
которая приведет к прорисовке окна и формированию его правильных размеров, либо
команду winfo reqheight, которая возвращает требуемые, а не реальные
размеры окна.winfo idwindow
Возвращает шестнадцатеричную строку — зависящий от платформы идентификатор
низкого уровня для окна. На Unix-платформах это X-window идентификатор. Под
Windows это Windows HWND. На Macintosh этот идентификатор не имеет смысла вне
Tk.winfo interps ?-displayof window?
Возвращает список всех Tcl-интерпретаторов (например, Tk-приложений),
зарегистрированных в текущий момент на определенном дисплее. Если задана опция
?-displayof window?, имеется в виду дисплей, на
котором находится окно window. В противном случае — дисплей, на котором
находится главное окно приложения.winfo ismapped
window
Возвращает `1’, если окно в данный момент размещено на экране, и ‘0’ в
противном случае.winfo manager window
Возвращает имя геометрического менеджера, с помощью которого размещено
окно, или пустую строку, если окно не размещено. Для виджетов возвращается как
правило имя Tcl-команды для соответствующего менеджера, например, pack или
place.
Для toplevel-окон возвращается wm, для встроенных окон — имя команды
для соответствующего класса виджетов, например, canvas.winfo
name window
Возвращает имя окна, то есть имя относительно родителя в отличие от полного
имени. Команда winfo nameвозвращает имя приложения.winfo
parent window
Возвращает имя логического родителя окна или пустую строку для главного
окна приложения.winfo pathname ?-displayof
window? id
Возвращает полное имя окна с X-идентификатором id. Идентификатор
может быть десятичным, шестнадцатеричным или восьмеричным числом и должен
принадлежать одному из окон приложения. Если указана опция
-displayofwindow, окноищется на том же дисплее, на котором
находится указанное окно. В противном случае окно ищется на дисплее, на котором
размещено главное окно приложения.winfo pixels window
number
Возвращает число пикселей, соответствующее на экране расстоянию
number. Расстояние может быть указано в любой форме, поддерживаемой Tk,
например, 2.0c или 1i. Результат округляется до ближайшего целого.
Чтобы получить дробное число пикселей, можно использовать команду winfo
fpixels.winfo pointerx window
Если указатель “Мыши” находится на том же экране, что и окно, возвращает x-
координату пойнтера в пикселях в системе координат корневого окна. Если на
экране есть виртуальное корневое окно, возвращаются координаты в его системе
координат. Если пойнтера “Мыши” на данном экране нет, возвращается
`-1’.winfo pointerxy window
Если указатель “Мыши” находится на том же экране, что и окно, возвращает
список, содержащий x- и y-координаты пойнтера в пикселях в системе координат
корневого окна. Если на экране есть виртуальное корневое окно, возвращаются
координаты в его системе координат. Если пойнтера “Мыши” на данном экране нет,
возвращается ‘-1’.winfo pointery window
Если указатель “Мыши” находится на том же экране, что и окно, возвращает
y-координату пойнтера в пикселях в системе координат корневого окна. Если на
экране есть виртуальное корневое окно, возвращаются координаты в его системе
координат. Если пойнтера “Мыши” на данном экране нет, возвращается
`-1’.winfo reqheight window
Возвращает десятичную строку, содержащую необходимую высоту окна. Это та
величина, которая используется менеджером окна при расчете его
размеров.winfo reqwidth window
Возвращает десятичную строку, содержащую необходимую ширину окна. Это та
величина, которая используется менеджером окна при расчете его
размеров.winfo rgb window color
Возвращает список из трех десятичных величин, указывающих интенсивность
красного, зеленого и синего цвета для цвета color в окне window.
Цвет может быть задан в любой форме, в которой он может задаваться в
соответствующих опциях.winfo rootx window
Возвращает десятичную строку, содержащую x-координату левого верхнего угла
рамки окна (или самого окна, если оно не имеет рамки) в системе координат
корневого окна.winfo rooty window
Возвращает десятичную строку, содержащую y-координату левого верхнего угла
рамки окна (или самого окна, если оно не имеет рамки) в системе координат
корневого окна.winfo screen window
Возвращает имя экрана, на котором отображается окно, в форме
ИмяДисплея.ИндексЭкрана.winfo screencells
window
Возвращает число цветов в палитре по умолчанию для экрана, содержащего
данное окно.winfo screendepth window
Возвращает “глубину цвета“ — число бит на пиксель изображения — для экрана,
содержащего окно window.winfo screenheight
window
Возвращает десятичную строку, содержащую высоту экрана, содержащего окно
window, в пикселях.winfo screenmmheight window
Возвращает десятичную строку, содержащую высоту экрана, содержащего окно
window, в миллиметрах.winfo screenmmwidth
window
Возвращает десятичную строку, содержащую ширину экрана, содержащего окно
window, в миллиметрах.winfo screenvisual window
Возвращает одну из строк, указывающих класс (по умолчанию) экрана, на
котором находится окно window: directcolor,
grayscale, pseudocolor, staticcolor, staticgray, или
truecolor.winfo screenwidth window
Возвращает десятичную строку, содержащую ширину экрана, содержащего окно
window, в пикселях.winfo server window
Возвращает строку, содержащую информацию о сервере дисплея, на котором
находится окно. Точная форма строки зависит от платформы. Для X-сервера строка
имеет вид “XmajorRminor vendor vendorVersion“ где major и
minor соответственно версия и релиз сервера (например, X11R5),
vendor — имя поставщика , vendorRelease — номер релиза
сервера, назначенный поставщиком.winfo toplevel window
Возвращает полное имя ближайшего toplevel-окна, содержащего
window.winfo viewable window
Возвращает `1’, если окно и его предки вплоть до ближайшего toplevel
размещены, и ‘0’ в противном случае.winfo visual
window
Возвращает одну из строк, указывающих класс окна window:
directcolor, grayscale, pseudocolor,
staticcolor, staticgray, или
truecolor.winfo visualid window
Возвращает X-идентификатор класса (возвращаемого командой winfo
visual) для окна window.winfo
visualsavailable window ?includeids?
Возвращает список, элементы которого описывают режимы, допустимые для
экрана, содержащего окно. Каждый элемент состоит из имени класса и глубины
цвета. Имена класса такие же, как для команды winfovisual. Глубина
указывает число битов на пиксель. Если задана опция includeids, за
глубиной следует X-идентификатор класса.winfo vrootheight
window
Возвращает высоту виртуального корневого окна для window, если такое
есть. В противном случае возвращает высоту экрана, на котором размещено окно
window.winfo vrootwidth window
Возвращает ширину виртуального корневого окна дляwindow, если такое
есть. В противном случае возвращает ширину экрана, на котором размещено окно
window.winfo vrootx window
Возвращает x-координату корневого окна в системе координат вируального
корневого окна. Обычно ‘0’ или отрицательное число. Если виртуального корневого
окна на существует, возвращет `0’.winfo vrooty window
Возвращает y-координату корневого окна в системе координат вируального
корневого окна. Обычно ‘0’ или отрицательное число. Если виртуального корневого
окна на существует, возвращает “0”.winfo width window
Возвращает десятичную строку, содержащую ширину окна в пикселях. Когда окно
только что создано, его размер 1 пиксель. Через некоторое время оно принимает
правильные размеры. Однако, если вы хотите получить правильные размеры окна
сразу после его создания, используйте перед этим команду update, которая
приведет к прорисовке окна и формированию его правильных размеров, либо команду
winfo reqwidth, которая возвращает требуумые, а не реальные
размеры окна.winfo x window
Возвращает десятичную строку, содержащую x-координату левого верхнего угла
рамки окна (или самого окна, если оно не имеет рамки) в системе координат окна —
предка.winfo y window
Возвращает десятичную строку, содержащую x-координату левого верхнего угла
рамки окна (или самого окна, если оно не имеет рамки) в системе координат окна —
предка.
Wm
Команда взаимодействия с менеджером окон.
Синтаксис
Описание
Управление
геометрией
Управление
окнами с сеткой
Ошибки
СИНТАКСИС
wm option window ?args?ОПИСАНИЕ
Команда wm предназначена для взаимодействия с менеджером окон и
обеспечивает таким образом управление такими атрибутами окон, как заголовок,
размеры и размещение, возможность изменять размер. Команда имеет несколько форм
в зависимости от используемых опций. Во всех формах команда предполагает наличие
по крайней мере одного аргумента — имени toplevel окна.
Ниже перечислены возможные формы команды.
wm aspect window ?minNumer minDenom maxNumer maxDenom?
Если аргументы minNumer, minDenom, maxNume и maxDenom
заданы, они передаются менеджеру окон, который использует их для определения
допустимых пропорций окна. Пропорции (отношение ширина — высота) могут быть в
диапазоне от minNumer/minDenom до maxNumer/maxDenom. Если
аргументы minNumer и т.д. определены как пустые строки, то существующие
ограничения на пропорции отменяются. Если аргументы minNumer и т.д.
заданы, то команда возвращает пустое значение. В противном случае она возвращает
список из четырех элементов — текущих значений minNumer, minDenom,
maxNumer, и maxDenom (если ограничения не заданы, возвращается пустая
строка).wm client window ?name?
Если имя name указано (name должно быть именем компьютера, на
котором исполняется приложение), то оно сохраняется в свойстве окна
WM_CLIENT_MACHINE и может использоваться менеджером окон или менеджером
сессий. В этом случае команда возвращает пустую строку. Если аргумент
name не задан, команда возвращает последнее установленное ранее значение
свойства. Если аргумент name определен как пустая строка, свойство окна
WM_CLIENT_MACHINE удаляется.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 window
?active|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?
Команда определяет наличие сетки в окне и позволяет задать шаг сетки в
пикселях. BaseWidth и baseHeight определяют в единицах сетки
исходный размер окна (определяемый, исходя из размеров виджетов).
WidthInc и heightInc определяют соответственно горизонтальный и
вертикальный шаг сетки. Таким образом, эти четыре величины определяют множество
допустимых размеров окна. После выполнения этой команды команда wm
geometry считает размеры окна заданными в шагах сетки. Более того, при
ручном изменении размеров менеджер окон показывает размер окна в шагах (ячейках)
сетки и позволяет изменять размер только дискретно в целых шагах сетки.
Если
BaseWidth и последующие аргументы команды — пустые строки, команда
указывает, что окно больше не имеет сетки.
Если BaseWidth и последующие аргументы заданы, команда возвращает
пустую строку. В противном случае команда возвращает список из четырех
элементов, содержащий текущие значения BaseWidth и последующих
аргументов. Если окно не имеет сетки — возвращается пустая строка.
Замечание. Потребность в использовании команды wm
grid возникает относительно редко, поскольку той же функциональности
поведения окна можно добиться, например, с помощью опции setGrid в
командах создания виджетов.
wm group window ?pathName?
Если аргумент pathName указан, окно pathName становится
лидером группы для window. Менеджер окон использует эту информацию,
например, для того, чтобы одновременно выводить с экрана все окна группы, если
сворачивается лидер группы. Если аргумент pathName представлен пустой
строкой, окно window выводится из состава группы.
Если аргумент
pathName задан, команда возвращает пустую строку. В противном случае
команда возвращает имя текущего лидера группы для окна window или пустую
строку, если лидер не определен.
wm iconbitmap window ?bitmap?
Если аргумент bitmap задан, он определяет имя растрового образа,
которое передается менеджеру окон для использования в качестве иконки. Имя
образа может быть задано в одной из следующих
форм:@ИмяФайла — файл должен содержать описание растрового
рисунка в формате, соответствующем стандарту X11 или X10;
name — имя образа типа bitmap, ранее созданного в приложении.
Если аргумент bitmap представляет собой пустую строку, отменяется
использование ранее заданного образа.
Если аргумент bitmap задан, команда возвращает пустую строку. В
противном случае команда возвращает имя образа, используемого джля иконки, либо
пустую строку, если образ не задан.
wm iconify window
Команда сворачивает указанное окно. Если окно еще не было размещено на
экран, оно появится, когда это произойдет, в виде иконки.wm
iconmask window ?bitmap?
Если аргумент bitmap задан, он определяет имя растрового образа,
которое передается менеджеру окон для использования в качестве маски для иконки.
Там, где маска имеет значение “0”, образ иконки не отображается; там, где маска
имеет значение “1”, маска рисуется. Имя образа может быть задано в одной из
следующих форм:@ИмяФайла — файл должен содержать описание растрового
рисунка в формате, соответствующем стандарту X11 или X10;
name — имя образа типа bitmap, ранее созданного в приложении.
Если аргумент bitmap представляет собой пустую строку, отменяется
использование ранее заданной маски (это эквивалентно заданию маски из одних
единиц).
Если аргумент bitmap задан, команда возвращает пустую строку. В
противном случае команда возвращает имя образа, используемого для маски для
данного окна, либо пустую строку, если маска не задана.
wm iconname window ?newName?
Если аргумент newName задан, он передается менеджеру окон для
использования в качестве имени иконки для окна. В этом случае команда возвращает
пустую строку. Если аргумент newNameне задан, команда возвращает текущее
имя иконки для окна; если имя иконки не задано, команда возвращает пустую строку
(в этом случае менеджер окон использует в качестве имени иконки имя окна,
заданное с помощью команды wmtitle).wm
iconposition window ?x y?
Если аргументы x и y заданы, они передаются менеджеру окон и
используются как подсказка при размещении иконки окна window. В этом
случае команда возвращает пустую строку. Если x и y представляют
собой пустые строки, команда отменяет ранее определенную подсказку для
размещения иконки. Если аргументы x и y не заданы, команда
возвращает текущее значение подсказки (или пустую строку, если она не
задана).wm iconwindow window ?pathName?
Если аргумент pathName указан, он определяет имя окна, которое
используется в качестве иконки для окна window: кодгда окно window
свертывается, появляется окно pathName, которое используется в качестве
иконки. Когда окно window разворачивается, окно pathName выводится
с экрана. Если аргумент pathName представляет собой пустую строку, ранее
определенное окно больше не используется как иконка.Если аргумент
pathName указан, команда возвращает пустую строку. В противном случае
команда возвращает имя окна, ранее заданного в качестве иконки, или пустую
строку, если ранее оно не было задано.
Нажатие на кнопку “Мыши” в окне-иконке не обрабатываются приложением, что
позволяет обрабатывать эти события менеджеру окон.
Замечание. Не все менеджеры окон позволяют использовать Tk-окно в качестве
иконки.
wm maxsize window ?width height?
Если аргументы width и height заданы, они задают максимальный
возможный размер окна. Если в окне определена сетка, размеры указываются в шагах
сетки. В противном случае размеры указываются в пикселях. Менеджер окон не
позволяет окну становиться больше, чем задано в команде.
Если аргументы
width и height заданы, команда возвращает пустую строку, в
противном случае она возвращает список, содержащий два элемента: текущие
ограничения на размер окна. По умолчанию максимальные размеры окна равны размеру
экрана. Если изменение размеров окна запрещено с помощью команды wm
resizable, команда wmmaxsize не влияет на коно. Более подробно
этот вопрос рассмотрен ниже (см. “Управление
геометрией”)
wm minsize window ?width height?
Если аргументы width и height заданы, они задают минимальный
возможный размер окна. Если в окне определена сетка, размеры указываются в шагах
сетки. В противном случае размеры указываются в пикселях. Менеджер окон не
позволяет окну становиться меньше, чем задано в команде.
Если аргументы
width и height заданы, команда возвращает пустую строку, в
противном случае она возвращает список, содержащий два элемента: текущие
ограничения на размер окна. По умолчанию минимальные размеры окна равны одному
пикселю в каждом направлении. Если изменение размеров окна запрещено с помощью
команды wm resizable, команда wm maxsize не влияет на окно. Более
подробно этот вопрос рассмотрен ниже (см. “Управление
геометрией”).
wm overrideredirect window ?boolean?
Если аргумент boolean задан, он должен быть булевой величиной. Его
значение присваивается override-redirect флагу окна. Если аргумент не
задан, команда возвращает ‘1’ или ‘0’, в зависимости от того, установлен ли флаг
для window.
Установка флага приводит к тому, что окно не
управляется менеджером окон. В частности, окно не будет заключено в декоративную
рамку и пользователь не сможет изменять размеры и положение окна, используя
стандартные механизмы менеджера окон.
wm positionfrom window ?who?
Если аргумент who задан, он должен иметь одно из двух значений
program или user (или произвольное сокращение от одного из них).
Оно определяет, будет ли размещение окна определяться программой или
пользователем. Многие менеджеры окон игнорируют запрошенное программой начальное
размещение окна и требуют от пользователя разместить его вручную. Если задано
значение user, менеджер окон не требует этого от пользователя. Если
аргумент who задан как пустая строка, текущая установка отменяется.
Если аргумент who задан, команда возвращает пустую строку. В
противном случае команда возвращает установленное ранее значение или пустую
строку, если значение не было установлено. Большинство менеджеров окон считают,
что если “источник“ не задан, это то же самое, что program. Tk
автоматически устанавливает значение user при выполнении команды wm
geometry, если ранее не было установлено явно значение
program.
wm protocol window ?name? ?command?
Эта команда используется для организации обработки сообщений (протоколов)
менеджера окон, таких как WM_DELETE_WINDOW. Аргумент name, если он задан,
должен быть именем элемента (атома) протокола менеджера окон. Если заданы оба
аргумента name и command, команда command ассоциируется с
протоколом name. Значение name добавляется к свойству окна
WM_PROTOCOLS, чтобы указывать менеджеру окон, что приложение имеет
обработчика соответствующего сообщения, и какая команда должна быть выполнена
впоследствии, когда менеджер окон пошлет клиентской программе соответствующее
сообщение. В этом случае команда возвращает пустую строку.
Если аргумент name задан, а command — нет, будет возвращена
команда, ассоциированная с данным протоколом или пустая строка, если такой
команды нет. Если command определена как пустая строка, текущий
обработчик соответствующего события будет отменен, а имя протокола будет удалено
из свойства PROTOCOLS окна window. Команда возвратит пустую
строку.И наконец, если ни name, ни command не заданы,
команда возвратит список протоколов, для которых заданы обработчики событий для
данного окна.
Tk всегда определяет обработчик событий для протокола
WM_DELETE_WINDOW, даже если он не был задан с помощью команды wm
protocol. Если обработчик события не был задан явно, то, когда поступает
сообщение WM_DELETE_WINDOW, Tk удаляет окно, для которого было получено
это сообщение.
wm resizable window ?width height?
Эта команда управляет возможностью пользователя интерактивно изменять
размеры окна. Если аргументы width и height заданы, они должны быть
булевыми величинами, определяющими, может ли пользователь изменять в
интерактивном режиме ширину и высоту окна соответственно. Команда при этом
возвращает пустую строку. Если аргументы width и height
отсутствуют, команда возвращает список из двух элементов, принимающих значение
‘0’ или ‘1’ и указывающих, может ли пользователь изменять высоту и ширину окна
соответственно. По умолчанию пользователь может изменять размеры окна в обоих
направлениях.
Если изменение размеров окна пользователем запрещено, то либо сохраняются те
размеры окна, которые были получены в результате последнего выполненного
пользователем изменения размеров, либо размеры окна устанавливаются с помощью
команды wm geometry. Если этих действий не было, используются размеры
окна, определяемые размерами составляющих его виджетов.
wm
sizefrom window ?who?
Если аргумент who задан, он должен иметь одно из двух значений
program или user (или произвольное сокращение от одного из них).
Оно определяет, будет ли размер окна определяться программой или пользователем.
Многие менеджеры окон игнорируют запрошенный программой начальный размер окна и
требуют от пользователя определить его размер вручную. Если задано значение
user, менеджер окон не требует этого от пользователя. Если аргумент who
задан как пустая строка, текущая установка отменяется.
Если аргумент who задан, команда возвращает пустую строку. В противном
случае команда возвращает установленное ранее значение; если значение не было
установлено, команда возвращает пустую строку. Большинство менеджеров окон
считают, что если “источник“ не задан, это то же самое, что
program.
wm state window
Команда возвращает текущее состояние окна: normal, iconic,
withdrawn или icon. Разница между iconic и icon в том,
что iconic используется для свернутого окна (например, с помощью команды
wm iconify ), а icon — для окна, которое используется в качестве
иконки для другого окна (с помощью команды wm
iconwindow).wm title window ?string?
Если аргумент string определен, он передается менеджеру окон для
использования в качестве имени (титула) окна, которое менеджер окон высвечивает
на рамке окна. В этом случае команда возвращает рустую строку. Если аргумент
string не задан, команда возвращает ранее установленный заголовок. По
умолчанию титул окна совпадает с его полным именем как виджета.wm
transient window ?master?
Если аргумент master задан, команда передает менеджеру окон
информацию о том, что окно window является временным окном (например,
выпадающим меню), работающим под управлением master-окна (где master —
полное имя toplevel-окна). Некоторые менеджеры окон используют эту информацию
для того, чтобы управлять таким окном специальным образом. Если аргумент
master представляет собой пустую строку, окно перестает быть временным
окном.
Если аргумент master задан, команда возвращает пустую строку. В
противном случае она возвращает имя управляющего окна или пустую строку, если
окно window не является временным.
wm withdraw
window
При выполнении команды окно window удаляется с экрана. Информация о
нем удаляется из менеджера окон. Если окно не присутствовало на экране ранее,
оно не появится на экране при создании. Но не все менеджеры окон знают, как
работать с такими окнами!Замечание. Иногда оказывается
необходимым удалить окно с помощью команды wm withdraw, а затем
возвратить его обратно на экран (например, с помощью команды wm
deiconify), чтобы менеджер окон учитывал некоторые его атрибуты,
например, группу.УПРАВЛЕНИЕ
ГЕОМЕТРИЕЙ
По умолчанию 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. Например,
некоторые изменения не производятся в окне, если оно активно. Окно должно быть
выведено с экрана и возвращено обратно, чтобы изменения выполнились.
Все права защищены 1992-1999 DataX/FLORIN, Inc.