Tk
GUI工具包或框架 / 維基百科,自由的 encyclopedia
Tk是一開放原始碼的圖形用戶界面開發工具,提供許多常用的圖形介面元件(像是選單、按鈕之類),具有跨平台、輕量化等特色。
Windows 10上運行的 Tk 8.6.6 截圖 | |
原作者 | 約翰·奧斯特豪特(英語:John Ousterhout) |
---|---|
開發者 | Tcl Core Team[1] |
首次發布 | 1991年,33年前(1991) |
當前版本 | |
源代碼庫 | |
編程語言 | C |
操作系統 | 跨平台 |
平台 | 跨平台 |
類型 | 部件工具箱 |
許可協議 | BSD-風格[4] |
網站 | www |
Tk最初發展於1991年,是以Tcl腳本語言撰寫的擴充套件,目前另有Perl、Python、Ruby、Common Lisp等多種版本,並可在Linux、Unix、Apple Macintoch、Windows等平臺上運行。
從Tcl/Tk 8開始,軟件搭建的圖形界面看起來將「與本地系統一致」[5]。8.5版引入了一個新的主題引擎,它在字體渲染方面也有改進。該引擎最初叫Tk Tile[6],但現在通常被稱為"themed Tk"[7]。8.6版的更新則支持了PNG格式,以及傾斜文字[8]。
架構
在Tk中,運用Tcl腳本編寫跨平台圖形用戶界面框架。使用Tcl Shell(Tclsh),以命令package require Tk
調用Tk。在圖形操作系統下,Wish(英語:Wish_(Unix_shell))提供了包含Tclsh和Tk的圖形窗口環境[9]。
Tk有以下特性:
- 平台獨立:與Tcl一樣,Tk也是解釋型的。各種平台下的Tcl實現是統一的,因此Tk程序可無需修改地移植至各種平台[10]。
- 可定製:Tcl中幾乎所有的特性都是可以修改的,可通過初始化選項或運行時的命令修改[11]。
- 可保存:很多選項出存在數據庫中,例如界面的顏色設置。這些選項能保存下來,在再次載入程序時讀取[12]。
語言綁定
通過語言綁定,以Tcl實現的Tk可在其他編程語言中調用。已有多種語言支持Tk,完整的列表見於Tk的網站[13]。 例如Ada中的TASH模塊[14] Haskell中的HTk[15],Perl,Python中的Tkinter模塊,Ruby,REXX, 以及Common Lisp。
在Perl中調用Tk用多種方法: Tcl::Tk模塊以及Tkx模塊[16]均適用Tcl作為橋梁;而Perl/Tk[17]直接使用Perl實現Tk。Python的Tkinter模塊使用與Tcl的語言綁定實現Tk[18]。
特性
Tk提供了多種部件[19]。基本部件整合在toplevel
部件里,作為可移動的浮動窗口,通常由操作系統管理[20]。
基本特性
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
的基本部件使用圖形管理器管理[21]。
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).
- 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