Команда загружает Tk в безопасный
ИНТЕРПРЕТАТОР.СИНТАКСИС
::safe::loadTk slave
?-use windowId?
ОПИСАНИЕ
Режим Safe Tk основан на режиме Safe Tcl, обеспечивающем
ограниченный и опосредованный доступ к автозагрузке и пакетам для безопасных
интерпретаторов. Safe Tk добавляет способность конфигурирования
интерпретатора для безопасных Tk операций и загрузки Tk в безопасные интерпретаторы.
Команда ::safe::
запускает необходимые структуры данных в безопасном интерпретаторе и загружает
в него Tk. Команда возвращает имя безопасного интерпретатора.
При работе с Tk в безопасном интерпретаторе
необходимо следовать правилам поддержания безопасности, а также специальным
рекомендациям для работы с Tk.
Команда bell
подает сигнал громкоговорителем дисплея для window. Если этот аргумент
не задан, то по умолчанию используется дисплей главного окна приложения.
В некоторых случаях команда гасит работающий в данный момент хранитель
экрана (screen-saver), и окно снова становится видимым.
Bind
bind≈ привязка скриптов Tcl
к X событиям. Команда назначает событиям ввода от ⌠Мыши■ и клавиатуры (Х
событиям) исполнение скрипта Tcl.
Команда 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 также создает команду с именем этого изображения.
Команда может использоваться для выполнения различных операций над данным
изображением.
Подробное описание этих параметров
приведено в разделе 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,
то все описанные выше действия не приводят ни к какому результату: кнопка
остается неактивной.
Поведение кнопки можно изменить с помощью
новых привязок к конкретным примитивам или путем переопределения привязок
данного класса.
Подробное описание параметров
приведено в разделе 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) меньше, чем нимб,
считается накрывающим эту точку. Аргумент начало позволяет обходить
по кругу все ближайшие к точке элементы. Начало, если оно задано,
представляет собой идентификатор или тег элемента (в случае, если это тег,
будет выбран первый элемент списка, соответствующего данному тегу). В этой
форме выделяется не самый верхний элемент из ближайших, а самый верхний
из тех ближайших элементов, которые ниже элемента начало в списке
вывода. В случае если таких элементов нет, команда выполняется так же,
как и в отсутствие аргумента начало.enclosedx1 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 примитивов канвы. Команда возвращает пустую строку.
Растягивает или сжимает
все элементы, подходящие под описание тегИлиИд в координатном пространстве
канвы. Аргументы 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
bitmapx 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
ovalx1 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
polygonx1 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
textx 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
windowx y параметр значение параметр значение ...
Аргументы x и y
задают координаты точки, используемой для размещения окна на экране (подробнее
размещение текста описано ниже при описании параметра -anchor).
За координатами могут следовать несколько пар параметр-значение,
каждая из которых устанавливает значение одного из параметров конфигурации
элемента. Такие же наборы параметр-значение используются для изменения
значений параметров с помощью команды примитива itemconfigure. Окна
поддерживают следующие параметры:
-anchorположениеОпоры
ПоложениеОпоры указывает
способ размещения окна по отношению к опорной точке элемента.Параметр
может принимать произвольное значение, воспринимаемое командойTk_GetAnchor.
Так, если параметр имеет значение center, то в опорной точке располагается
центр текста; значение ⌠n■ указывает что в опорной точке располагается
верхняя центральная точка текста и т.д. По умолчанию параметр имеет значение
center.
-height пиксели
Задает высоту окна элемента.
Аргумент пиксели может иметь вид, описанный выше (см. ⌠Координаты⌠).
Если параметр не задан или если его значением является пустая строка, то
высота окна определяется его содержимым.
-tagsсписокТегов
Задает набор тегов, относящихся
к элементу. СписокТегов представляет собой список имен тегов, замещающий
имеющиеся теги элемента. СписокТегов может быть пустым.
-widthпиксели
Задает ширину окна элемента.
Аргумент пиксели может иметь вид, описанный выше (см. ⌠Координаты⌠).
Если параметр не задан или если его значением является пустая строка, то
ширина окна определяется его содержимым.
-windowимяПути
Приписывает данному элементу
окно. Окно, заданное аргументом имяПути, должно быть либо потомком
примитива канвы, либо потомком одного из наследников примитива канвы. ИмяПути
может и не указывать окно верхнего уровня.Замечание. Ограничения
на управление окнами не позволяют выводить графические элементы (такие,
как кривые и двуцветные изображения) поверх окон.ТИПЫ
ЭЛЕМЕНТОВ, ОПРЕДЕЛЯЕМЫЕ В ПРИЛОЖЕНИЯХ В конкретных приложениях
можно определять новые типы элементов для примитивов канвы с помощью C
кода. Описание этой возможности приведено в документации для Tk_CreateItem.ПРЕДПОЧТЕНИЯ В текущей реализации новая
канва не имеет никакого поведения по умолчанию; для определения этого поведения
необходимо явно выполнить команды Tcl.
checkbutton
Создание примитива защелкивающейся
кнопки и управление им.
Подробное описание этих параметров
приведено в разделе 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
Создание примитива поля ввода текста
и управление им.
Подробное описание этих параметров
приведено в
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 markx
Запоминает значение координаты x
и текущее состояние окна поля ввода; используется в сочетании с последующими
командами scan dragto. Обычно эта команда связана с нажатием клавиши
⌠Мыши■ на примитиве. Возвращает пустую строку.имяПутиscan dragtoxВычисляет разность между значением
своего аргумента 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
обеспечивает различные возможности работы с событиями, включая определение
виртуальных событий и синтезирование событий. У команды есть несколько
различных форм, которые задаются первым аргументом. В настоящее время поддерживаются
следующие формы команды:
Связывает виртуальное событие
с последовательностями физических событий, указываемыми аргументами последовательность;
в результате выполнение одной из указанных последовательностей событий
приводит к возникновению виртуального события. Аргумент виртуальное
может быть произвольной строкой, а последовательность может принимать
любое значение, допустимое для аргумента последовательность команды
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>>.
Если последовательность не
связана с данным виртуальным событием в текущий момент, то она игнорируется.
Если аргумент последовательность отсутствует, то из списка удаляются
все последовательности физических событий и данное виртуальное событие
не может быть более осуществлено.
event generate окно событие
?параметр значение параметр значение...?
Генерирует событие в окне и обеспечивает
его обработку таким образом, как если бы оно поступило из менеджера окон.
Аргумент окно задает имя пути окна, в котором будет генерироваться
событие; его значением может быть и идентификатор окна (такой же, какой
служит результатом команды
winfo id), если он относится к окну в
текущем приложении. Аргумент
событие задает описание события, например,
в виде <Shift-Button-2> или <<Paste>>. Аргумент
событие
может принимать любое значение, допустимое для аргумента
последовательность
команды bind, за исключением того, что он должен
состоять из одного, а не из нескольких событий. Пары параметр-значение
можно использовать для установки значений дополнительных параметров события,
например, координат курсора ⌠Мыши■ ниже (см. "ПОЛЯ
СОБЫТИЯ"). Если параметр -when не задан, то событие обрабатывается
немедленно; все программы обработки события будут выполнены до завершения
команды event generate. В противном случае момент обработки определяется
значением параметра -when.event info ?<<виртуальное>>?Возвращает информацию о виртуальных
событиях. Если аргумент <<виртуальное>> опущен,
то возвращается список всех виртуальных событий, определенных в текущий
момент. Если аргумент
<<виртуальное>> задан,
то возвращаемое значение представляет собой список, элементы которого являются
последовательностями физических событий, связанными с данным виртуальным
событием; если указанное виртуальное событие не определено, то команда
возвращает пустую строку.
Команда
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 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-машин, представленное в виде
Поля, содержимое которых пользователю безразлично, можно
пропустить, заменив символом "*". Каждому пропущенному полю должен
соответствовать ровно один символ "*", а символ ⌠*■ в конце 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:
Подробное описание этих параметров
приведено в разделе 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
Направляет события, исходящие из
клавиатуры и указателя ⌠Мыши■ в модальное окно и его поддерево.
ОПИСАНИЕКоманда реализует простые перехватчики событий ввода
с клавиатуры и ⌠Мыши■. Перехватчики 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
Геометрический менеджер, который
размещает виджеты в ячейках сетки.
СИНТАКСИСgridoption
arg ?arg ...?ОПИСАНИЕКоманда grid
используется для управления соответствующим геометрическим менеджером,
размещающим виджеты по ячейкам сетки, и для получения от него справочной
информации. Команда может иметь перечисленные ниже формы в зависимости
от значения аргумента
option.
grid slave ?slave ...? ?options?
Если первый аргумент команды является
именем окна (любая величина, начинающаяся с ⌠.⌠), команда выполняется точно
также, как команда gridconfigure.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▓.-rownВставляет виджет в 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.
Первые два элемента списка ≈ ``-inmaster'',
где ⌠master'' ≈ имя окна, в котором размещается slave.grid location master x yАргументы x и y должны
быть координатами в системе координат мастер окна. Команда возвращает номер
колонки и строки, в которой находится точка с координатами x и y.
Если она расположена выше или левее сетки, возвращается `-1▓.grid propagatemaster ?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
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.
Подробное описание этих параметров
приведено в разделе 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
Команда создает и управляет примитивами
окон со списками.
Подробное описание этих параметров
приведено в разделе 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 markx
y
Запоминает значение координаты x
и текущее состояние окна со списком; используется в сочетании с последующими
командами scan dragto. Обычно эта команда связана с нажатием клавиши
⌠Мыши■ на примитиве. Возвращает пустую строку.имяПутиscan dragtox
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
Команда изменяет положение окна в
очереди стека.СИНТАКСИСlowerwindow ?belowThis?ОПИСАНИЕ Команда lower перемещает окно
window
в очереди стека либо ниже всех окон, имеющих одинаковый с
window
уровень иерархии, либо после одного из них, заданного аргументом
belowThis.
Окна, оказавшиеся выше данного окна, заслоняют его.
Подробное описание этих параметров
приведено в разделе
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 вида:
менюpostx 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 приводит
к переходу на соседнее справа меню. Если текущим является каскадный вход,
то выводится соответствующее каскадное подменю и текущий вход становится
первым в этом подменю. В противном случае, если текущее меню было выведено
конпкой меню, то текущая кнопка меню стирается, а вместо нее выводится
соседняя с ней справа кнопка меню.
Отключенные входы меню остаются безответными:
их нельзя сделать активными и они не реагируют на нажатие и отпускание
клавиш ⌠Мыши■.
Определяя новые привязки к отдельным
примитивам или переопределяя привязки класса, поведение меню можно изменить.
В настоящее время использование базы
данных параметров для задания значений параметров входов не допускается.
Подробное описание этих параметров
приведено в разделе 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
Команда добавляет/получает параметры
окон в/из базы данных параметров окон.СИНТАКСИСoptionaddpattern
value ?priority?
optionclear
optionget window
name class
optionreadfilefileName
?priority?
ОПИСАНИЕКоманда позволяет добавить в базу данных параметров
окон новые значения, считать из нее значения указанных параметров, очистить
базу или добавить в базу данные из указанного файла стандартного формата.
Аргументpattern
задает конкретный параметр
и состоит из имен параметров и/или классов. Аргумент
value содержит
значение параметра. Аргумент fileName задает файл со значениями
параметров. Необязательный аргумент priority указывает уровень приоритета
для ввода параметра.
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
Геометрический менеджер, который
упаковывает виджеты по сторонам внутреннего пространства окна.
СИНТАКСИСpackoption arg ?arg ...?ОПИСАНИЕКоманда pack используется
для управления соответствующим геометрическим менеджером, размещающим виджеты
по различным сторонам родительского окна, и для получения от него справочной
информации. Команда может иметь перечисленные ниже формы в зависимости
от значения аргумента option.
pack slave ?slave ...? ?options?
Если первый аргумент команды является
именем окна (любая величина, начинающаяся с ▒.▓), команда выполняется точно
также, как команда pack configure.pack configure slave ?slave
...? ?options?Аргумент команды состоит из имени
одного или нескольких размещаемых виджетов, после которых идут пары аргументов,
состоящих из имени опции и ее значения. Подробное описание действий, выполняемых
при размещении виджетов приведено ниже (см. "Алгоритм
упаковки pack"). Ниже перечислены возможные опции команды.-after otherOther должно быть именем другого
окна. Мастер-окна
other используется как мастер для slave. Список
slave ?slave ...? вставляется в список размещаемых окон сразу после
other.-anchor
anchorAnchor должен быть одной из
возможных позиций якоря, например, n или sw. Он определяет
как размещается slave в отведенном ему пространстве. Значение по умолчанию
≈ center (с).-beforeotherOther должно быть именем другого
окна. Мастер-окно окна other используется как мастер-окно для slave.
Список
slave ?slave ...? вставляется в список размещаемых окон непосредственно
перед
other.-expand
booleanОпределяет, будут ли перечисленные
виджеты расширяться при наличии свободного пространства в мастер-окне.
Boolean
должно иметь булево значение, например, 1 или no. Значение
по умолчанию `0▓.-fillstyleЕсли в мастер-окне для 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. Первые два элемента списка ≈ ``-inmaster'',
где master' ≈ имя окна, в котором размещается slave.pack propagatemaster ?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.РАСПРОСТРАНЕНИЕ
РАЗМЕРОВОбычно менеджер рассчитывает размеры
мастер-окна, необходимые для размещения виджетов, и, при необходимости,
устанавливает размеры мастер-окна таким образом, чтобы в нем в точности
поместились все виджеты из списка. Это приводит к тому, что информация
о размерах виджетов распространяется по иерархическому дереву виджетов,
в результате чего целое поддерево изменяет свои размеры при изменении одного
из листьевых элементов. Однако команда packpropagate может
быть использована для отключения этого механизма для одного или нескольких
мастер-окон. Если распространение размеров отключено, информация о необходимых
размерах не передается мастер-окну. Это может оказаться полезным, если
вы хотите, чтобы мастер-окно сохраняло те размеры, которые вы определили.ОГРАНИЧЕНИЯ
НА МАСТЕР-ОКНАМастер-окно для каждого размещаемого
виджета должно быть его непосредственным предком (по умолчанию) или одним
из потомков его предка. Это ограничение гарантирует разумное поведение
виджетов при удалении toplevel-окон.ПОРЯДОК
РАЗМЕЩЕНИЯЕсли мастер-окно для виджета не является
его непосредственным предком, необходимо быть уверенным, что виджет лежит
в стеке окон выше, чем мастер-окно. В противном случае мастер-окно закроет
собой виджет и создастся впечатление, что виджет не упакован правильным
образом. Простейший способ избежать подобных проблем ≈ следить, чтобы -окно
было создано раньше, чем виджет (чем позже создано окно, тем выше оно в
стеке). Если это почему-либо неудобно, можно использовать команды raise
и lower для изменения порядка окон в стеке.
pack-old
Устаревшая команда для геометрического
менеджера упаковки оконСИНТАКСИСpack after sibling окно
параметры ? окно параметры...?
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Размещает окно так, что его левый
верхний угол располагается в левом верхнем углу доли.
Упаковщик управляет состоянием размещенный/неразмещенный
всех упакованных непосредственных окон-потомков. При упаковке окон упаковщик
автоматически выводит их на экран; кроме того, он стирает окна, для которых
в полости остается недостаточно места.
Упаковщик посылает геометрические запросы
от имени родителя размещаемых окон. Для каждого окна-родителя он запрашивает
размер, достаточный для размещения всех упакованных потомков в соответствии
с указанными параметрами, так что на расширение остается нулевой остаток.
СИНТАКСИС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.имяИзображенияgetx
yВозвращает цвет пиксела с координатами
(x,y) в указанном изображении в виде списка из трех целых чисел
в промежутке от ▒0▓ до ▒255▓, описывающих соответственно его красную, зеленую
и голубую составляющие.имяИзображенияputданные
?-tox1 y1 x2 y2?
Устанавливает цвета пикселей, заданные
параметром
данные. Этот параметр используется для формирования двумерного
массива пикселей, который затем копируется в изображение имяИзображения.
Данные представляют собой список строк, идущих сверху вниз, каждая из которых
является списком цветов, идущих слева направо. Каждый цвет задается именем
(например, blue) или в шестнадцатеричном виде (например, #2376af).
С помощью параметра
-to можно отвести область для размещения массива.
Если заданы только координаты
x1 и y1, то верхним левым углом
отведенной области является точка с координатами (x1,y1), а размеры
области совпадают с размерами массива. Если указаны все четыре координаты,
то они задают противоположные углы отведенного прямоугольника, и содержимое
массива будет при необходимости повторено в X- и Y-направлениях для замощения
всего отведенного прямоугольника.имяИзображенияreadимяфайла
?параметр значение(я) ...?
Читает данные из файла с именем имяфайла
в изображение с именем имяИзображения. Выполнение команды начинается
с просмотра списка программ обработки форматов файлов изображений в поисках
программы, способной интерпретировать данные в указанном файле; затем эти
данные читаются из файла в изображение с именем имяИзображения.
Команда может иметь следующие параметры:
-format имя-формата
Задает формат данных в файле с именем имяфайла.
Точнее
говоря, при поиске в списке программ обработки будут просматриваться только
те программы, имена которых начинаются с имени-формата.-fromx1 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
Геометрический менеджер, обеспечивающий
размещение виджетов в абсолютных или относительных координатах.
ОПИСАНИЕГеометрический менеджер place
позволяет размещать виджеты в их мастер-окнах, используя прямые указания
о размерах и размещении виджета. Кроме того, с его помощью можно добиваться
режима ⌠резинового листа⌠, указывая размеры и размещение виджета в долях
размера мастер-окна. При этом виджеты изменяют свои размеры при изменении
размеров мастер окна. И, наконец, менеджер place позволяет сочетать оба
этих метода, размещая, например, виджет определенного размера в центре
мастер-окна.
Команда place используется для
управления соответствующим геометрическим менеджером и для получения от
него справочной информации. Команда может иметь перечисленные ниже формы.
placewindow
option value ?option value ...?
Если первый аргумент команды является
именем окна (любая величина, начинающаяся с ⌠.⌠), команда выполняется точно
так же, как команда placeconfigure.
placeconfigurewindow
option value ?option value ...?
Аргумент команды состоит из имени
размещаемого виджета, после которого идут пары аргументов, состоящих из
имени опции и ее значения. Если виджет уже обрабатывался с помощью команды
place,
то для не определенных в команде опций будут использоваться старые значения,
а не значения по умолчанию. Команда возвращает пустую строку
Ниже перечислены возможные опции.
-inmaster
Аргумент master определяет
полное имя виджета (мастер-окна), относительно которого будет размещаться
виджет window. Мастер-окно должно быть непосредственным предком виджета,
или потомком этого предка. При этом они оба должны быть потомками одного
и того же toplevel-окна. Эти ограничения необходимы, чтобы гарантировать,
что виджет будет виден, когда видно мастер-окно. По умолчанию виджет размещается
в своем непосредственном предке.
-xlocation
Аргумент location определяет
x-координату
в мастер-окне для якорной точки виджета. Координата указывается на экране
в одной из следующих форм:
в пикселях (число),
в сантиметрах (число с буквой cна
конце),
в миллиметрах (число с буквой mна
конце),
в дюймах (число с буквой iна конце)
в точках (число с буквой pна конце,
точка равна 1/72 дюйма).
Якорная точка не обязана находиться
внутри мастер-окна.-relx location Аргумент location определяет
x-координату
в мастер окне для якорной точки виджета. Координата указывается на экране
в виде десятичного числа в долях соответствующего размера мастер-окна.
Так ⌠0.0■ соответствует левому краю мастер окна, 1.0 ≈ правому краю. Если
указаны обе опции, -x и -relx, то соответствующие
величины складываются. Например, -relx 0.5 -x -2 помещает якорную
точку на два пикселя левее центра мастер-окна.
-ylocation
Аргумент 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
Команда изменяет положение окна в
очереди стека.СИНТАКСИСraisewindow ?aboveThis?ОПИСАНИЕКоманда raise
перемещает окно window в очереди стека либо выше всех окон, имеющих
одинаковый с window уровень иерархии, либо перед одним из них, заданного
аргументом aboveThis. Данное окно будет заслонять окна, оказавшиеся
ниже его.
scale
Создание примитива линейной шкалы и
управление им.
Подробное описание этих параметров
приведено в разделе 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
Создание примитива линейки прокрутки
и управление им.
Подробное описание этих параметров
приведено в разделе 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).
Аргумент параметр определяет формат последующих аргументов и поведение
команды. В настоящее время поддерживаются следующие формы команды:
Если на дисплее окна имеются выделения,
их следует очистить так, чтобы ни одно из окон не владело выделением. Параметр
выделение
задает 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
Создание примитива кнопки-переключателя
и управление им.
Подробное описание этих параметров
приведено в разделе 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 ?параметры? прил
кмд ?арг арг ...?ОПИСАНИЕОбеспечивает выполнение команды, заданной параметром
кмд
(с аргументами, заданными параметрами арг), в приложении с именем
прил.
Возвращает результат выполненной команды или ошибку. Аргумент
прил
может задавать имя любого из приложений, главное окно которого расположено
на том же дисплее, что и главное окно запрашивающего приложения; запрошенное
приложение не обязано управляться тем же процессом. Если аргументы отсутствуют,
то выполняемая команда полностью определяется аргументом кмд. Если
присутсвует один или несколько аргументов, то они конкатенируются с кмд
в точности так же, как и в команде
eval.
Если первые аргументы команды начинаются
с дефиса "-", то они интерепретируются как параметры. В настоящее время
допустимы следующие параметры:
-async
Запрашивает асинхронный вызов. В
этом случае выполнение команды send завершается немедленно, не дожидаясь
завершения выполнения команды, заданной аргументом кмд, в приложении-адресате;
результат выполнения посланной команды или возникающие при выполнении ошибки
игнорируются. Если адресат управляется тем же процессом, что и посылающее
приложение, то параметр -async игнорируется.-displayof имяПутиУказывает на то, что главное окно приложения-адресата
должно быть на том же дисплее, что и окно, заданное аргументом имяПути,
а не на дисплее посылающего приложения.--Единственная задача этого параметра
≈ завершить список параметров. Он используется только если значение аргумента
прил
может начинаться с дефиса "-".ИМЕНА
ПРИЛОЖЕНИЙПервоначально имя приложения определяется
именем программы или скрипта, его создающего. Имя приложения можно узнать
и изменить с помощью команды appname Tk.БЛОКИРОВКА
ПОСЫЛАЕМЫХ КОМАНДЕсли отменить в приложении команду send
(например, выполнив команду rename send {}), то приложение перестанет
реагировать на поступающие запросы send и само не сможет посылать
запросы. Восстановить взаимодействие приложений можно, выполнив команду
appname
Tk.БЕЗОПАСНОСТЬКоманда send
является потенциальным источником серьезных нарушений защиты, так как любое
приложение, способное соединиться с Вашим X сервером, может посылать скрипты
в Ваше приложение. С помощью Tcl присланные скрипты могут читать Ваши файлы
и выполнять запись в них и запускать подпроцессы под Вашим именем. Особенно
уязвимо управление доступом вида xhost, так как всякий пользователь,
заведенный на головном компьютере, может связаться с Вашим сервером; если
же это управление доступом отключить, то связь становится возможной вообще
для любого пользователя, где бы он ни находился. Чтобы обеспечить хотя
бы минимальную защиту, Tk проверяет систему управления доступом на сервере
и отвергает все присланные команды, если либо (а) xhost-система управления
доступом отключена (так что лишь некоторые головные компьютеры могут устанавливать
связь); либо (б) список головных компьютеров, которым такая связь разрешена,
пуст. В результате никакое приложение не сможет связаться с Вашим сервером,
если у него не будет дополнительных прав (например, предоставленных xauth).
table
Создание таблиц и действия с ними.
Команда становится доступной для выполнения
после загрузки библиотеки Tktable2.3 командой:
Детальное описание стандартных опций
(см. ⌠Опции).СПЕЦИАЛЬНЫЕ
ОПЦИИ КОМАНДЫИмя опции в Командной строке:
-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
для таблицы. Тем не менее, для каждого тэга могут быть заданы индивидуальные
значения этих опций с помощью команды
pathNametag 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, чье имя является именем созданного виджета. Эта команда может использоваться,
чтобы выполнить различные действия с виджетом. У нее есть следующая общая
форма:
pathNameoption ?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 массива
или состояние таблицы неактивно.pathNamecurvalue?value?Если величина не задана, возвращается
величина из редактируемой ячейки (с индексом active), иначе величина
устанавливается в активной величине.pathNamedeleteoptionarg?arg?Эта команда используется, чтобы удалять
различные компоненты таблицы. У нее есть различные формы, в зависимости
от подопции:pathNamedeleteactive
index?index?Удаляет текст из активной ячейки.
Если дан только один индекс, команда удаляет символ после этого индекса,
в противном случае удаляются символы с первого индекса по второй. index
может быть числом, insert или end.pathNamedeletecols?switches?index?count?Удаляет count колонок, начиная с
колонки с индексом index. Если count
≈ отрицательное, удаляет колонки влево от начальной. В противном случае
удаляет колонки вправо. Выбор очистится. Дополнительные ключи:-cols valueУстанавливает искусственное ограничение
на число столбцов в активной области. Столбцы за пределами активной области
при этом изменяться не будут. По умолчанию используется величина опции
-cols
таблицы, то есть активная область распространяется на все столбцы. Использование
опции может вызвать интересные побочные эффекты, когда опция используется
в связке с другими опциями.-holddimensionsОбеспечивает сохранение числа столбцов
в таблице (при удалении могут появиться пустые столбцы вместо удаленных).
По умолчанию число столбцов уменьшается в соответствии со значением count.-holdtagsОбеспечивает сохранение тэгов, созданных
с помощью команды tag, при удалении всех ячеек, для которых они
были заданы. Тэги присваиваются новым ячейкам с соответствующими индексами.
Также предотвращает изменение ширины таблицы, если она задана с помощью
команды width. По умолчанию новые ячейки, вставшие на место удаленных,
не наследуют их тегов.-keeptitlesЗащищает ячейки области заголовка
от изменения. В противном случае они могут быть удалены подобно регулярным
ячейкам.-rows valueУстанавливает искусственное ограничение
на число строк в активной области. Строки за пределами активной области
при этом изменяться не будут. По умолчанию используется величина опции
-rows таблицы, то есть активная область распространяется на все строки.
Использование опции может вызвать интересные побочные эффекты, когда опция
используется в связке с другими опциями.--Означает конец ключей.pathNamedelete
rows ?switches?index?count?Удаляет count строк таблицы,
начиная со строки index (и включая ее). Если count отрицательное,
то удаляются предшествующие строки. В противном случае удаляются последующие
строки. Выбор очищается. Ключи √ такие же, как для удаления столбца.pathNameflush?first?
?last?Сохраняет табличный кеш от first
до last. Если индексы не заданы, сохраняется весь кеш.pathNamegetfirst?last?Возвращает (в виде списка) значения
из ячеек, содержащихся в прямоугольной области с левым верхним углом, заданным
индексом first, и правым нижним углом, определяемым индексом last
(если задан).pathNameheight?row?
?valuerowvalue...?Если никакая строка не задана, возвращает
список, описывающий все строки, для которых высота установлена. Если колонка
задана без величины, возвращает высоту этой колонки в символах (положительное
число) или пикселях (отрицательное число). Если одна или более пар строка-величина
определены, тогда, устанавливает высоту соответствующих строк в строках
символов (положительное число) или пикселях (отрицательный номер). Если
задано значение высоты ⌠default■, то высота строки определяется значением
опции -rowheight.pathNameicursor?arg?Если команда задана без аргументов,
то она возвращает позицию курсора вставки в активной ячейке. Если команда
задана с одним аргументом, то она устанавливает курсор в этой точке в строке.
0 ≈ перед первым символом. Допустимые индексы: insert для текущего положения
курсора и end для конца текста.pathNameindexindex?row|col?Возвращает индекс ячейки, которая
соответствует указанному индексу, в форме row,col.
Если задана опция row или col, то команда возвращает только
индекс строки или столбца соответственно.pathNameinsertoptionarg
argЭта команда используется, чтобы вставлять
различные объекты (значения, колонки, столбцы и т.п.) в таблицу. У нее
есть различные формы в зависимости от подопции:pathNameinsert
active index valuevalue является текстовой строкой,
которая вставляется в активную ячейку, начиная с позиции index.
Курсор затем позиционируется после встроенного текста. index может быть
числом, insert или end.pathNameinsert cols?switches?
index ?count?Вставляет count столбцов,
начиная с индекса
col. Если count является отрицательным
числом, они вставляются перед столбцом с индексом col. В противном
случае они вставляются после столбца с индексом col. Выбор очищается.
Ключи ≈ те же, как при удаления столбца.pathNameinsert
rows?switches? index ?count?Вставляет count строк, начиная с
индекса col. Если count является отрицательным числом, они
вставляются перед строкой с индексом col. В противном случае они
вставляются после строки с индексом col. Выбор очистится. Ключи
≈ те же, как для удаления строки.pathNamerereadПеречитывает старое содержимое ячейки
снова в буфер редактирования. Полезно для обработки событий, когда <Escape>
нажимается,
чтобы прервать редактирование (стандартное поведение).pathNamescan
optionargsЭта команда используется, чтобы осуществить
⌠прокрутку■ таблицы. У нее есть две формы в зависимости от опций:pathNamescan
markx yЗапоминает текущие координаты x
и
y
и вид таблицы; используется в связке с последующей scan dragto командой.
Обычно эта команда вызывается по нажатию на кнопку ⌠Мыши■. Возвращает пустую
строку.pathNamescan
dragtox yЭта команда вычисляет разность между
текущими координатами y и x и координатами x и y, запомненными в последней
команде scan mark для данного виджета. Затем она ⌠прокручивает■ таблицу
на 5-кратную разность координат. Эта команда обычно вызывается при движении
⌠Мыши■ на таблице и используется для ускоренного просмотра таблицы. Возвращает
пустую строку.pathNameseeindex⌠Прокручивает■ таблицу так, чтобы
ячейка, заданная индексом, оказалась первой ячейкой с левого верхнего края
таблицы (исключая строки и столбцы заголовков), если ячейка к настоящему
времени не видна на экране. Фактическая ячейка может не оказаться самой
первой, если за ней в таблице недостаточно ячеек, чтобы заполнить экран.pathNameselectionoptionargЭта команда используется, чтобы управлять
выбором в таблице. У нее есть различные формы, в зависимости от опций:pathNameselectionanchorindeУстанавливает якорь выбора в ячейке,
заданной индексом. Якорь выбора является концом выбора, который фиксируется,
пока второй конец области выбора передвигается с помощью ⌠Мыши■. Индекс
anchor
может использоваться для ссылок на соответствующую ячейку.pathNameselection
clear first ?last?Снимает выбор с выбранных ячеек от
first
до last (включительно). Состояние выбора для ячеек за пределами
этой области не изменяется. Если first равно all, команда
удаляет выбор из всех ячеек.pathNameselection
includesindexВозвращает `1▓,
если ячейка, указанная индексом, выбрана, и `0▓
≈ если нет.pathNameselection
set first ?last?Выбирает все ячейки в области от
first
до
last включительно, не влияя на состояние выбора ячеек за пределами
этой области.pathNameset?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.pathNametagoption?arg
arg ...?Эта команда используется, чтобы управлять
тэгами. Точное поведение команды зависит от значения опции и аргументов.
Только опция cget требует использования реально существующих тэгов. В настоящее
время поддерживаются следующие формы команды:pathNametag
cell tagName?index ... ?Если команда задана без аргументов,
то она распечатывает список ячеек, которые используют тэг. В противном
случае она устанавливает тэг заданным ячейкам. Если тэг пустой ({}), ячейкам
восстанавливается тэг по умолчанию. Тэги, добавленные с помощью опций -*tagcommand,
здесь не обрабатываются.pathNametag
cgettagNameoptionЭта команда возвращает текущую величину
опции option для тэга tagName. option
может быть любой из опций, определенных для команды tag configure
для таблиц.pathNametag
col tagName?col ... ?Если команда задана без аргументов,
то она распечатывает список колонок, которые используют данный тэг. В противном
случае устанавливает тэг заданным столбцам. Если тэг пустой ({}), столбцам
восстанавливается тэг по умолчанию. Тэги, добавленные с помощью опции -coltagcommand,
здесь не обрабатываются.pathName tag configure tagName
?option? ?value? ?option value ...?Эта команда подобна команде configure
для таблиц, за исключением того, что она изменяет опции, связыванные с
тэгом tagName вместо модификации опций для всей таблицы. Если никакая опция
не задана, команда возвращает список всех доступных опций для tag_Name
(смотри
Tk_ConfigureInfo для информации о формате этого списка).
Если опция указана без величины, возвращается подсписок указанного списка,
соответствующий указанной опции. Если указана одна или более пар опция-
величина, то команда модифицирует данную опцию (опции) для указанного тэга;
в этом случае команда возвращает пустую строку. См. "ТЭГИ".pathNametag
deletetagNameУдаляет тэг. Если тэг не существует,
ошибки не возникает.pathNametag
existstagNameВозвращает `1▓,
если указанный тэг существует, и ▒0▓ ≈ в противном случае.pathNametag
includestagNameindexВозвращает `1▓,
если ячейка с данным индексом имеет указанный тэг, и ▒0▓ ≈ в противном
случае.pathNametag
names?pattern?Если никакой образец не задан, показывает
имена всех определенных тэгов в таблице. В противном случае образец используется
в качестве шаблона, и показываются только тэги, удовлетворяющие этому шаблону.pathNametag
rowtagName?row ...?Если команда задана без аргументов,
то она распечатывает список строк, которые используют данный тэг. В противном
случае она устанавливает данный тэг указанным строкам. Если тэг пустой
({}), строкам восстанавливается тэг по умолчанию. Тэги, добавленные с помощью
опции √rowtagcommand, не обрабатываются здесь.pathNamevalidateindexЯвно проверяет корректность значения
в ячейке, определенной индексом, с помощью команды, заданной опцией √validatecommand.
Возвращает ▒0▓ или `1▓
в зависимости от результатов проверки.pathNamewidth?col?
?value
col value ...?Если никакой столбец не задан, возвращает
список, описывающий все столбцы, для которых установлена ширина. Если столбец
указан без указания ширины, команда возвращает ширину соответствующего
столбца в символах (положительное число) или пикселях (отрицательное число).
Если заданы одна или более пар колонка-величина, тогда команда устанавливает
каждому перечисленному столбцу соответствующую ширину в символах (положительное
число) или пикселях (отрицательное число). Если величина совпадает с шириной,
задаваемой по умолчанию, колонка в дальнейшем будет использовать ширину,
определенную с помощью опции -colwidth.pathName window option
?arg arg ...?
Эта команда используется, чтобы управлять
встроенными окнами. Точное поведение команды зависит от значения опции
и аргументов. В настоящее время поддерживаются следующие формы команды:pathNamewindow
cgetindex optionЭта команда возвращает текущую величину
опции option для окна в ячейке с данным индексом. option может иметь
любое из значений, допустимых для команды window configure.pathNamewindow
configureindex ?option? ?value? ?option value ...?Эта команда подобна команде configure
для таблицы, за исключением того, что она изменяет опции, связанные с встроенным
окном с данным индексом, а не опции таблицы в целом. Если опция указана
без величины, возвращается подсписок указанного списка, соответствующий
указанной опции. Если указана одна или более пар опция-величина, то команда
модифицирует данную опцию (опции) для указанного окна; в этом случае команда
возвращает пустую строку. См. "Встроенные
окна".pathName window deleteindex
?index ...?Удаляет встроенное окно из таблицы.
Соответствующее окно также будет удалено.pathNamewindow
move indexFrom indexToПеремещает встроенное окно из одной
ячейки в другую. Если в целевой ячейке уже существует другое окно, оно
будет удалено.pathNamewindow
names ?pattern?Если никакой шаблон не задан, команда
показывает все ячейки, в которых есть встроенные окна. В противном случае
показывает только те ячейки, в которых есть встроенные окна с именами,
удовлетворяющими шаблону.pathNamexview
argsЭта команда используется для запросов
о горизонтальной позиции таблицы в окне и для изменения горизонтальной
позиции таблицы в окне. Команда может использоваться в одной из следующих
форм:pathNamexview Возвращает список, содержащий два
элемента. Каждый из них является действительным числом из диапазона ▒0▓
√ `1▓. Они указывают
соответственно левую и правую границы видимой области. Например, если первый
элемент ≈ ⌠.2■ а второй элемент ≈ ⌠.6■, то 20% табличного текста выходит
за пределы экрана слева, средние 40% текста видны в окне, и 40% текста
выходит за пределы экрана вправо. Эти величины используются для конфигурации
полос прокрутки с помощью команды, заданной опцией -xscrollcommand.pathName xview index ⌠Прокручивает■ таблицу так, чтобы
столбец с данным индексом отображался на левом крае окна.pathNamexview
moveto fraction ⌠Прокручивает■ таблицу так, чтобы
доля общей ширины табличного текста, выходящая за пределы экрана влево,
равнялась fraction. fraction должно
быть дробью между ▒0▓ и `1▓.pathName xview scroll numberwhatЭта команда ⌠прокручивает■ таблицу
влево или вправо на заданное расстояние. number должно быть целым
числом. what должно быть units или pages или сокращением
одного из их. Если what равно units, таблица сдвигается на
number
символов (символ равен ширине символа 0); если what равно
pages,
таблица сдвигается на соответствующее число экранов. Если number является
отрицательным числом, тогда более левые символы становятся видимыми; если
number √ положительное число, тогда более правые символы становятся видимыми.pathNameyviewargsЭта команда используется для запросов
о вертикальной позиции таблицы в окне и для изменения вертикальной позиции
таблицы в окне. Команда может использоваться в одной из следующих форм:pathNamexviewВозвращает список, содержащий два
элемента. Каждый из них является действительным числом из диапазона ▒0▓
√ `1▓. Они указывают
соответственно верхнюю и нижнюю границы видимой области (например,
`.5▓
означает середину таблицы) Эти величины используются для конфигурации полос
прокрутки с помощью команды, заданной опцией
-yscrollcommand.pathName yview index⌠Прокручивает■ таблицу так, чтобы
строка с данным индексом отображалась на верхнем крае окна.pathNameyview
movetofraction⌠Прокручивает■ таблицу так, чтобы
доля общей высоты табличного текста, выходящая за пределы экрана вверх,
равнялась 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 имяПути параметрыСТАНДАРТНЫЕ
ПАРАМЕТРЫ
-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_menuBarframe ?menu
menu ┘?
tk_bindForTraversalarg
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. Если пользователь
прерывает операцию, то обе команды возвращают пустую строку.
Создает окно модального диалога и
ожидает ответа.СИНТАКСИС tk_dialog окно
заголовок текст двуцвет умолч строка строка ...ОПИСАНИЕ Эта процедура является частью библиотеки скриптов Tk.
Ее аргументы описывают диалоговое окно:
окно
Имя окна верхнего уровня, которое
следует использовать для диалога. Любое существующее под этим именем окно
уничтожается.заголовокТекст, предназначенный для вывода
в строке заголовка менеджера окон.текстСообщение, которое должно появиться
в верхней части диалогового окна.двуцветЕсли значение этого параметра непусто,
то оно задает двуцветное изображение для вывода в верхней части диалогового
окна слева от текста. Если значением является пустая строка, то никакого
двуцветного изображения не выводится.умолчЕсли значение этого параметра является
неотрицательным целым числом, то оно представляет собой номер кнопки, которая
должна быть кнопкой по умолчанию (▒0▓ для самой левой кнопки и т.д.) Если
значение параметра отрицательно или представляет собой пустую строку, то
кнопки по умолчанию не будет.строкаКаждому из аргументов строка
ставится в соответствие одна кнопка. Каждая строка задает текст, который
должен быть выведен в соответствующей кнопке слева направо.
После создания диалогового окна процедура
tk_dialog
ожидает, пока пользователь выберет одну из кнопок либо щелкнув по ней ⌠Мышью■,
либо нажав на клавишу Return, чтобы выбрать значение по умолчанию
(если такое есть). Затем процедура возвращает номер выбранной кнопки: `0▓
для самой левой кнопки, `1▓
для соседней с ней и т.д. Если окно диалога уничтожено до того, как пользователь
выбрал одну из кнопок, то процедура возвращает `-1▓.
В ожидании ответа пользователя tk_dialog
производит локальный захват. В результате пользователь может взаимодействовать
только с окном диалога.
tk_focusFollowsMouse,
tk_focusNext, tk_focusPrev
Утилиты служат для управления фокусом
ввода.СИНТАКСИС tk_focusNextwindow
tk_focusPrevwindow
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 соответствие
образцам устанавливается операционной системой. Возможными расширениями
могут быть:
специальное расширение *, под которое
подходит любой файл;
специальное расширение "", под которое
подходит любой файл без расширения (т.е. файл, имя которого не содержит
точки);
произвольная строка символов, среди которых
нет символов маски (* и ?).
Ввиду того, что на различных платформах
используются различные правила соответствия, появление символов маски в
расширениях не допускается, за исключением специального расширения ▒*▓.
Расширения, в которых нет точки (например, ▒~▓), допустимы, но они могут
работать не на всех платформах.
Выводит окно сообщения и ждет ответа
пользователя.СИНТАКСИС 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_popupmenu
x y ?entry?ОПИСАНИЕПроцедура выводит на дисплей всплывающее
меню при помощи примитива меню menu в позиции, заданной аргументами
x
и
y.
Необязательный аргумент entry указывает индекс некоторой команды
(входа) меню menu, к которой будет относиться выводимое меню.
tkerror
Команда обрабатывает фоновые ошибки.СИНТАКСИСtkerrormessageОПИСАНИЕДанная команда обрабатывает фоновые
ошибки и предназначена для обеспечения совместимости с ранними версиями
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 variablename
tkwait visibilityname
tkwait windowname
ОПИСАНИЕКоманда ожидает наступления одного
из нескольких событий, после этого она завершает работу без выполнения
каких-либо действий. Если первый аргумент команды есть variable,
то name есть имя глобальной переменно, и команда ожидает изменения
значения этой переменной. Если первый аргумент команды есть visibility,
то name есть имя окна, и команда ожидает изменения его состояния
внешних параметров (visibility). Если первый аргумент команды есть window,
то name есть имя окна, и команда ожидает закрытия этого окна.
Подробное описание этих параметров
приведено в разделе 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 -возвращает информацию
об окне.СИНТАКСИСwinfooption ?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 existswindowВозвращает `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 managerwindowВозвращает имя геометрического менеджера,
с помощью которого размещено окно, или пустую строку, если окно не размещено.
Для виджетов возвращается как правило имя 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 pointerxywindowЕсли указатель ⌠Мыши■ находится на
том же экране, что и окно, возвращает список, содержащий x- и y-координаты
пойнтера в пикселях в системе координат корневого окна. Если на экране
есть виртуальное корневое окно, возвращаются координаты в его системе координат.
Если пойнтера ⌠Мыши■ на данном экране нет, возвращается ▒-1▓.winfo pointery windowЕсли указатель ⌠Мыши■ находится на
том же экране, что и окно, возвращает y-координату пойнтера в пикселях
в системе координат корневого окна. Если на экране есть виртуальное корневое
окно, возвращаются координаты в его системе координат. Если пойнтера ⌠Мыши■
на данном экране нет, возвращается `-1▓.winfo reqheightwindowВозвращает десятичную строку, содержащую
необходимую высоту окна. Это та величина, которая используется менеджером
окна при расчете его размеров.winfo reqwidth windowВозвращает десятичную строку, содержащую
необходимую ширину окна. Это та величина, которая используется менеджером
окна при расчете его размеров.winfo rgb window
colorВозвращает список из трех десятичных
величин, указывающих интенсивность красного, зеленого и синего цвета для
цвета color в окне window. Цвет может быть задан в любой
форме, в которой он может задаваться в соответствующих опциях.winfo rootx windowВозвращает десятичную строку, содержащую
x-координату левого верхнего угла рамки окна (или самого окна, если оно
не имеет рамки) в системе координат корневого окна.winfo rooty windowВозвращает десятичную строку, содержащую
y-координату левого верхнего угла рамки окна (или самого окна, если оно
не имеет рамки) в системе координат корневого окна.winfo screen windowВозвращает имя экрана, на котором
отображается окно, в форме ИмяДисплея.ИндексЭкрана.winfo screencellswindowВозвращает число цветов в палитре
по умолчанию для экрана, содержащего данное окно.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-идентификатор класса
(возвращаемого командой winfovisual) для окна window.winfo visualsavailable window ?includeids?Возвращает список, элементы которого
описывают режимы, допустимые для экрана, содержащего окно. Каждый элемент
состоит из имени класса и глубины цвета. Имена класса такие же, как для
команды
winfovisual. Глубина указывает число битов на пиксель. Если
задана опция
includeids, за глубиной следует X-идентификатор класса.winfo vrootheight windowВозвращает высоту виртуального корневого
окна для
window, если такое есть. В противном случае возвращает
высоту экрана, на котором размещено окно window.winfo vrootwidthwindowВозвращает ширину виртуального корневого
окна дляwindow, если такое есть. В противном случае возвращает ширину
экрана, на котором размещено окно window.winfo vrootx windowВозвращает x-координату корневого
окна в системе координат вируального корневого окна. Обычно ▒0▓ или отрицательное
число. Если виртуального корневого окна на существует, возвращет `0▓.winfo vrooty window
Возвращает y-координату корневого
окна в системе координат вируального корневого окна. Обычно ▒0▓ или отрицательное
число. Если виртуального корневого окна на существует, возвращает ⌠0■.winfo width windowВозвращает десятичную строку, содержащую
ширину окна в пикселях. Когда окно только что создано, его размер 1 пиксель.
Через некоторое время оно принимает правильные размеры. Однако, если вы
хотите получить правильные размеры окна сразу после его создания, используйте
перед этим команду update, которая приведет к прорисовке окна и
формированию его правильных размеров, либо команду winfo
reqwidth, которая возвращает требуумые, а не реальные
размеры окна.winfo xwindowВозвращает десятичную строку, содержащую
x-координату левого верхнего угла рамки окна (или самого окна, если оно
не имеет рамки) в системе координат окна ≈ предка.winfo y windowВозвращает десятичную строку, содержащую
x-координату левого верхнего угла рамки окна (или самого окна, если оно
не имеет рамки) в системе координат окна ≈ предка.
СИНТАКСИСwmoption window ?args?ОПИСАНИЕКоманда wm предназначена для
взаимодействия с менеджером окон и обеспечивает таким образом управление
такими атрибутами окон, как заголовок, размеры и размещение, возможность
изменять размер. Команда имеет несколько форм в зависимости от используемых
опций. Во всех формах команда предполагает наличие по крайней мере одного
аргумента ≈ имени toplevel окна.
Если аргументы minNumer,
minDenom, maxNume и maxDenom заданы, они
передаются менеджеру окон, который использует их для определения допустимых
пропорций окна. Пропорции (отношение ширина ≈ высота) могут быть в диапазоне
от minNumer/minDenom до maxNumer/maxDenom. Если аргументы
minNumer
и т.д. определены как пустые строки, то существующие ограничения на пропорции
отменяются. Если аргументы minNumer и т.д. заданы, то команда возвращает
пустое значение. В противном случае она возвращает список из четырех элементов
≈ текущих значений minNumer, minDenom, maxNumer,
и maxDenom (если ограничения не заданы, возвращается пустая строка).wm clientwindow ?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 focusmodelwindow
?active|passive?
Если тип фокуса для (active
или passive) окна указан в команде, он определяет какой тип фокуса
будет использоваться. В этом случае команда возвращает пустую строку. Если
тип фокуса не указан, команда возвращает текущее значение типа. Активный
тип фокуса означает, что окно запрашивает фокус ввода себе или своим потомкам,
даже если в этот момент фокус находится в другом приложении. Пассивный
фокус означает, что окно не запрашивает фокус, а получает его от менеджера
окон. Однако, после того, как окно или один из его потомков получил фокус,
приложение может передать его другому потомку окна. По умолчанию устанавливает
пассивный фокус.wmframe windowЕсли окно заключено менеджером окон
в декоративную рамку, команда возвращает идентификатор самой внешней рамки,
которая содержит окно (окно, являющееся потомком корневого окна или виртуального
корневого окна). Вид идентификатора зависит от платформы. Если окно не
заключено в рамку, возвращается идентификатор окна, вид которого также
зависит от платформы.wmgeometrywindow
?newGeometry?
Если задан аргумент newGeometry,
размеры и размещение окна изменяются, а команда возвращает пустую строку.
В противном случае возвращается последняя информация о размерах и размещении
окна (независимо от того, была ли она задана путем изменения размеров окна
вручную или с помощью команды wm). Аргумент newGeometry должен
быть задан в следующем виде =ширинаxвысота╠x╠y, где любая из частей
=ширинаxвысота
или ╠x╠y может быть опущена. Ширина и высота должны быть положительными
целыми числами, задающими желаемый размер окна. Если для окна задана сетка
(см. ⌠Управление окнами с сеткой■),
размеры указываются в шагах сетки. В противном случае размеры указываются
в пикселях. X и Y определяют желаемое размещение окна на экране
в пикселях. Если перед x стоит ▒+▓, то величина
x
определяет расстояние от левого края экрана до левого края окна, в противном
случае x задает расстояние от правого края экрана до правого края
окна. Если перед y стоит ▒+▓, то величина y определяет расстояние
от верхнего края экрана до верхнего края окна, в противном случае
y
задает расстояние от низа экрана до нижнего края окна. Если аргумент
newGeometry
задан как пустая строка, текущие установленные пользователем размеры окна
отменяются и окно приобретает размеры, определяемые размерами составляющих
его виджетов.
Команда определяет наличие сетки
в окне и позволяет задать шаг сетки в пикселях. BaseWidth и baseHeight
определяют в единицах сетки исходный размер окна (определяемый, исходя
из размеров виджетов). WidthInc и heightInc определяют соответственно
горизонтальный и вертикальный шаг сетки. Таким образом, эти четыре величины
определяют множество допустимых размеров окна. После выполнения этой команды
команда wm geometry считает размеры окна заданными в шагах сетки.
Более того, при ручном изменении размеров менеджер окон показывает размер
окна в шагах (ячейках) сетки и позволяет изменять размер только дискретно
в целых шагах сетки.
Если BaseWidth и последующие
аргументы команды ≈ пустые строки, команда указывает, что окно больше не
имеет сетки.Если BaseWidth и последующие
аргументы заданы, команда возвращает пустую строку. В противном случае
команда возвращает список из четырех элементов, содержащий текущие значения
BaseWidth
и последующих аргументов. Если окно не имеет сетки ≈ возвращается пустая
строка.
Замечание. Потребность
в использовании команды wm grid возникает относительно редко, поскольку
той же функциональности поведения окна можно добиться, например, с помощью
опции setGrid в командах создания виджетов.
wm groupwindow
?pathName?
Если аргумент pathName указан,
окно pathName становится лидером группы для window. Менеджер
окон использует эту информацию, например, для того, чтобы одновременно
выводить с экрана все окна группы, если сворачивается лидер группы. Если
аргумент pathName представлен пустой строкой, окно window
выводится из состава группы.
Если аргумент pathName задан,
команда возвращает пустую строку. В противном случае команда возвращает
имя текущего лидера группы для окна window или пустую строку, если
лидер не определен.
wm iconbitmapwindow
?bitmap?
Если аргумент bitmap задан,
он определяет имя растрового образа, которое передается менеджеру окон
для использования в качестве иконки. Имя образа может быть задано в одной
из следующих форм:
@ИмяФайла ≈ файл должен
содержать описание растрового рисунка в формате, соответствующем стандарту
X11 или X10;
name ≈ имя образа типа bitmap,
ранее созданного в приложении.
Если аргумент bitmap представляет
собой пустую строку, отменяется использование ранее заданного образа.
Если аргумент bitmap задан,
команда возвращает пустую строку. В противном случае команда возвращает
имя образа, используемого джля иконки, либо пустую строку, если образ не
задан.
wm iconifywindow
Команда сворачивает указанное окно.
Если окно еще не было размещено на экран, оно появится, когда это произойдет,
в виде иконки.wm iconmaskwindow
?bitmap?Если аргумент bitmap задан,
он определяет имя растрового образа, которое передается менеджеру окон
для использования в качестве маски для иконки. Там, где маска имеет значение
⌠0■, образ иконки не отображается; там, где маска имеет значение ⌠1■, маска
рисуется. Имя образа может быть задано в одной из следующих форм:
@ИмяФайла ≈ файл должен содержать описание
растрового рисунка в формате, соответствующем стандарту X11 или X10;
name ≈ имя образа типа bitmap,
ранее созданного в приложении.
Если аргумент bitmap представляет
собой пустую строку, отменяется использование ранее заданной маски (это
эквивалентно заданию маски из одних единиц).
Если аргумент bitmap задан,
команда возвращает пустую строку. В противном случае команда возвращает
имя образа, используемого для маски для данного окна, либо пустую строку,
если маска не задана.
wm iconnamewindow
?newName?
Если аргумент newName задан,
он передается менеджеру окон для использования в качестве имени иконки
для окна. В этом случае команда возвращает пустую строку. Если аргумент
newNameне
задан, команда возвращает текущее имя иконки для окна; если имя иконки
не задано, команда возвращает пустую строку (в этом случае менеджер окон
использует в качестве имени иконки имя окна, заданное с помощью команды
wmtitle).wm iconpositionwindow ?x y?Если аргументы x и y
заданы, они передаются менеджеру окон и используются как подсказка при
размещении иконки окна window. В этом случае команда возвращает
пустую строку. Если
x и y представляют собой пустые строки,
команда отменяет ранее определенную подсказку для размещения иконки. Если
аргументы x и y не заданы, команда возвращает текущее значение
подсказки (или пустую строку, если она не задана).wm iconwindowwindow
?pathName?Если аргумент pathName указан,
он определяет имя окна, которое используется в качестве иконки для окна
window:
кодгда окно window свертывается, появляется окно
pathName,
которое используется в качестве иконки. Когда окно window разворачивается,
окно pathName выводится с экрана. Если аргумент
pathName
представляет собой пустую строку, ранее определенное окно больше не используется
как иконка.
Если аргумент pathName указан,
команда возвращает пустую строку. В противном случае команда возвращает
имя окна, ранее заданного в качестве иконки, или пустую строку, если ранее
оно не было задано.
Нажатие на кнопку ⌠Мыши■ в окне-иконке
не обрабатываются приложением, что позволяет обрабатывать эти события менеджеру
окон.
Замечание. Не все менеджеры окон позволяют
использовать Tk-окно в качестве иконки.
wm maxsizewindow
?width height?
Если аргументы width и height
заданы, они задают максимальный возможный размер окна. Если в окне определена
сетка, размеры указываются в шагах сетки. В противном случае размеры указываются
в пикселях. Менеджер окон не позволяет окну становиться больше, чем задано
в команде.
Если аргументы width и height
заданы, команда возвращает пустую строку, в противном случае она возвращает
список, содержащий два элемента: текущие ограничения на размер окна. По
умолчанию максимальные размеры окна равны размеру экрана. Если изменение
размеров окна запрещено с помощью команды wmresizable, команда
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 positionfromwindow
?who?
Если аргумент who задан, он
должен иметь одно из двух значений program или user (или
произвольное сокращение от одного из них). Оно определяет, будет ли размещение
окна определяться программой или пользователем. Многие менеджеры окон игнорируют
запрошенное программой начальное размещение окна и требуют от пользователя
разместить его вручную. Если задано значение user, менеджер окон
не требует этого от пользователя. Если аргумент who задан как пустая
строка, текущая установка отменяется.
Если аргумент who задан, команда
возвращает пустую строку. В противном случае команда возвращает установленное
ранее значение или пустую строку, если значение не было установлено. Большинство
менеджеров окон считают, что если ⌠источник⌠ не задан, это то же самое,
что program. Tk автоматически устанавливает значение user
при выполнении команды
wm geometry, если ранее не было установлено
явно значение program.
wm protocolwindow
?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 resizablewindow
?width height?
Эта команда управляет возможностью
пользователя интерактивно изменять размеры окна. Если аргументы width и
height
заданы, они должны быть булевыми величинами, определяющими, может ли пользователь
изменять в интерактивном режиме ширину и высоту окна соответственно. Команда
при этом возвращает пустую строку. Если аргументы
width и height
отсутствуют, команда возвращает список из двух элементов, принимающих значение
▒0▓ или ▒1▓ и указывающих, может ли пользователь изменять высоту и ширину
окна соответственно. По умолчанию пользователь может изменять размеры окна
в обоих направлениях.
Если изменение размеров окна пользователем
запрещено, то либо сохраняются те размеры окна, которые были получены в
результате последнего выполненного пользователем изменения размеров, либо
размеры окна устанавливаются с помощью команды wm geometry. Если
этих действий не было, используются размеры окна, определяемые размерами
составляющих его виджетов.
wm sizefrom window ?who?Если аргумент who задан, он
должен иметь одно из двух значений program или user (или
произвольное сокращение от одного из них). Оно определяет, будет ли размер
окна определяться программой или пользователем. Многие менеджеры окон игнорируют
запрошенный программой начальный размер окна и требуют от пользователя
определить его размер вручную. Если задано значение user, менеджер окон
не требует этого от пользователя. Если аргумент who задан как пустая
строка, текущая установка отменяется.
Если аргумент who задан, команда
возвращает пустую строку. В противном случае команда возвращает установленное
ранее значение; если значение не было установлено, команда возвращает пустую
строку. Большинство менеджеров окон считают, что если ⌠источник⌠ не задан,
это то же самое, что program.
wm statewindowКоманда возвращает текущее состояние
окна: normal, iconic, withdrawn
или icon. Разница между
iconic и icon в том, что iconic
используется для свернутого окна (например, с помощью команды wm iconify
), а icon ≈ для окна, которое используется в качестве иконки для
другого окна (с помощью команды
wm iconwindow).wm titlewindow ?string?Если аргумент string определен,
он передается менеджеру окон для использования в качестве имени (титула)
окна, которое менеджер окон высвечивает на рамке окна. В этом случае команда
возвращает рустую строку. Если аргумент string не задан, команда
возвращает ранее установленный заголовок. По умолчанию титул окна совпадает
с его полным именем как виджета.wm transientwindow
?master?Если аргумент master задан,
команда передает менеджеру окон информацию о том, что окно window
является временным окном (например, выпадающим меню), работающим под управлением
master-окна (где master ≈ полное имя toplevel-окна). Некоторые менеджеры
окон используют эту информацию для того, чтобы управлять таким окном специальным
образом. Если аргумент master представляет собой пустую строку,
окно перестает быть временным окном.
Если аргумент master задан,
команда возвращает пустую строку. В противном случае она возвращает имя
управляющего окна или пустую строку, если окно window не является
временным.
wm withdrawwindowПри выполнении команды окно window
удаляется с экрана. Информация о нем удаляется из менеджера окон. Если
окно не присутствовало на экране ранее, оно не появится на экране при создании.
Но не все менеджеры окон знают, как работать с такими окнами!Замечание. Иногда оказывается
необходимым удалить окно с помощью команды wm withdraw, а затем
возвратить его обратно на экран (например, с помощью команды wmdeiconify),
чтобы менеджер окон учитывал некоторые его атрибуты, например, группу.УПРАВЛЕНИЕ
ГЕОМЕТРИЕЙПо умолчанию toplevel-окна при появлении
на экране имеют размеры, определяемые размерами составляющих его виджетов
(⌠естественные⌠ размеры). Если изменяются размеры или состав виджетов,
то изменяется и размер toplevel-окна. Для toplevel-окна размеры, отличные
от ⌠естественных⌠, могут быть заданы двумя способами. Первый ≈ пользователь
может изменить размеры окна вручную, используя стандартные механизмы менеджера
окон. Второй ≈ приложение может запросить изменение размеров окна с помощью
команды
wm geometry. Оба зти способа обрабатываются в Tk единообразно.
Размеры окна изменяются на новые, отличные от ⌠естественных⌠. Чтобы вернуть
⌠естественные⌠ размеры окна, нужно выполнить команду wm geometry
с пустой строкой в качестве аргумента, задающего размеры и размещение окна.
Обычно размеры окна могут изменяться
произвольно в диапазоне от 1 пикселя до размеров экрана. Однако, с помощью
команд wm minsize и wmmaxsize можно изменить область
возможных размеров окна. Эти ограничения будут использоваться при всех
способах изменения размеров окна, в том числе и при ручном изменении, и
при изменении размеров и состава его виджетов, приводящем к изменению его
⌠естественных⌠ размеров. С помощью команды wm resizable можно полностью
запретить изменение размеров окна каким-либо способом в одном или в обоих
направлениях.
УПРАВЛЕНИЕ
ОКНАМИ С СЕТКОЙОкна с сеткой используются, если
один из виджетов окна имеет ограниченное множество ⌠разумных⌠ размеров.
Например, в текстовом редакторе, где полосы прокрутки, меню и т. д. имеют
фиксированный размер, а поле редактирования текста может содержать произвольное
число строк или букв в строке. В этом случае желательно дать пользователю
возможность устанавливать непосредственно число строк или букв в строке
при изменении размеров окна как вручную, так и с помощью команды wm
geometry. Как в случае с текстом, так и в других аналогичных, ⌠разумным⌠
является не всякий размер окна в пикселях, а только размеры, соответствующие
целому числу строк или букв в строке.
Введение сетки обеспечивает механизм
для реализации этих требований. Tk (и менеджер окон) предполагают существование
сетки в окне, и что ⌠разумными⌠ являются только размеры, выраженные в целых
шагах сетки, а не в произвольном числе пикселей. Обычно сетка устанавливается
с помощью опции setGrid для соответствующего виджета. Она может
также устанавливаться с помощью команды wm grid. В любом случае
с помощью виджета или кода приложения определяются размеры окна в пикселях,
соответствующие целым размерам в шагах сетки. Чтобы отменить сетку, нужно
выполнить команду wm grid с пустой строкой, задающей сетку.
Если сетка задана, все определения
размеров в командах
wm minsize, wm maxsize
и wm geometry считаются заданными
в шагах сетки, а не в пикселях. Ручное изменение размеров окна также производится
в целых шагах сетки.
ОШИБКИКак оказалось, большинство существующих
менеджеров окон имеют некоторые ошибки, которые проявляются при выполнении
команды
wm. Например, некоторые изменения не производятся в окне,
если оно активно. Окно должно быть выведено с экрана и возвращено обратно,
чтобы изменения выполнились.