Tk (от  — «набор инструментов», «инструментарий») — кроссплатформенная библиотека базовых элементов графического интерфейса, распространяемая с открытыми исходными текстами.

Tk был разработан Джоном Аустерхаутом как расширение для интерпретируемого языка программирования Tcl. Также, с использованием специальных библиотек, Tk может использоваться другими языками программирования, например Ада (TASH), Go, Haskell (HTk), Perl (Tcl::Tk, Tkx и Perl/Tk), Python (Tkinter), R (tcltk), Ruby, REXX, Common Lisp. Из них большинство использует Tcl как мост для Tk, например Tcl::Tk и Tkx в Perl, Tkinter в Python. Некоторые, однако, используют прямой (native) доступ к структурам Tk, например Perl/Tk.

Tk портирован на большинство реализаций Linux, macOS, Unix и Microsoft Windows. Начиная с Tcl/Tk 8 графический интерфейс имеет «родной» для ОС вид, то есть графические элементы будут выглядеть так же, как и стандартные для данной ОС. В версии 8.5 в Tk появилась возможность использовать движок для отрисовки элементов с поддержкой тем оформления — Ttk. Кроме того, есть несколько расширений, обеспечивающих drag-and-drop с внешними приложениями, непрямоугольные окна и ряд других возможностей.

Tk представляет разработчику набор Tcl-команд, предназначенных для создания компонентов и выполнения различных действий с ними. Компонент представляет собой окно в составе графического интерфейса, имеющее определённый внешний вид и выполняющее некоторые функции.

Компоненты организованы в иерархическую структуру. С точки зрения приложения существует главное, или первичное, окно, в котором создаются дочерние окна. Дочерние окна, в свою очередь, могут выступать в качестве родительских по отношению к другим окнам. Компонентами управляют диспетчеры компоновки (geometry manager), которые определяют размеры компонентов и их размещение на экране.

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

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

Для Tk существуют наборы дополнительных компонентов, например, BWidget, Tix или incr Widgets. Особо стоит выделить BWidget, так как преимуществом его использования является отсутствие необходимости в компиляции под определённую платформу (код тулкита представляет собой «чистый» Tcl).

Функции Tk предоставляет различные виджеты. Базовые виджеты встроены в виджеты верхнего уровня (toplevel), которые, в свою очередь, обычно размещаются операционной системой в плавающих окнах, которые можно перемещать по экрану.Widgets, Chapter 17.2 in Tcl and the Tk Toolkit ,

Базовые виджеты

Виджеты верхнего уровня tk_chooseColor – открывает диалоговое окно, в котором пользователь может выбрать цвет. tk_chooseDirectory – открывает диалоговое окно, позволяющее пользователю выбрать каталог. tk_dialog – создаёт модальный диалог и ждёт ответа. tk_getOpenFile – открывает диалоговое окно, в котором пользователь может выбрать файл для открытия. tk_getSaveFile – открывает диалоговое окно, в котором пользователь может выбрать файл для сохранения. tk_messageBox – выводит окно с сообщением и ждёт ответа пользователя. tk_popup – публикует всплывающее меню. toplevel – создаёт и управляет виджетами верхнего уровня.

Менеджеры геометрии Базовые виджеты размещаются в окнах верхнего уровня (toplevel) с помощью менеджеров геометрии:Geometry Managers, Chapter 17.6 in Tcl and the Tk Toolkit , place – размещает виджеты в абсолютных местах grid – располагает виджеты в сетке pack – упаковывает виджеты в полость

Примечания

Литература

Ссылки Tcl/Tk www.tcl.tk — официальный сайт TkDocs site Tk 8.6 Manual Tcl/Tk 8.6.2 Documentation ActiveTcl 8.6 Documentation

Ada/Tk TASH — is an Ada binding to Tcl/Tk

C++/Tk CPPTk — Tk для C++

Haskell/Tk HTk — обёртка над библиотекой Tcl/Tk для функционального языка программирования Haskell

Lisp/Tk LTK — Tk для Common Lisp

Perl/Tk Tkx::Tutorial — учебное пособие по Perl/Tk

Python/Tk Tkinter

Ruby/Tk Learn Tk — учебное пособие по Ruby/Tk

SML/Tk sml_tk: Functional Programming for Graphical User Interfaces — Tk для Standard ML

Категория:Свободные библиотеки программ Категория:Библиотеки виджетов