Tk — кроссплатформенный набор инструментов для виджетов , который предоставляет библиотеку базовых элементов виджетов GUI для создания графического пользовательского интерфейса (GUI) на многих языках программирования. Это бесплатное программное обеспечение с открытым исходным кодом, выпущенное под лицензией программного обеспечения в стиле BSD .
Tk предоставляет множество виджетов, обычно необходимых для разработки настольных приложений, таких как кнопка, меню, холст, текст, рамка, метка и т. д. Tk был портирован для работы на большинстве разновидностей Linux , macOS , Unix и Microsoft Windows . Как и Tcl , Tk поддерживает Unicode в пределах Basic Multilingual Plane , но он еще не был расширен для обработки текущего расширенного полного Unicode (например, UTF-16 из UCS-2, который поддерживает Tk).
Tk был разработан с возможностью расширения, и доступен широкий спектр расширений, которые предлагают новые виджеты или другие возможности. [4] [5]
Начиная с Tcl/Tk 8, он предлагает «родной вид и ощущения» (например, меню и кнопки отображаются в стиле «родного» программного обеспечения для любой платформы). [6] Основные моменты версии 8.5 включают новый движок тем, первоначально называвшийся Tk Tile, [7] но теперь его обычно называют «тематическим Tk», а также улучшенную визуализацию шрифтов. [8] Основные моменты версии 8.6 включают поддержку PNG и наклонного текста. [9]
Tk был разработан Джоном Оустерхаутом как расширение для языка сценариев Tcl . Впервые он был публично выпущен в 1991 году. [10] Версионирование Tk осуществлялось отдельно от Tcl до версии 8.0.
Tk был изначально написан для Unix/X11 и оказался чрезвычайно популярен среди программистов в 1990-х годах благодаря тому, что его было легче изучать и использовать, чем Motif и другие наборы инструментов X11 того времени. [11] Tk также был портирован на платформы Microsoft Windows и Macintosh, начиная с Tk 4.2 и улучшен с нативным внешним видом и поведением в Tk 8.0 (выпущен в 1997 году). Чтобы отметить популярность и значимость Tk в 1990-х годах, Оустерхауту в 1997 году была вручена премия ACM Software System Award за Tcl/Tk: [12]
Для языка сценариев Tcl, который позволяет разработчикам создавать сложные системы из уже существующих компонентов. Встроенный Tk обеспечивает простой механизм для создания графических пользовательских интерфейсов. Вместе они создают мощное дополнение к программному репертуару.
Интерес к Tk значительно ослабел с конца 1990-х и далее. Внешний вид и поведение по умолчанию в Unix по-прежнему эмулировали Motif , несмотря на массовую замену Motif такими инструментами, как FLTK , Qt и GTK . [13] Виджеты, которые стали широко использоваться в приложениях (например, деревья, выпадающие списки , блокноты с вкладками), не были доступны в ядре Tk, а только через несколько, часто конкурирующих дополнений. [14]
Tk 8.5, выпущенный в конце 2007 года, исправил некоторые из этих проблем, добавив отсутствующие виджеты в ядро, внедрив новый движок тем и модернизировав внешний вид и поведение в Unix. [8] Однако, поскольку для внедрения этих улучшений потребовались некоторые изменения кода, многие существующие приложения сохраняют старый стиль, вдохновленный Motif, которым и прославился Tk. [15]
Tk — это платформенно-независимый GUI- фреймворк , разработанный для Tcl. Из оболочки Tcl (tclsh) Tk может быть вызван с помощью команды package require Tk
. Программа wish (WIndowing SHell) предоставляет способ запуска оболочки tclsh в графическом окне, а также предоставляет Tk. [16]
Tk имеет следующие характеристики:
Библиотека, написанная на одном языке программирования, может использоваться на другом языке, если написаны привязки ; Tk интегрирован с языком Tcl. Различные другие языки имеют привязки для Tk, частичный список которых находится на веб-сайте Tk. [20] Существуют привязки для дополнительных языков, которые могут не быть перечислены, включая Ada (называется TASH), [21] Haskell (называется HTk), [22] Perl , Python (называется Tkinter ), R (через стандартный пакет: tcltk), Ruby , Rexx и Common Lisp .
Существует несколько способов использования Tk из Perl : модули Tcl::Tk и Tkx Perl, [23] оба из которых используют Tcl в качестве моста для доступа к Tk, и Perl/Tk, [24] который обеспечивает собственный доступ Perl к структурам Tk. Связывание Python использует Tcl в качестве моста к Tk. [25]
Tk предоставляет различные виджеты. [26] Базовые виджеты встроены в toplevel
виджеты, которые в свою очередь обычно размещаются операционной системой в плавающих окнах, которые можно перемещать по экрану. [27]
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
окнах с помощью менеджеров геометрии: [28]
place
– размещает виджеты в абсолютных местахgrid
– размещает виджеты в сеткеpack
– упаковывает виджеты в полость