Tk

Tk是一開放原始碼图形用户界面开发工具,提供許多常用的圖形介面元件(像是選單按鈕之類),具有跨平台、輕量化等特色。

Tk
Windows 10上运行的 Tk 8.6.6 截图
原作者约翰·奥斯特豪特
開發者Tcl Core Team[1]
初始版本1991年1991
穩定版本
8.6.11
(2020年12月31日2020-12-31
預覽版本
8.7a3
(2019年11月25日2019-11-25
源代码库
编程语言C
操作系统跨平台
系統平台跨平台
类型部件工具箱
许可协议BSD-风格[2]
网站www.tcl.tk

Tk最初發展於1991年,是以Tcl腳本語言撰寫的擴充套件,目前另有PerlPythonRubyCommon Lisp等多種版本,並可在LinuxUnixApple MacintochWindows等平臺上運行。

从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 – 将部件打包

参考资料

  1. . Tcl Developer Xchange. [2016-11-01]. (原始内容存档于2016-10-30).
  2. . Tcl Developer Xchange. [2016-11-04]. (原始内容存档于2018-06-27).
  3. . Tcl Developer Xchange. 2013-09-18 [2014-07-01]. (原始内容存档于2014-07-14).
  4. . SourceForge. [2016-11-04]. (原始内容存档于2016-11-08).
  5. . Tcl Developer Xchange. 2013-09-18 [2014-07-01]. (原始内容存档于2014-06-18).
  6. . Tcl Developer Xchange. 2013-09-20 [2014-07-01]. (原始内容存档于2014-06-27).
  7. . Tcl Developer Xchange. [2016-11-01]. (原始内容存档于2016-11-09).
  8. . Tcl Developer Xchange. [2016-11-01]. (原始内容存档于2016-10-21).
  9. . Tcl Developer Xchange. [2016-11-01]. (原始内容存档于2016-11-09).
  10. . Tcl Developer Xchange. [2016-11-01]. (原始内容存档于2016-11-09).
  11. . Tcler's Wiki. [2014-07-01]. (原始内容存档于2014-07-06).
  12. . SourceForge. [2014-07-01]. (原始内容存档于2014-03-12).
  13. . Informatik - FB3 - Uni Bremen. [2016-11-04]. (原始内容存档于2014-10-18).
  14. . ActiveState Docs. [2016-11-01]. (原始内容存档于2016-10-10).
  15. Perl/Tk Concepts, Chapter 1 in Mastering Perl/Tk, ISBN 978-1565927162
  16. Tkinter, Chapter 2.4 in Modern Tkinter for Busy Python Developers, ASIN B0071QDNLO
  17. . Tcl Developer Xchange. [2016-11-01]. (原始内容存档于2016-10-18).
  18. Widgets', Chapter 17.2 in Tcl and the Tk Toolkit , ISBN 978-0321336330
  19. Geometry Managers', Chapter 17.6 in Tcl and the Tk Toolkit , ISBN 978-0321336330

外部連結

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.