#

這一篇文章介紹選單按鈕(menubutton)的功能及使用方法。選單按鈕結合了按鈕及選單的功能,與一般按鈕最大的不同點是,當使用者按下選單按鈕會跳出下拉選單,而不是執行像-command後面的程序。接下來依序說明建立選單按鈕及使用的方法。

35.1 建立選單按鈕

建立選單按鈕需要二個步驟,首先要建立一個下拉選單給選單按鈕使用,然後在建立選單按鈕時,把剛才建立的下拉選單指定給新建立的選單按鈕,像這樣:


menu .m -type normal -tearoff 0
.m add command -label "項目一"
.m add command -label "項目二"

ttk::menubutton .btn \
   -text "Hello" \
   -compound left \
   -image [image create photo -file hello.gif] \
   -menu .m \
   -direction right

pack .btn

程式的1~3行建立一個測試用的選單,這個選單等下會設定給選單按鈕使用。第5~10行建立一個選單按鈕,並使-menu選項來指定按下按鈕時要顯示剛才建立的選單,-direction則用來決定選單要顯示的位置,在這個例子中-direction指定為right所以選單會顯示在按鈕的右邊,執行畫面如下:

圖 35-1


-direction可以指定的值包含: above、below(預設值)、left、right及flush,如果指定為flush選單顯示時會蓋掉按鈕本身,像這樣:

圖 35-2


基本上menubutton和button所提供的選項只有兩個是不一樣的,就是menubutton沒有-command及-default選項,但多了-menu及-direction兩個選項,其中-menu用來指定按下按鈕要顯示的選單,而-direction則用來決定選單要顯示的位置。如果你想要更細節的操作按鈕或是選單請參考下列的章節:

10 個意見

Unknown | 2010年5月15日 凌晨2:29

Hi Dai,

謝謝您的文章。這是我看到的最好的關於TCL/TK的介紹。真希望您能盡快完成剩下的兩章,bind和dialog。我對它們非常感興趣。

我是一個新手,因工作上的原因要用到TCL。有些問題想向您請教。

1)您推薦那種TCL IDE?
2)TCL 能像別的語言那樣用多個文件支持一個project。我用過C,用Eclipse的IDE,比較習慣這種環境。TCL能這樣麼?
3)我們工作中需要把TCL編譯成tbc文件。請問需要什麼工具編譯?
4)如果我的project中有多個文件,能編譯成一個tbc文件麼?
5)我聽說可以寫makeup文件來編輯,請問該怎麼寫這個makeup文件。我寫過make文件給c語言,但不知道怎麼寫TCL的。使用make來編譯TCL嗎?

抱歉一來就問這麼多問題。盼望您的答复。

多謝。

dai | 2010年5月15日 晚上11:06

hello eda,

1.我目前貫用的IDE,主要是自製的ezdit還有komodo edit,你可以在本站找到ezdit,它是為Tcler發展的,適合用來發展幾萬行的小專案。

2.Tcl有很好的package還有module的機制,所以我時常會用多個以上的tcl檔案來組織project.

3.我沒有在用TDK...所以關於tbc這方面,就比較少接觸了,但我常用tclkit及sdx把tcl的程式包成執行檔。

4.如果你有用Tcl C API..那它使用起來和一般的c沒兩用,也就是說,是可以用make、gcc..gdb的,你說的makeup我沒用過也...因為我寫比較多Tcl Script,所以不太需要類似makefile的工具。

Unknown | 2010年5月17日 上午10:25

Hi Dai,

多謝您的答复。我也安裝了Komodo Edit,但是我們沒有弄明白怎麼運行一個TCL文件。

我有用Eclipse的經驗,覺得應該有有一個run button。在設值中一個有關一個地方讓用戶填入tcl和tk interpreter的地方。但我沒有找到。

我新建了一個project,添加了一個tcl文件。我右鍵點project選擇Properties,在Languages下面,我看到了Javascript,Perl,PHP,等等,就是沒有TCL。我怎麼設值interpretor?

請問在Komodo edit中怎麼運行提出了?

多謝。

dai | 2010年5月17日 上午11:21

hi eda,

執行komodo功能表的[tools/Run Command]叫出執行的對話方塊,然後輸入

tclsh85.exe "你的程式.tcl"

上面的tclsh85.exe應該會放在c:\tcl\bin裡面,請先確定版本。

祝你成功!!

Unknown | 2010年5月18日 凌晨2:49

Thank you Dai, that works!

dai | 2010年5月18日 上午11:31

u r welcome ^^

isPeter | 2010年11月30日 下午5:34

hello dia,

我又來了 XD
sample code line 8 的最後面少了個 "\"

dai | 2010年12月1日 晚上11:09

修正了 謝謝哦!!

匿名 | 2016年8月2日 下午5:33

有可以放封面的command嗎? 放一個gif當封面 圖案下面再放入其他button

洪 銘澤 | 2016年8月9日 上午9:42

menu botton要如何包在frame下?

留下您的意見

Theme Design by devolux.org. Converted by Wordpress To Blogger for WP Blogger Themes. Sponsored by iBlogtoBlog
This template is brought to you by : allblogtools.com | Blogger Templates