Tk (программа)

Tk

Tk 8.6.6 в Windows 10
Тип библиотека элементов графического интерфейса пользователя
Автор ДжонАустерхаут
Разработчик Tcl Core Team[1]
Написана на Си
Операционная система Кроссплатформенное программное обеспечение
Первый выпуск 1991 (1991)
Аппаратная платформа Кроссплатформенное программное обеспечение
Последняя версия
Репозиторий core.tcl-lang.org/tk/tim…
Лицензия BSD-style[3]
Сайт tcl.tk

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

Tk был разработан Джоном Аустерхаутом как расширение для интерпретируемого языка программирования Tcl. Также, с использованием специальных библиотек, Tk может использоваться другими языками программирования[4], например Ада (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[5]. Кроме того, есть несколько расширений, обеспечивающих drag-and-drop с внешними приложениями, непрямоугольные окна и ряд других возможностей.

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

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

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

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

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

Функции

Tk предоставляет различные виджеты.[9] Базовые виджеты встроены в виджеты верхнего уровня (toplevel), которые, в свою очередь, обычно размещаются операционной системой в плавающих окнах, которые можно перемещать по экрану.[10]

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

  • button
  • canvas
  • checkbutton
  • combobox
  • entry
  • frame
  • label
  • labelframe
  • listbox
  • menu
  • menubutton
  • message
  • notebook
  • panedwindow
  • progressbar
  • radiobutton
  • scale
  • scrollbar
  • separator
  • sizegrip
  • spinbox
  • text
  • tk_optionMenu
  • treeview

Виджеты верхнего уровня

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

Менеджеры геометрии

Базовые виджеты размещаются в окнах верхнего уровня (toplevel) с помощью менеджеров геометрии:[11]

  • place – размещает виджеты в абсолютных местах
  • grid – располагает виджеты в сетке
  • pack – упаковывает виджеты в полость

Примечания

  1. Tcl/Tk Core Development. Tcl Developer Xchange. Дата обращения: 1 ноября 2016.
  2. [TCLCORE Tk 9.0.2 RELEASED] — 2025.
  3. Tcl/Tk Licensing Terms. Tcl Developer Xchange. Дата обращения: 4 ноября 2016.
  4. Tcl Wiki | Languages with a Tk binding. Дата обращения: 3 апреля 2014. Архивировано 6 июля 2014 года.
  5. Ttk. Дата обращения: 15 июня 2009. Архивировано 8 ноября 2016 года.
  6. BWidget. Дата обращения: 15 июня 2009. Архивировано 5 декабря 2012 года.
  7. Tix. Дата обращения: 15 июня 2009. Архивировано 13 ноября 2012 года.
  8. incr Widgets. Дата обращения: 15 июня 2009. Архивировано 17 ноября 2012 года.
  9. Tk Commands, version 8.6.6. Tcl Developer Xchange. Дата обращения: 1 ноября 2016.
  10. Widgets, Chapter 17.2 in Tcl and the Tk Toolkit , ISBN 978-0321336330
  11. Geometry Managers, Chapter 17.6 in Tcl and the Tk Toolkit , ISBN 978-0321336330

Литература

  • Брент Б. Уэлш, Кен Джонс, Джеффри Хоббс. Практическое программирование на Tcl и Tk = Practical Programming in Tcl and Tk. — 4-е изд. — М.: «Вильямс», 2004. — С. 1136. — ISBN 0-13-038560-3.

Ссылки

Tcl/Tk
Ada/Tk
  • TASH (англ.) — is an Ada binding to Tcl/Tk
C++/Tk
  • CPPTk (англ.) — Tk для C++
Haskell/Tk
  • HTk (англ.) — обёртка над библиотекой Tcl/Tk для функционального языка программирования Haskell
Lisp/Tk
Perl/Tk
Python/Tk
Ruby/Tk
  • Learn Tk (англ.) — учебное пособие по Ruby/Tk
SML/Tk