Tk — это кроссплатформенный набор инструментов для виджетов , который предоставляет библиотеку основных элементов виджетов с графическим пользовательским интерфейсом для создания графического пользовательского интерфейса (GUI) на многих языках программирования. Это бесплатное программное обеспечение с открытым исходным кодом, выпущенное под лицензией на программное обеспечение в стиле BSD .
Tk предоставляет множество виджетов, обычно необходимых для разработки настольных приложений, таких как кнопки, меню, холст, текст, рамка, метка и т. д. Tk был портирован для работы на большинстве версий Linux , macOS , Unix и Microsoft Windows . Как и Tcl , Tk поддерживает Unicode в базовой многоязычной плоскости , но он еще не расширен для поддержки текущего расширенного полного 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-х годах, Оустерхауту была вручена награда ACM Software System Award в 1997 году за Tcl/Tk: [12]
Для языка сценариев Tcl, который позволяет разработчикам создавать сложные системы из уже существующих компонентов. Встроенный Tk предоставляет простой механизм создания графических пользовательских интерфейсов. Вместе они составляют мощное дополнение к репертуару программного обеспечения.
Интерес к Тк значительно снизился с конца 1990-х годов и позже. Внешний вид по умолчанию в Unix по-прежнему эмулировал Motif , несмотря на массовую замену Motif такими наборами инструментов, как FLTK , Qt и GTK . [13] Виджеты, которые стали широко использоваться в приложениях (например, деревья, поля со списком, блокноты с вкладками), не были доступны в ядре Tk, а только через несколько, часто конкурирующих надстроек. [14]
В версии Tk 8.5, выпущенной в конце 2007 года, некоторые из этих проблем были исправлены путем добавления в ядро отсутствующих виджетов, введения нового механизма тем и модернизации внешнего вида Unix. [8] Однако, поскольку для включения этих усовершенствований потребовались некоторые изменения кода, многие существующие приложения сохраняют старое ощущение, вдохновленное Motif, которым стал известен Tk. [15]
Tk — это независимая от платформы платформа графического интерфейса , разработанная для Tcl. Из оболочки Tcl (tclsh) Tk можно вызвать с помощью команды package require Tk
. Программа WIndowing SHell позволяет запускать оболочку tclsh в графическом окне, а также предоставляет Tk. [16]
Тк имеет следующие характеристики:
Библиотека, написанная на одном языке программирования, может использоваться на другом языке, если написаны привязки ; Tk интегрирован с языком Tcl. Различные другие языки имеют привязки для Tk, неполный список которых можно найти на веб-сайте Tk. [20] Существуют привязки для дополнительных языков, которые могут отсутствовать в списке, включая Ada (называемый TASH), [21] Haskell (называемый HTk), [22] Perl , Python (называемый Tkinter ), R (через стандартный пакет: tcltk). , Ruby , Rexx и Common Lisp .
Существует несколько способов использования Tk из Perl : модули Perl Tcl::Tk и Tkx, [23] оба из которых используют Tcl в качестве моста для доступа к Tk, и Perl/Tk, [24] который обеспечивает собственный доступ Perl к Tk. структуры. Привязка Python использует Tcl в качестве моста к Tk. [25]
Тк предоставляет различные виджеты. [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
— упаковывает виджеты в полость