2010-09-26 50 views
2

當在TK中創建新的頂層或按鈕時,需要輸入路徑名。 我已經看到它看起來像一個基本的代碼:tcl/tk按鈕或頂層路徑名約定

toplevel .a 
... 
button .a.b ... 

我的問題是: 是字母區別對待的點?他們是某種層次分隔符,它們創建父子關係?我曾看過維基傳統知識,但未能找到答案。 非常感謝, -Lior

+0

順便說一句,關於Tcl/Tk最出色的書是Brent Welch在Tcl和Tk中的實用編程。 @Bryan Oakley在下面的答案中也提到了它。 – Roalt 2010-09-27 06:18:36

回答

2

是的,他們是!他們分開例如與各種小工具內容的框架:

set f [frame .hello] 
button $f.b -text "Hello button" 

pack $f.b 

pack $f 

正如你可以看到在這個例子中,F被評價爲變量,而不是fb的

你也可以寫包$ {F} .b但這不是必需的,因爲點看起來不是變量的一部分。

+0

Thanks.Is有任何鏈接到例子嗎? – 2010-09-26 20:16:28

+0

這個例子不在我的腦海,但是看到@skilldrick的理論描述的答案。 – Roalt 2010-09-26 20:18:52

1

是的 - 這是爲了層次結構。看看TkDocs關於這個問題:

框架,它是根的孩子,被命名爲「.c」。我們可以將任何東西放在「c」的位置,例如命名它爲「.content」。這個名字純粹是供你的程序使用的,所以最好選擇一些有意義的東西。該框架的子控件被賦予諸如「.c.feet」,「.c.meters」,「.c.flbl」等名稱。如果在層次結構的更深層次上有任何小部件,我們會添加另一個「。」。然後是唯一標識符。

3

正如其他答案所說,點用來表示層次結構,就像/或\用於表示文件系統層次結構一樣。

嚴格地說,不必將零件放置在層次結構中。這樣做的一個好處是,網格和包裝等幾何管理員默認管理父母的孩子。例如,'pack.a.b.c'會將小部件a.b.c打包到小部件.a.b中。這使得簡單的佈局變得容易。

在許多情況下,可以通過將網格和包裝放入應將小孩放置在哪個容器中來實現相同的效果。例如,'pack .c -in .a.b'會將小部件.c放入容器.a.b中。這讓你保持層次淺,並使重構更容易一些。

請參閱http://www.beedub.com/book/2nd/TKINTRO.doc.html瞭解tk基礎知識。

+0

好吧,布萊恩。對重構的另一個影響是許多人習慣於將變量名稱保存在變量中;除了其他效果之外,這還提供了在開始時只用「set my_toplevel_name .SOMETHING_NEW」重寫複雜序列的機會。 – 2010-09-30 14:08:22