Tk
Tk是一开放原始码的图形用户界面开发工具,提供许多常用的图形接口组件(像是菜单、按钮之类),具有跨平台、轻量化等特色。
原作者 | 约翰·奥斯特豪特 |
---|---|
开发者 | Tcl Core Team[1] |
首次发布 | 1991年 |
当前版本 | 8.6.11(2020年12月31日 | )
预览版本 | 9.0a1(2019年11月26日 | )
原始码库 | |
编程语言 | C |
操作系统 | 跨平台 |
平台 | 跨平台 |
类型 | 部件工具箱 |
许可协议 | BSD-风格[2] |
网站 | www |
Tk最初发展于1991年,是以Tcl脚本语言撰写的扩展,目前另有Perl、Python、Ruby、Common Lisp等多种版本,并可在Linux、Unix、Apple Macintoch、Windows等平台上运行。
从Tcl/Tk 8开始,软件搭建的图形界面看起来将“与本地系统一致”[3]。8.5版引入了一个新的主题引擎,它在字体渲染方面也有改进。该引擎最初叫Tk Tile[4],但现在通常被称为"themed Tk"[5]。8.6版的更新则支持了PNG格式,以及倾斜文字[6]。
架构
在Tk中,运用Tcl脚本编写跨平台图形用户界面框架。使用Tcl Shell(Tclsh),以命令package require Tk
调用Tk。在图形操作系统下,Wish提供了包含Tclsh和Tk的图形窗口环境[7]。
Tk有以下特性:
- 平台独立:与Tcl一样,Tk也是解释型的。各种平台下的Tcl实现是统一的,因此Tk程序可无需修改地移植至各种平台[8]。
- 可定制:Tcl中几乎所有的特性都是可以修改的,可通过初始化选项或运行时的命令修改[9]。
- 可保存:很多选项出存在数据库中,例如界面的颜色设置。这些选项能保存下来,在再次加载程序时读取[10]。
语言绑定
通过语言绑定,以Tcl实现的Tk可在其他编程语言中调用。已有多种语言支持Tk,完整的列表见于Tk的网站[11]。 例如Ada中的TASH模块[12] Haskell中的HTk[13],Perl,Python中的Tkinter模块,Ruby,REXX, 以及Common Lisp。
在Perl中调用Tk用多种方法: Tcl::Tk模块以及Tkx模块[14]均适用Tcl作为桥梁;而Perl/Tk[15]直接使用Perl实现Tk。Python的Tkinter模块使用与Tcl的语言绑定实现Tk[16]。
特性
Tk提供了多种部件[17]。基本部件集成在toplevel
部件里,作为可移动的浮动窗口,通常由操作系统管理[18]。
基本特性
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
的基本部件使用图形管理器管理[19]。
place
– 定位部件至给定的绝对位置grid
– 将部件按网格排列pack
– 将部件打包
参考资料
- ^ Tcl/Tk Core Development. Tcl Developer Xchange. [2016-11-01]. (原始内容存档于2016-10-30).
- ^ Tcl/Tk Licensing Terms. Tcl Developer Xchange. [2016-11-04]. (原始内容存档于2018-06-27).
- ^ Tcl/Tk 8.0. Tcl Developer Xchange. 2013-09-18 [2014-07-01]. (原始内容存档于2014-07-14).
- ^ Tile: an improved themeing engine for Tk. SourceForge. [2016-11-04]. (原始内容存档于2016-11-08).
- ^ Tcl/Tk 8.5 Release Announcement. Tcl Developer Xchange. 2013-09-18 [2014-07-01]. (原始内容存档于2014-06-18).
- ^ Tcl/Tk 8.6 Release Announcement. Tcl Developer Xchange. 2013-09-20 [2014-07-01]. (原始内容存档于2014-06-27).
- ^ wish manual page - Tk Applications. Tcl Developer Xchange. [2016-11-01]. (原始内容存档于2016-11-09).
- ^ How to Compile Tcl. Tcl Developer Xchange. [2016-11-01]. (原始内容存档于2016-10-21).
- ^ ttk::widget manual page - Tk Themed Widget. Tcl Developer Xchange. [2016-11-01]. (原始内容存档于2016-11-09).
- ^ option manual page - Built-In Commands. Tcl Developer Xchange. [2016-11-01]. (原始内容存档于2016-11-09).
- ^ Languages with a Tk binding. Tcler's Wiki. [2014-07-01]. (原始内容存档于2014-07-06).
- ^ TASH. SourceForge. [2014-07-01]. (原始内容存档于2014-03-12).
- ^ HTk home. Informatik - FB3 - Uni Bremen. [2016-11-04]. (原始内容存档于2014-10-18).
- ^ Tkx::Tutorial - How to use Tkx. ActiveState Docs. [2016-11-01]. (原始内容存档于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,
- ^ Tk Commands, version 8.6.6. Tcl Developer Xchange. [2016-11-01]. (原始内容存档于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
外部链接
- Tcl/Tk官方网页(页面存档备份,存于互联网档案馆)
- ASPN的Perl/Tk在线说明
- Ruby/Tk在线说明
- TkInter(页面存档备份,存于互联网档案馆) — Python版本的Tk
- LTK(页面存档备份,存于互联网档案馆) — Common Lisp版本的Tk