~* 2011.05.16 更新內容 *~
Table list 元件介紹及簡單範例應用。
Section 0. <引言>
Tcl/Tk 類似Excel表達方式的資訊,可以藉由table list方式呈現
條列的資訊,可以很清楚的表達給使用者,甚至功能如同Excel一般
可以任意的修改欄位之中的數值,甚至欄位可以不同Entre的方式呈現
例如下拉式選單(combobox)等,接下來與大家介紹基本的使用方法。
Section 1. <套件>
- package require tablelist : 但此元件並不是Tk所使用的套件。
- package require tablelist_tile : 此套件為Tk使用
- 如果套件不確定是否為最新版本可以透過指令來進行搜尋及下載安裝
- teacup search tablelist_tile
- teacup install tablelist_tile
Section 2. <建立Table list>
- tablelist::tablelist pathname -option value
建立tablelist的基本指令,指定基本路徑後,可用option來決定一開始的參數
- 參數的介紹如下:
- -columntitles { “name1” “name2”… “nameN”} }
設定欄位名稱,不過僅能設定名稱,一般我們都會使用另外一種方法。
- -columns {width title ?left|right|center? width title ?left|right|center? ...}
同樣是設定欄位名稱,但是帶有寬度,名稱,位置三種變數,更詳細的設定。
- -width characters
設定寬度,數值表示字元
- -height lines
設定高度,數值表示行數
- -selectmode mode (single|browse|multiple|extended)
Extended: 功能有拖曳選擇及Ctrl多選,最為常用
- -selecttype row|cell
選擇行或格
- -resizablecolumns Boolean
設定欄位可縮放1為真0為假
- -stretch all
欄位填滿視窗,也可設定欄位數
- -labelcommand {tablelist::sortByColumn}
點欄位名稱會排序底下的行
- -stripebg colorcode
多筆數值時會以色碼做顏色區隔
- -showseparators Boolean
顯示分隔線,0為假、1為真
- -editstartcommand editStartCmd
可編輯cell的副程式,可將Cell變成combobox的用法
- -editendcommand editEndCmd
結束編輯cell的副程式
- -editselectedonly Boolean
設定編輯cell只限一格
- Table list 簡單範例
tablelist::tablelist .t -columntitles {Owner Project } -stretch all \ ;#建立表單
-width 100 -height 8 -font "Arial 10 bold" -foreground #312251 \ ;#大小字體設定
-yscrollcommand [list .vsb set] \ ;#直捲軸
-xscrollcommand [list .hsb set] ;#橫捲軸
ttk::scrollbar .vsb -orient vertical -command [list .t yview] ;#直捲軸元件設定
ttk::scrollbar .hsb -orient horizontal -command [list .t xview] ;#橫捲軸元件設定
grid .t .vsb -sticky news ;#排列表單和捲軸
grid .hsb -sticky news ;#排列橫捲軸
grid columnconfigure . 0 -weight 1 ;#第0欄隨視窗增長
grid rowconfigure . 0 -weight 1 ;#第0列隨視窗增長
Section 3. <option 用法介紹>
- pathname size
顯示目前table的總行數
- pathname curselection
顯示滑鼠鎖點選到的index
- pathname move source target
移動列
- pathname movecolumn source target
移動欄
- pathname delete index
刪除第index的列
- pathname deletecolumn index
刪除第index的欄
- pathname insert index “{value1} {value2}…”
插入整列的數值
- pathname getcells row column
取得單格cell的值
- pathname cellconfigure row,column -option value
單獨修改指定cell的值
Section 4. <Table list 改變Cell元件使用>
- pathname columnconfigure index -name port -editable Boolean \
-editwindow ttk::combobox -sortmode dictionary
- proc editStartCmd {tbl row col text} {
set w [$tbl editwinpath]
switch [$tbl columncget $col -name] {
port {
$w configure -values {1 2 3 4 5 6 7} -state readonly
}
}
return $text
}
Section 5. <小技巧>
- 如果我們要單獨寫入一個cell的值,有兩種方法實現
第一種,砍掉一整個Row再重新寫入新的Row(很笨的方法)
第二種,直接修改cells,例如: pathname cellsconfigure -option value
留言列表