<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # Tcl/Tk 小部件 > 原文: [http://zetcode.com/gui/tcltktutorial/widgets/](http://zetcode.com/gui/tcltktutorial/widgets/) 在 Tcl/Tk 教程的這一部分中,我們將介紹一些基本的 Tk 小部件。 我們將為`checkbutton`,`label`,`scale`和`listbox`小部件提供示例。 小部件是 GUI 應用的基本構建塊。 多年來,幾個小部件已成為所有 OS 平臺上所有工具包中的標準。 例如,按鈕,復選框或滾動條。 其中一些名稱可能不同。 例如,一個復選框在 Tk 中稱為復選框。 Tk 具有一小組可滿足基本編程需求的小部件。 可以將更多專門的窗口小部件創建為自定義窗口小部件。 ## `checkbutton` `checkbutton`是具有兩種狀態的窗口小部件:開和關。 接通狀態通過復選標記顯示。 它用來表示一些布爾屬性。 `checkbutton`小部件提供一個帶有文本標簽的復選框。 ```tcl #!/usr/bin/wish # ZetCode Tcl/Tk tutorial # # This program toggles the title of the # window with the checkbutton widget. # # author: Jan Bodnar # last modified: March 2011 # website: www.zetcode.com frame .fr pack .fr -fill both -expand 1 checkbutton .fr.cb -text "Show title" -command onClick \ -onvalue true -offvalue false -variable selected .fr.cb select place .fr.cb -x 50 -y 50 proc onClick {} { global selected if {$selected==true} { wm title . checkbutton } else { wm title . "" } } wm title . checkbutton wm geometry . 250x150+300+300 ``` 在我們的示例中,我們在窗口上放置了一個檢查按鈕。 選中按鈕顯示/隱藏窗口的標題。 ```tcl checkbutton .fr.cb -text "Show title" -command onClick \ -onvalue true -offvalue false -variable selected ``` `checkbutton`命令創建一個檢查按鈕小部件。 `-text`選項指定由小部件顯示的文本。 當我們單擊小部件時,將執行`onClick`過程。 選中`checkbutton`時,所選變量的值為真。 否則,它具有錯誤的值。 ```tcl .fr.cb select ``` 最初,標題顯示在標題欄中。 因此,一開始,我們使用`select`命令檢查了小部件。 ```tcl place .fr.cb -x 50 -y 50 ``` 我們將檢查按鈕小部件放置在框架上的`x = 50`和`y = 50`坐標處。 ```tcl if {$selected==true} { wm title . checkbutton } else { wm title . "" } ``` 在`onClick`過程中,我們根據所選變量顯示或隱藏標題。 ![checkbutton](https://img.kancloud.cn/3d/8c/3d8c9a04635d8c66639c070833d4c259_252x182.jpg) 圖:`CheckButton` ## `label` `label`小部件用于顯示文本或圖像。 沒有用戶交互。 ```tcl sudo apt-get install libtk-img ``` 為了運行此示例,我們必須安裝`libtk-img`包。 ```tcl #!/usr/bin/wish # ZetCode Tcl/Tk tutorial # # In this script, we use a label # widget to show an image. # # author: Jan Bodnar # last modified: March 2011 # website: www.zetcode.com package require Img frame .fr pack .fr image create photo img -file "tatras.jpg" label .fr.lbl -image img pack .fr.lbl wm title . label wm geometry . +300+300 ``` 我們的示例在窗口上顯示圖像。 ```tcl package require Img ``` 默認情況下,`label`小部件只能顯示一組有限的圖像類型。 要顯示 JPG 圖像,我們必須使用`Img`包。 ```tcl image create photo img -file "tatras.jpg" ``` 我們根據文件系統上的圖像創建照片圖像。 ```tcl label .fr.lbl -image img ``` 將照片圖像提供給標簽窗口小部件的`image`參數。 ```tcl pack .fr.lbl ``` 圖像包裝在框架中。 ```tcl wm geometry . +300+300 ``` 我們指定 x 和 y 坐標。 這些用于在屏幕上放置窗口。 我們忽略了窗口的大小。 打包管理器會將窗口大小設置為圖像大小。 ## `HScale` `scale`是一個小部件,可讓用戶通過在有限間隔內滑動旋鈕以圖形方式選擇一個值。 我們的示例將在標簽小部件中顯示一個選定的數字。 ```tcl #!/usr/bin/wish # ZetCode Tcl/Tk tutorial # # In this script, we show how to # use the scale widget. # # author: Jan Bodnar # last modified: March 2011 # website: www.zetcode.com frame .fr pack .fr -fill both -expand 1 scale .fr.scl -orient horizontal -from 0 -to 100 \ -length 150 -variable val -showvalue 0 place .fr.scl -x 50 -y 50 label .fr.lbl -textvariable val place .fr.lbl -x 80 -y 110 wm title . scale wm geometry . 250x150+300+300 ``` 上面的腳本中有兩個小部件。 標尺和標簽。 標簽控件中顯示了比例控件的值。 ```tcl scale .fr.scl -orient horizontal -from 0 -to 100 \ -length 150 -variable val -showvalue 0 ``` `scale`小部件已創建。 `-orient`選項使窗口小部件水平。 我們提供`-from`和`-to`選項的上限和下限。 當前選擇的數字存儲在 val 變量中。 默認情況下,比例小部件還顯示選定的數字。 使用`-showvalue`選項,我們將其隱藏。 ```tcl label .fr.lbl -textvariable val ``` `label`小部件已創建。 它將顯示上述`val`變量。 ![scale widget](https://img.kancloud.cn/3f/bf/3fbfff687ca5ae3d9f1ddf4cf4fcc607_252x182.jpg) 圖:`scale`小部件 ## `listbox` `listbox`是顯示對象列表的窗口小部件。 它允許用戶選擇一項或多項。 ```tcl #!/usr/bin/wish # ZetCode Tcl/Tk tutorial # # In this script, we show how to # use the listbox widget. # # author: Jan Bodnar # last modified: March 2011 # website: www.zetcode.com frame .fr pack .fr -fill both -expand 1 listbox .fr.lb .fr.lb insert end "Scarlett Johansson" "Rachel Weiss" "Natalie Portman" \ "Jessica Alba" bind .fr.lb <<ListboxSelect>> { setLabel [%W curselection]} place .fr.lb -x 20 -y 20 label .fr.lbl place .fr.lbl -x 20 -y 210 wm title . listbox wm geometry . 300x250+300+300 proc setLabel { idx } { set val [.fr.lb get $idx] .fr.lbl configure -text $val } ``` 在我們的示例中,我們顯示了`listbox`中的女演員列表。 當前選擇的女演員顯示在標簽小部件中。 ```tcl listbox .fr.lb ``` 使用`listbox`命令創建列表框小部件。 ```tcl .fr.lb insert end "Scarlett Johansson" "Rachel Weiss" "Natalie Portman" \ "Jessica Alba" ``` 在這里,我們將四個女演員插入小部件。 ```tcl bind .fr.lb <<ListboxSelect>> { setLabel [%W curselection]} ``` 當我們在列表框中選擇一個項目時,將生成`<<ListboxSelect>>`事件。 我們將`setLabel`過程綁定到此事件。 我們還向過程發送參數。 當前所選值的索引。 `%W curselection`返回索引。 `%W`是有關小部件的處理器,`curselection`是在此小部件上執行的命令。 ```tcl proc setLabel { idx } { set val [.fr.lb get $idx] .fr.lbl configure -text $val } ``` 在`setLabel`過程中,我們根據獲得的索引找出值。 此值稍后顯示在標簽窗口小部件中。 ![listbox widget](https://img.kancloud.cn/c2/09/c209791cd70838c609fac3384338f276_302x282.jpg) 圖:`listbox`小部件 在 Tcl/Tk 教程的這一部分中,我們介紹了幾個 Tk 小部件。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看