跳至內容

Tk

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書
Tk
Windows 10上執行的 Tk 8.6.6 截圖
Windows 10上執行的 Tk 8.6.6 截圖
原作者約翰·奧斯特豪特(英語:John Ousterhout)
開發者Tcl Core Team[1]
首次釋出1991年,​35年前​(1991)
目前版本
  • 9.1.0(2026年9月29日;穩定版本)[2]
編輯維基數據連結
原始碼庫 編輯維基數據連結
程式語言C
作業系統跨平台
平台跨平台
類型部件工具箱
特許條款BSD-風格[3]
網站www.tcl-lang.org

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

Tk最初發展於1991年,是以Tcl手稿語言撰寫的擴充套件,目前另有Perl、Python、Ruby、Common Lisp等多種版本,並可在Linux、Unix、Apple Macintoch、Windows等平臺上運行。

從Tcl/Tk 8開始,軟件搭建的圖形介面看起來將「與本地系統一致」[4]。8.5版引入了一個新的主題引擎,它在字體渲染方面也有改進。該引擎最初叫Tk Tile[5],但現在通常被稱為"themed Tk"[6]。8.6版的更新則支援了PNG格式,以及傾斜文字[7]。

架構

[編輯]

在Tk中,運用Tcl指令碼編寫跨平台圖形化使用者介面框架。使用Tcl Shell(Tclsh),以命令package require Tk呼叫Tk。在圖形作業系統下,Wish(英語:Wish_(Unix_shell))提供了包含Tclsh和Tk的圖形窗口環境[8]。

Tk有以下特性:

  • 平台獨立:與Tcl一樣,Tk也是解釋型的。各種平台下的Tcl實現是統一的,因此Tk程式可無需修改地移植至各種平台[9]。
  • 可客製化:Tcl中幾乎所有的特性都是可以修改的,可通過初始化選項或執行時的命令修改[10]。
  • 可儲存:很多選項出存在數據庫中,例如介面的顏色設置。這些選項能儲存下來,在再次載入程式時讀取[11]。

語言繫結

[編輯]

通過語言繫結,以Tcl實現的Tk可在其他程式語言中呼叫。已有多種語言支援Tk,完整的列表見於Tk的網站[12]。 例如Ada中的TASH模組[13] Haskell中的HTk[14],Perl,Python中的Tkinter模組,Ruby,REXX, 以及Common Lisp。

在Perl中呼叫Tk用多種方法: Tcl::Tk模組以及Tkx模組[15]均適用Tcl作為橋樑;而Perl/Tk[16]直接使用Perl實現Tk。Python的Tkinter模組使用與Tcl的語言繫結實現Tk[17]。

特性

[編輯]

Tk提供了多種部件[18]。基本部件整合在toplevel部件裏,作為抽取式的浮動窗口,通常由作業系統管理[19]。

基本部件

[編輯]
  • 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的基本部件使用圖形管理器管理[20]。

  • place – 定位部件至給定的絕對位置
  • grid – 將部件按網格排列
  • pack – 將部件打包

參考資料

[編輯]
  1. ^ Tcl/Tk Core Development. Tcl Developer Xchange. [2016-11-01]. (原始內容存檔於2016-10-30). 
  2. ^ [TCLCORE] Tk 9.1.0 RELEASED. 2026年9月29日 [2026年10月1日]. 
  3. ^ Tcl/Tk Licensing Terms. Tcl Developer Xchange. [2016-11-04]. (原始內容存檔於2018-06-27). 
  4. ^ Tcl/Tk 8.0. Tcl Developer Xchange. 2013-09-18 [2014-07-01]. (原始內容存檔於2014-07-14). 
  5. ^ Tile: an improved themeing engine for Tk. SourceForge. [2016-11-04]. (原始內容存檔於2016-11-08). 
  6. ^ Tcl/Tk 8.5 Release Announcement. Tcl Developer Xchange. 2013-09-18 [2014-07-01]. (原始內容存檔於2014-06-18). 
  7. ^ Tcl/Tk 8.6 Release Announcement. Tcl Developer Xchange. 2013-09-20 [2014-07-01]. (原始內容存檔於2014-06-27). 
  8. ^ wish manual page - Tk Applications. Tcl Developer Xchange. [2016-11-01]. (原始內容存檔於2016-11-09). 
  9. ^ How to Compile Tcl. Tcl Developer Xchange. [2016-11-01]. (原始內容存檔於2016-10-21). 
  10. ^ ttk::widget manual page - Tk Themed Widget. Tcl Developer Xchange. [2016-11-01]. (原始內容存檔於2016-11-09). 
  11. ^ option manual page - Built-In Commands. Tcl Developer Xchange. [2016-11-01]. (原始內容存檔於2016-11-09). 
  12. ^ Languages with a Tk binding. Tcler's Wiki. [2014-07-01]. (原始內容存檔於2014-07-06). 
  13. ^ TASH. SourceForge. [2014-07-01]. (原始內容存檔於2014-03-12). 
  14. ^ HTk home. Informatik - FB3 - Uni Bremen. [2016-11-04]. (原始內容存檔於2014-10-18). 
  15. ^ Tkx::Tutorial - How to use Tkx. ActiveState Docs. [2016-11-01]. (原始內容存檔於2016-10-10). 
  16. ^ Perl/Tk Concepts, Chapter 1 in Mastering Perl/Tk, ISBN 978-1565927162
  17. ^ Tkinter, Chapter 2.4 in Modern Tkinter for Busy Python Developers,
  18. ^ Tk Commands, version 8.6.6. Tcl Developer Xchange. [2016-11-01]. (原始內容存檔於2016-10-18). 
  19. ^ Widgets', Chapter 17.2 in Tcl and the Tk Toolkit , ISBN 978-0321336330
  20. ^ Geometry Managers', Chapter 17.6 in Tcl and the Tk Toolkit , ISBN 978-0321336330

外部連結

[編輯]