
- Tcl 教程
- Tcl - 首頁
- Tcl - 概述
- Tcl - 環境設定
- Tcl - 特殊變數
- Tcl - 基本語法
- Tcl - 命令
- Tcl - 資料型別
- Tcl - 變數
- Tcl - 運算子
- Tcl - 決策
- Tcl - 迴圈
- Tcl - 陣列
- Tcl - 字串
- Tcl - 列表
- Tcl - 字典
- Tcl - 過程
- Tcl - 包
- Tcl - 名稱空間
- Tcl - 檔案I/O
- Tcl - 錯誤處理
- Tcl - 內建函式
- Tcl - 正則表示式
- Tk 教程
- Tk - 概述
- Tk - 環境
- Tk - 特殊變數
- Tk - 控制元件概述
- Tk - 基本控制元件
- Tk - 佈局控制元件
- Tk - 選擇控制元件
- Tk - 畫布控制元件
- Tk - Mega 控制元件
- Tk - 字型
- Tk - 圖片
- Tk - 事件
- Tk - 視窗管理器
- Tk - 幾何管理器
- Tcl/Tk 有用資源
- Tcl/Tk - 快速指南
- Tcl/Tk - 有用資源
- Tcl/Tk - 討論
Tk - 控制元件概述
基於Tk的應用程式的基本元件稱為控制元件(widget)。元件有時也稱為視窗,因為在Tk中,“視窗”和“控制元件”通常可以互換使用。Tk是一個包,它提供了一套豐富的圖形元件,用於使用Tcl建立圖形應用程式。
Tk提供了一系列控制元件,範圍從按鈕和選單等基本GUI控制元件到資料顯示控制元件。這些控制元件高度可配置,因為它們具有預設配置,使用起來非常方便。
Tk應用程式遵循控制元件層次結構,其中任意數量的控制元件可以放置在另一個控制元件內,而這些控制元件又可以放置在另一個控制元件內。Tk程式中的主控制元件稱為根控制元件,可以透過建立TkRoot類的新的例項來建立。
建立控制元件
建立控制元件的語法如下所示。
type variableName arguments options
此處的型別指的是控制元件型別,例如按鈕、標籤等等。引數可以是可選的,也可以是必需的,這取決於每個控制元件的個體語法。選項範圍從每個元件的大小到格式。
控制元件命名約定
控制元件使用類似於命名包的結構。在Tk中,根視窗的名稱以句點(.)開頭,然後是視窗中的元素,例如按鈕的名稱為.myButton1。變數名應以小寫字母、數字或標點符號(句點除外)開頭。第一個字元之後,其他字元可以是大寫或小寫字母、數字或標點符號(句點除外)。建議使用小寫字母作為標籤的開頭。
顏色命名約定
可以使用名稱(如紅色、綠色等)宣告顏色。也可以使用十六進位制表示法,例如#。十六進位制數字的個數可以是3、6、9或12。
尺寸約定
預設單位是畫素,當我們沒有指定尺寸時使用。其他尺寸單位包括i(英寸)、m(毫米)、c(釐米)和p(磅)。
常用選項
所有控制元件都有很多常用選項,它們列在下表中:
序號 | 語法和描述 |
---|---|
1 | -background color 用於設定控制元件的背景顏色。 |
2 | -borderwidth width 用於繪製具有3D效果的邊框。 |
3 | -font fontDescriptor 用於設定控制元件的字型。 |
4 | -foreground color 用於設定控制元件的前景色。 |
5 | -height number 用於設定控制元件的高度。 |
6 | -highlightbackground color 用於設定當控制元件沒有輸入焦點時在其周圍繪製的顏色矩形。 |
7 | -highlightcolor color 用於設定當控制元件有輸入焦點時在其周圍繪製的顏色矩形。 |
8 | -padx number 設定控制元件的padx。 |
9 | -pady number 設定控制元件的pady。 |
10 | -relief condition 設定此控制元件的3D浮雕效果。條件可以是raised、sunken、flat、ridge、solid或groove。 |
11 | -text text 設定控制元件的文字。 |
12 | -textvariable varName 與控制元件關聯的變數。當控制元件的文字發生更改時,變數將設定為控制元件的文字。 |
13 | -width number 設定控制元件的寬度。 |
下面顯示了一個簡單的選項示例。
#!/usr/bin/wish grid [label .myLabel -background red -text "Hello World" -relief ridge -borderwidth 3] -padx 100 -pady 100
執行上述程式後,我們將得到以下輸出。

可用控制元件的列表如下分類:
基本控制元件
序號 | 控制元件和描述 |
---|---|
1 | Label(標籤) 用於顯示單行文字的控制元件。 |
2 | Button(按鈕) 可點選並觸發操作的控制元件。 |
3 | Entry(輸入框) 用於接受單行文字作為輸入的控制元件。 |
4 | Message(訊息框) 用於顯示多行文字的控制元件。 |
5 | Text(文字框) 用於顯示和(可選)編輯多行文字的控制元件。 |
6 | Toplevel(頂級視窗) 帶有視窗管理器提供的所有邊框和裝飾的視窗。 |
佈局控制元件
序號 | 控制元件和描述 |
---|---|
1 | Frame(框架) 用於容納其他控制元件的容器控制元件。 |
2 | Place(定位) 用於在特定位置容納其他控制元件,帶有其原點的座標和精確大小的控制元件。 |
3 | Pack(填充) 簡單的控制元件,用於在將控制元件放置到父控制元件之前,將控制元件組織成塊。 |
4 | Grid(網格) 用於巢狀控制元件,以不同方向打包控制元件的控制元件。 |
選擇控制元件
序號 | 控制元件和描述 |
---|---|
1 | Radiobutton(單選按鈕) 具有組開關按鈕和標籤的控制元件,其中只能選擇一個。 |
2 | Checkbutton(複選框) 具有組開關按鈕和標籤的控制元件,可以選擇多個。 |
3 | Menu(選單) 用作選單項容器的控制元件。 |
4 | Listbox(列表框) 顯示單元列表的控制元件,可以選擇一個或多個單元。 |
Mega 控制元件
序號 | 控制元件和描述 |
---|---|
1 | Dialog(對話方塊) 用於顯示對話方塊的控制元件。 |
2 | Spinbox(旋轉框) 允許使用者選擇數字的控制元件。 |
3 | Combobox(組合框) 將輸入框與使用者可用的選項列表組合的控制元件。 |
4 | Notebook(筆記本) 選項卡式控制元件,有助於使用索引選項卡在多個頁面之間切換。 |
5 | Progressbar(進度條) 用於向檔案上傳等長時間操作的進度提供視覺反饋的控制元件。 |
6 | Treeview(樹形檢視) 用於顯示和允許瀏覽樹狀形式的項層次結構的控制元件。 |
7 | Scrollbar(捲軸) 沒有文字或畫布控制元件的滾動控制元件。 |
8 | Scale(滑塊) 透過滑塊選擇數值的滑塊控制元件。 |
其他控制元件
序號 | 控制元件和描述 |
---|---|
1 | Canvas(畫布) 用於顯示圖形和影像的繪圖控制元件。 |
我們將在接下來的章節中介紹每個控制元件。