Tk 技术专题简介-编程知识网

简介

  此条目介绍的是一款部件工具箱。关于其他用法,请见“TK”。TkWindows 10上运行的 Tk 8.6.6 截图原作者约翰·奥斯特豪特(英语:John Ousterhout)开发者Tcl Core Team首次发布1991年,​32年前​(1991)当前版本8.6.13 (2022年11月22日;稳定版本) 源代码库core.tcl.tk/tk 编程语言C操作系统跨平台系统平台跨平台类型部件工具箱许可协议BSD-风格网站www.tcl.tkTk是一开放源代码的图形用户界面开发工具,提供许多常用的图形接口组件(像是菜单、按钮之类),具有跨平台、轻量化等特色。Tk最初发展于1991年,是以Tcl脚本语言撰写的扩展,目前另有Perl、Python、Ruby、Common Lisp等多种版本,并可在Linux、Unix、Apple Macintoch、Windows等平台上运行。从Tcl/Tk 8开始,软件搭建的图形界面看起来将“与本地系统一致”。8.5版引入了一个新的主题引擎,它在字体渲染方面也有改进。该引擎最初叫Tk Tile,但现在通常被称为”themed Tk”。8.6版的更新则支持了PNG格式,以及倾斜文字。

架构

在Tk中,运用Tcl脚本编写跨平台图形用户界面框架。使用Tcl Shell(Tclsh),以命令package require Tk调用Tk。在图形操作系统下,Wish(英语:Wish_(Unix_shell))提供了包含Tclsh和Tk的图形窗口环境。

Tk有以下特性:

平台独立:与Tcl一样,Tk也是解释型的。各种平台下的Tcl实现是统一的,因此Tk程序可无需修改地移植至各种平台。

可定制:Tcl中几乎所有的特性都是可以修改的,可通过初始化选项或运行时的命令修改。

可保存:很多选项出存在数据库中,例如界面的颜色设置。这些选项能保存下来,在再次加载程序时读取。

语言绑定

通过语言绑定,以Tcl实现的Tk可在其他编程语言中调用。已有多种语言支持Tk,完整的列表见于Tk的网站。 例如Ada中的TASH模块 Haskell中的HTk,Perl,Python中的Tkinter模块,Ruby,REXX, 以及Common Lisp。

在Perl中调用Tk用多种方法: Tcl::Tk模块以及Tkx模块均适用Tcl作为桥梁;而Perl/Tk直接使用Perl实现Tk。Python的Tkinter模块使用与Tcl的语言绑定实现Tk。

特性

Tk提供了多种部件。基本部件集成在toplevel部件里,作为可移动的浮动窗口,通常由操作系统管理。

基本特性

.mw-parser-output .div-col{margin-top:0.3em;column-width:30em;column-count:2}.mw-parser-output .div-col-small{font-size:90%}.mw-parser-output .div-col-rules{column-rule:1px solid #aaa}.mw-parser-output .div-col dl,.mw-parser-output .div-col ol,.mw-parser-output .div-col ul{margin-top:0}.mw-parser-output .div-col li,.mw-parser-output .div-col dd{page-break-inside:avoid;break-inside:avoid-column}

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的基本部件使用图形管理器管理。

place – 定位部件至给定的绝对位置

grid – 将部件按网格排列

pack – 将部件打包

参考资料

^ Tcl/Tk Core Development. Tcl Developer Xchange. . (原始内容存档于2016-10-30). 

^ Tcl/Tk 8.6.13 RELEASED. 

^ Tcl/Tk Licensing Terms. Tcl Developer Xchange. . (原始内容存档于2018-06-27). 

^ Tcl/Tk 8.0. Tcl Developer Xchange. 2013-09-18 . (原始内容存档于2014-07-14). 

^ Tile: an improved themeing engine for Tk. SourceForge. . (原始内容存档于2016-11-08). 

^ Tcl/Tk 8.5 Release Announcement. Tcl Developer Xchange. 2013-09-18 . (原始内容存档于2014-06-18). 

^ Tcl/Tk 8.6 Release Announcement. Tcl Developer Xchange. 2013-09-20 . (原始内容存档于2014-06-27). 

^ wish manual page – Tk Applications. Tcl Developer Xchange. . (原始内容存档于2016-11-09). 

^ How to Compile Tcl. Tcl Developer Xchange. . (原始内容存档于2016-10-21). 

^ ttk::widget manual page – Tk Themed Widget. Tcl Developer Xchange. . (原始内容存档于2016-11-09). 

^ option manual page – Built-In Commands. Tcl Developer Xchange. . (原始内容存档于2016-11-09). 

^ Languages with a Tk binding. Tcler’s Wiki. . (原始内容存档于2014-07-06). 

^ TASH. SourceForge. . (原始内容存档于2014-03-12). 

^ HTk home. Informatik – FB3 – Uni Bremen. . (原始内容存档于2014-10-18). 

^ Tkx::Tutorial – How to use Tkx. ActiveState Docs. . (原始内容存档于2016-10-10). 

^ Perl/Tk Concepts, Chapter 1 in Mastering Perl/Tk, ISBN 978-1565927162

^ Tkinter, Chapter 2.4 in Modern Tkinter for Busy Python Developers, ASIN B0071QDNLO

^ Tk Commands, version 8.6.6. Tcl Developer Xchange. . (原始内容存档于2016-10-18). 

^ Widgets’, Chapter 17.2 in Tcl and the Tk Toolkit , ISBN 978-0321336330

^ Geometry Managers’, Chapter 17.6 in Tcl and the Tk Toolkit , ISBN 978-0321336330