TCL幾何管理

2021-09-05 10:25:09 字數 2679 閱讀 8282

tcl用了有段時間,但是都是複製別人**做的ui,每次要用的時候都是重新看,或者瞎改,實際上自己對幾何管理器還是不懂。

今天看了一下,做下總結:

(1)grid不能控制項尺寸一樣,但pack可以(就目前所知):

#增加「-expand 1 -fill both 」,則隨著視窗尺寸變大,.f從元件(按鈕)尺寸變大

pack .ok .cancel .help -in .f -side top -padx 12m -pady 1m -expand 1 -fill both

grid .f -sticky news

grid rowconfigure . 0 -weight 1

grid columnconfigure . 0 -weight 1

**說明:

只有pack有-expand和-fill,expand將當前要打包的元件塊區填滿當前剩餘的空間,fill將元件視窗填滿元件塊區,一般兩個選項一起使用; -side top表示從上往下排列元件;-padx為外部補白,如果設定-side left,則效果如下:

12m表示12公釐,如果沒有m則表示畫素;

grid .f -sticky news將.f交給幾何管理器,如果沒有這條語句則不會顯示組框.f和裡面的按鈕,-sticky news指定了.f在它的單元格中全範圍分布,因為總共只有1個單元格,所以.f就充滿整個視窗了;

grid rowconfigure . 0 -weight 1將主窗體.的從元件(只有乙個.f)設定為隨窗體尺寸變化,當有多個從元件均設定了weight時,值越大尺寸佔比例越大;這裡如果不設定則手動改變窗體尺寸時,組框.f的大小不變。

(2)書本中#.demo 按鈕隨著勾選nsew會變大變小,若勾選全部,則布滿單元格

button .demo -textvariable stickylabel -bd 2 -relief raised

checkbutton .n -text "n" -bd 2 -relief raised \

-variable stickyn -onvalue n -offvalue {} \

-command redo_sticky

checkbutton .s -text "s" -bd 2 -relief raised \

-variable stickys -onvalue s -offvalue {} \

-command redo_sticky

checkbutton .e -text "e" -bd 2 -relief raised \

-variable stickye -onvalue e -offvalue {} \

-command redo_sticky

checkbutton .w -text "w" -bd 2 -relief raised \

-variable stickyw -onvalue w -offvalue {} \

-command redo_sticky

grid .demo -row 1 -column 1

grid .n -row 0 -column 1 -sticky nsew

grid .s -row 2 -column 1 -sticky nsew

grid .e -row 1 -column 2 -sticky nsew

grid .w -row 1 -column 0 -sticky nsew

grid rowconfigure . 1 -weight 1

grid columnconfigure . 1 -weight 1

wm geometry . 180x100

proc redo_sticky {} {

global stickyn stickys stickye stickyw stickylabel

grid .demo -row 1 -column 1 -sticky $s2

set stickylabel [list -sticky $s2]

**說明:

結果:

中間按鈕尺寸變大了,可見-sticky nsew的作用。如果是-sticky s則按鈕不會放大,如果需要在視窗底部放置「確定」「取消」按鈕,則用-sticky s,而不是-sticky nsew。

TCL語言筆記 TCL基礎語法

tcl 全稱是 tool command language。它是乙個基於字串的命令語言,基礎結構和語法非常簡單,易於學習和掌握。tcl 語言是乙個解釋性語言,所謂解釋性是指不象其他高階語言需要通過編譯和聯結,它象其他 shell 語言一樣,直接對每條語句順次解釋執行。tcl 資料型別簡單。對 tcl...

初識Tcl(十一) Tcl 命名空間

目錄 建立命名空間 巢狀的命名空間 匯入和匯出空間 忘記命名空間 命名空間是乙個容器組識別符號,用於組變數和程式。命名空間可從tcl 8.0版開始使用。引入命名空間之前,有乙個全域性範圍。現在有了命名空間,我們可以分割槽全域性範圍。使用命名空間命令建立命名空間。乙個簡單的例子,建立命名空間如下圖所示...

TCL 程式控制

for for start test next body for是乙個與c語言中for結構類似的迴圈命令。start next和body必須是tcl命令字串,test是表示式字串。for命令首先呼叫tcl直譯器來執行start進行一些初始化操作。然後將test做為表示式進行評估。如果評估結果非零,則...