UR4QTP: записная книжка 

Программирование на Tcl/Tk. Мой конспект

Tk. Общие сведения

Tk расширяет возможности Tcl в сторону использования графического интерфейса, предоставляя возможности программисту создавать компоненты (окна) и выполнять с ними различные действия. Компонент – это окно, имеющее определённый внешний вид и способное поддерживать определённые функции. Термины «компонент» и «окно» могут употребляться как синонимы. Примеры компонентов: кнопка, полоса прокрутки, окошко для ввода текста.


Wish: запуск Tk

Так же как и Tcl, Tk может использоваться либо из сценариев, либо непосредственно из командной строки. Для вызова Tk используется команда

wish

Признаком приглашения ко вводу команд интерпретатора в интерактивном режиме, как и в Tcl, служит символ %, после которого располагается курсор. При этом также формируется пустое окно, которое в дальнейшем, при использовании соответствующих команд, может быть наполнено компонентами «вручную».


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

Иерархия влияет на именование компонентов. Главное окно обозначается точкой (.). Вложенные в главное окна имеют имя, начинающиеся с точки: .кнопка, .фрейм.кнопка. Таким образом, имя вложенного окна отделяется от имени родительского точкой, точно таким же образом, как в файловой системе Linux для этой цели применяется косая черта (/). Очевидно, что точка не может присутствовать в имени самого компонента.

Wish. Операция config

Каждый компонент имеет свои атрибуты. Атрибуты имеют значения по умолчанию, также значения атрибутов могут быть заданы явно при создании компонента. Например, цвет шрифта и цвет фона у текста.

Каждый вновь созданный компонент становится новой Tcl-командой. Все команды-имена компонентов поддерживают опцию configure (можно применять укороченное config), которая позволяет определять или изменять текущие значения атрибутов компонента. После указания операции config задаются такие же пары опция-значение, как и при создании компонента. Другие опции представляют собой имя атрибута с предшествующим ему дефисом, после чего должно следовать значение атрибута.


Компоненты по мере их компоновки выстраиваются в некую «очередь» – стек окон. Новые компоненты по умолчанию занимают вершину стека и визуально располагаются поверх компонентов, созданных ранее, поскольку позиция в стеке определяет отображение на экране. При необходимости изменить позицию компонента в стеке, а следовательно, и его видимость на экране, можно использовать команды lower и raise.

Размерами компонентов и их размещением управляют диспетчеры компоновки, в качестве которых применяются grid, pack, place и panedwindow. Они используются как простые команды Tcl. Как и любые оконные приложения, компоненты Tk обрабатывают события (нажатия клавиш, движение мыши). Часть событий обрабатываются автоматически, при необходимости с событием при помощи команды bind связывается последовательность команд Tcl. Все компоненты одного уровня (например, все дочерние окна главного окна) должны управляться только одним диспетчером, иначе программа окажется в бесконечном цикле. Компоненты следующего уровня могут управляться другим диспетчером.

Окно верхнего уровня управляется с помощью диспетчера окон wm. Диспетчер позволяет открыть, закрыть, свернуть, развернуть окно, изменить строку заголовка, обрамление и размер окна.

Подробная информация о компонентах может быть получена при помощи команды winfo.

Как правило, выполнение сценария Tk начинается с создания компонентов и их размещения при помощи диспетчера компоновки, потом с компонентами связываются обработчики событий. После этого интерпретатор переходит к отслеживанию событий, начиная реагировать на действия пользователя.



 UR4QTP: записная книжка