<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # Tkinter 小部件 > 原文: [http://zetcode.com/tkinter/widgets/](http://zetcode.com/tkinter/widgets/) 在 Tkinter 教程的這一部分中,我們將介紹一些基本的 Tkinter 小部件。 我們使用以下小部件:`Checkbutton`,`Label`,`Scale`和`Listbox`。 小部件是 GUI 應用的基本構建塊。 多年以來,幾個小部件已成為所有 OS 平臺上所有工具包中的標準。 例如按鈕,復選框或滾動條。 其中一些名稱可能不同。 例如,在 Tkinter 中,復選框稱為復選框。 Tkinter 具有一小組可滿足基本編程需求的小部件。 可以將更多專門的窗口小部件創建為自定義窗口小部件。 ## Tkinter `Checkbutton` `Checkbutton`是具有兩種狀態的窗口小部件:打開和關閉。 接通狀態通過復選標記顯示。 (某些主題可能具有不同的視覺效果。)它用來表示某些布爾屬性。 `Checkbutton`小部件提供一個帶有文本標簽的復選框。 `check_button.py` ```py #!/usr/bin/env python3 """ ZetCode Tkinter tutorial This program toggles the title of the window with the Checkbutton widget. Author: Jan Bodnar Last modified: April 2019 Website: www.zetcode.com """ from tkinter import Tk, Frame, Checkbutton from tkinter import BooleanVar, BOTH class Example(Frame): def __init__(self): super().__init__() self.initUI() def initUI(self): self.master.title("Checkbutton") self.pack(fill=BOTH, expand=True) self.var = BooleanVar() cb = Checkbutton(self, text="Show title", variable=self.var, command=self.onClick) cb.select() cb.place(x=50, y=50) def onClick(self): if self.var.get() == True: self.master.title("Checkbutton") else: self.master.title("") def main(): root = Tk() root.geometry("250x150+300+300") app = Example() root.mainloop() if __name__ == '__main__': main() ``` 在我們的示例中,我們在窗口上放置了一個檢查按鈕。 復選按鈕顯示或隱藏窗口的標題。 ```py self.var = BooleanVar() ``` 我們創建一個`BooleanVar`對象。 它是 Tkinter 中小部件的布爾值的值持有者。 ```py cb = Checkbutton(self, text="Show title", variable=self.var, command=self.onClick) ``` 創建`Checkbutton`的實例。 值持有者通過`variable`參數連接到窗口小部件。 當我們單擊檢查按鈕時,將調用`onClick()`方法。 這是通過`command`參數完成的。 ```py cb.select() ``` 最初,標題顯示在標題欄中。 因此,一開始,我們使用`select()`方法對其進行了檢查。 ```py if self.var.get() == True: self.master.title("Checkbutton") else: self.master.title("") ``` 在`onClick()`方法內部,我們根據`self.var`變量中的值顯示或隱藏標題。 ![Checkbutton](https://img.kancloud.cn/a1/2f/a12fc3d56c50983d6a4602b24db65464_252x176.jpg) 圖:`Checkbutton` ## Tkinter 標簽 `Label`小部件用于顯示文本或圖像。 沒有用戶交互。 `label.py` ```py #!/usr/bin/env python3 """ ZetCode Tkinter tutorial In this script, we use the Label widget to show an image. Author: Jan Bodnar Last modified: April 2019 Website: www.zetcode.com """ from PIL import Image, ImageTk from tkinter import Tk from tkinter.ttk import Frame, Label import sys class Example(Frame): def __init__(self): super().__init__() self.loadImage() self.initUI() def loadImage(self): try: self.img = Image.open("tatras.jpg") except IOError: print("Unable to load image") sys.exit(1) def initUI(self): self.master.title("Label") tatras = ImageTk.PhotoImage(self.img) label = Label(self, image=tatras) # reference must be stored label.image = tatras label.pack() self.pack() def setGeometry(self): w, h = self.img.size self.master.geometry(("%dx%d+300+300") % (w, h)) def main(): root = Tk() ex = Example() ex.setGeometry() root.mainloop() if __name__ == '__main__': main() ``` 我們的示例在窗口上顯示圖像。 ```py from PIL import Image, ImageTk ``` 默認情況下,`Label`小部件只能顯示一組有限的圖像類型。 要顯示 JPG 圖像,我們必須使用 PIL,Python Imaging Library 模塊。 通過 [Pillow 教程](/python/pillow/)了解有關 PIL 的更多信息。 ```py self.img = Image.open("tatras.jpg") ``` 我們從當前工作目錄中的圖像文件創建一個`Image`。 ```py tatras = ImageTk.PhotoImage(self.img) ``` 我們根據圖像創建照片圖像。 ```py label = Label(self, image=tatras) ``` 將照片圖像提供給標簽窗口小部件的`image`參數。 ```py label.image = tatras ``` 為了不被垃圾收集,必須存儲圖像引用。 ```py w, h = self.img.size self.master.geometry(("%dx%d+300+300") % (w, h)) ``` 我們使窗口的大小完全適合圖像的大小。 ## Tkinter 刻度 `Scale`是一個小部件,可讓用戶通過在有限間隔內滑動旋鈕以圖形方式選擇一個值。 我們的示例將在標簽小部件中顯示一個選定的數字。 `scale.py` ```py #!/usr/bin/env python3 """ ZetCode Tkinter tutorial In this script, we show how to use the Scale widget. Author: Jan Bodnar Last modified: April 2019 Website: www.zetcode.com """ from tkinter import Tk, BOTH, IntVar, LEFT from tkinter.ttk import Frame, Label, Scale, Style class Example(Frame): def __init__(self): super().__init__() self.initUI() def initUI(self): self.master.title("Scale") self.style = Style() self.style.theme_use("default") self.pack(fill=BOTH, expand=1) scale = Scale(self, from_=0, to=100, command=self.onScale) scale.pack(side=LEFT, padx=15) self.var = IntVar() self.label = Label(self, text=0, textvariable=self.var) self.label.pack(side=LEFT) def onScale(self, val): v = int(float(val)) self.var.set(v) def main(): root = Tk() ex = Example() root.geometry("250x100+300+300") root.mainloop() if __name__ == '__main__': main() ``` 上面的腳本中有兩個小部件:標尺和標簽。 標簽控件中顯示了比例控件的值。 ```py scale = Scale(self, from_=0, to=100, command=self.onScale) ``` `Scale`小部件已創建。 我們提供上下限。 `from`是常規的 Python 關鍵字,這就是為什么第一個參數后會有下劃線的原因。 當我們移動秤的旋鈕時,將調用`onScale()`方法。 ```py self.var = IntVar() self.label = Label(self, text=0, textvariable=self.var) ``` 創建一個整數值持有者和標簽小部件。 持有者的值顯示在標簽小部件中。 ```py def onScale(self, val): v = int(float(val)) self.var.set(v) ``` `onScale()`方法從縮放窗口小部件接收當前選擇的值作為參數。 該值首先轉換為浮點數,然后轉換為整數。 最后,將值設置為標簽窗口小部件的值持有者。 ![Scale](https://img.kancloud.cn/26/64/266498f8f8c56e9199b99405716066ab_252x126.jpg) 圖:`Scale` ## Tkinter 列表框 `Listbox`是顯示對象列表的窗口小部件。 它允許用戶選擇一項或多項。 `listbox.py` ```py #!/usr/bin/env python3 """ ZetCode Tkinter tutorial In this script, we show how to use the Listbox widget. Author: Jan Bodnar Last modified: April 2019 Website: www.zetcode.com """ from tkinter import Tk, BOTH, Listbox, StringVar, END from tkinter.ttk import Frame, Label class Example(Frame): def __init__(self): super().__init__() self.initUI() def initUI(self): self.master.title("Listbox") self.pack(fill=BOTH, expand=1) acts = ['Scarlett Johansson', 'Rachel Weiss', 'Natalie Portman', 'Jessica Alba'] lb = Listbox(self) for i in acts: lb.insert(END, i) lb.bind("<<ListboxSelect>>", self.onSelect) lb.pack(pady=15) self.var = StringVar() self.label = Label(self, text=0, textvariable=self.var) self.label.pack() def onSelect(self, val): sender = val.widget idx = sender.curselection() value = sender.get(idx) self.var.set(value) def main(): root = Tk() ex = Example() root.geometry("300x250+300+300") root.mainloop() if __name__ == '__main__': main() ``` 在我們的示例中,我們顯示了`Listbox`中的女演員列表。 當前選擇的女演員顯示在標簽小部件中。 ```py acts = ['Scarlett Johansson', 'Rachel Weiss', 'Natalie Portman', 'Jessica Alba'] ``` 這是要在列表框中顯示的女演員列表。 ```py lb = Listbox(self) for i in acts: lb.insert(END, i) ``` 我們創建`Listbox`的實例,并插入上述列表中的所有項目。 ```py lb.bind("<<ListboxSelect>>", self.onSelect) ``` 當我們在列表框中選擇一個項目時,將生成`<<ListboxSelect>>`事件。 我們將`onSelect()`方法綁定到此事件。 ```py self.var = StringVar() self.label = Label(self, text=0, textvariable=self.var) ``` 將創建標簽及其值持有者。 在此標簽中,我們將顯示當前選擇的項目。 ```py sender = val.widget ``` 我們得到了事件的發送者。 這是我們的列表框小部件。 ```py idx = sender.curselection() ``` 我們使用`curselection()`方法找出所選項目的索引。 ```py value = sender.get(idx) ``` 使用`get()`方法檢索實際值,該方法獲取項目的索引。 ```py self.var.set(value) ``` 最后,標簽被更新。 ![Listbox widget](https://img.kancloud.cn/ac/74/ac74cee4d21e36ed84e2681572595599_302x276.jpg) 圖:`Listbox`小部件 在 Tkinter 教程的這一部分中,我們介紹了幾個 Tkinter 小部件。
                  <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>

                              哎呀哎呀视频在线观看