圓鈕方塊是一種讓使用者多選一,而且確保選項間互斥的視窗元件。這一個章節介紹圓鈕方塊的建立及使用方法。另外為了慶祝剛裝好的ubuntu 9.10,所以這次程式範例都改成了Ubuntu下的快照,呵呵。
28.1 建立圓鈕方塊
在建立圓鈕方塊之前,我們要先說明一個「分組」的觀念,其意義就是,如果多個圓鈕方塊被分類在同一組,那麼Tk會確保同一組的圓鈕方塊中永遠只有一個會被選中。下面是一個建立方塊及分組的例子:001 002 003 | ttk::radiobutton .r1 -text "男生" -value 1 -variable ::sex ttk::radiobutton .r2 -text "女生" -value 0 -variable ::sex pack .r1 .r2 |
這個例子總共建立了2個圓鈕方塊,如果使用者點選了男生,那麼::sex變數會被設定為1(男生後面-value指定的值),如果選了女生::sex會被設定為0(女生後面-value指定的值)。這邊的重點在於,如果多個圓鈕方塊的-variable選項指定了相同的變數名稱,這樣的話Tk會自動把這些圓鈕方塊分為一組,然後確保使用者只能在這些圓鈕方塊中選中1個。所以這個例子執行起來就像下面的圖一樣,使用者永遠只能在兩個圓鈕中點選其中之一。
圖 28-1
注意哦!!如果沒有設定::sex的初始值,那麼初始的情況下沒有任何一個圓鈕會被選中的。如果你希望把女生當為預設值的話,可以這樣做:
001 002 003 004 | set ::sex 0 ttk::radiobutton .r1 -text "男生" -value 1 -variable ::sex ttk::radiobutton .r2 -text "女生" -value 0 -variable ::sex pack .r1 .r2 |
很簡單只要把::sex設定為0就可以了。想當然的,如果把::sex設定為1,這樣的話預設值就會變為男生。
□ 使用範例
現在我們用一個簡單的例子來說明圓鈕方塊的使用方法,這個例子長得像下面的樣子:圖 28-2
圖上的「查看狀態」每按一下就會輸出圓鈕方塊選中的項目值。而「回復初值」會把圓鈕方塊還原為原始的選取狀態。程式碼如下:
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 | ttk::label .lbl1 -text "你的性別是:" ttk::radiobutton .rdo1 -text "男生" -value 1 -variable ::sex ttk::radiobutton .rdo2 -text "女生" -value 0 -variable ::sex ttk::label .lbl2 -text "最愛的程式語言是:" ttk::radiobutton .rdo3 -text "Tcl" -value 1 -variable ::lang ttk::radiobutton .rdo4 -text "踢扣" -value 2 -variable ::lang ttk::button .btn1 -text "查看狀態" -command { puts "性別:$::sex" puts "語言:$::lang" } ttk::button .btn2 -text "回復初值" -command { set ::sex 1 set ::lang 2 } set ::sex 1 set ::lang 2 grid .lbl1 .rdo1 .rdo2 -sticky "news" -padx 2 -pady 2 grid .lbl2 .rdo3 .rdo4 -sticky "news" -padx 2 -pady 2 grid .btn1 .btn2 -sticky "news" -padx 2 -pady 2 |
正常的情況下你應該看得懂上面的每一行程式,如果你覺得有陌生的地方,請試試複習先前的文章。
□ 其它常用選項
以下是其它常用的選項,有興趣的朋友請自己試看看吧!!-image | 設定圓鈕方塊後面的圖示。 |
-compound | 指定圖示及文字內容的排列方式。 |
-textvariable | 這個選項可以指定一個變數來即時反應圓鈕後面的文字內容。 |
圓鈕方塊也提供了cget及configure等標準的視窗元件命令,它們的用法請參考這一章的說明。
按右上方的「#」號切換側邊欄