tkinter 提供了下列 21 種 GUI 元件

tkinter 提供了下列 21 種 GUI 元件, 稱為 widget (視窗元件) 或 control (控制項), 所謂 widget 乃 Window gadget 之意  :

Label (標籤)
Button (按鈕)
Radiobutton (單選圓鈕)
Checkbutton (核取方塊)
Entry (文字欄位)
Frame (框)
LabelFrame (文字框)
Listbox (清單方塊)
Text (文字框)
Message
PanedWindow
Scrollbar (捲軸)
Scale
Spinbox
Menu (選單)
OptionMenu
Menubutton (選單按鈕)
Canvas (畫布)
Image (圖片)
Bitmap (點陣圖)
Toplevel


下面先來測試其中最常用的 Button (按鈕) 與 Label (標籤) 元件, 把下列程式用記事本存成 test.py :
import tkinter as tk
root=tk.Tk()     #建立視窗容器物件
root.title("Tk GUI")
label=tk.Label(root, text="Hello World!")   #建立標籤物件
label.pack()       #將元件放入容器
button=tk.Button(root, text="OK")
button.pack()     #將元件放入容器
root.mainloop()

然後在命令提示字元視窗執行 :
D:\Python\test>python test.py

在呼叫 pack() 函數做版面管理的話, tkinter 會將元件由上而下水平置中順序排版.

注意, 在建立 GUI 元件時, 第一個參數必須為其容器物件 (此處為 root 變數所代表之視窗), 格式如下 :

元件變數=元件名稱(容器物件變數, [元件選項]) 

其他為元件之選項參數, 例如標籤文字 (text), 大小(size), 邊框 (border), 前景顏色 (foreground), 或背景顏色 (background), 有些選項所有元件都有, 但每一種元件也有特定之選項, 可以在建立元件時直接設定, 也可以在建立之後呼叫 configure() 函數或其別名 config() 來設定.


其次, 所建立的元件必須利用版面管理員 (geometry manager) 於視窗容器中定位, 這樣它才會在視窗中顯現, 而此 pack() 函數就是一個版面管理員, 它會由上而下擺放元件.

如果是使用 star import 匯入方式, 上面程式的寫法要改為 :

from tkinter import *
root=Tk()
root.title("Tk GUI")
label=Label(root, text="Hello World!")
button=Button(root, text="OK")
label.pack()
button.pack()
root.mainloop()

ㄟ, 這個寫法好像比較簡單哩! 不用寫 tk. 如果只是寫個簡單的視窗程式或做測試這樣寫很簡便, 但如果寫比較複雜的系統就不宜用 star import 方式, 因為可能會使命名空間衝突導致 debug 變得很麻煩.


grid() 函數使用網格版面來管理元件 :

from tkinter import *
root=Tk()
root.title("Tk GUI")
label=Label(root, text="Hello World!")
button=Button(root, text="OK")
label.grid(column=0,row=0)
button.grid(column=1,row=0)
root.mainloop()




在呼叫 grid() 時, 我們將 label 放在 0 行 0 列, button 放在 1 行 0 列, 亦即這是一個 1x2 (1 列 2 行) 的網格, 因此元件是左右各排一個.




留言

這個網誌中的熱門文章

python serial 模組使用方法 #1

USB HID 教學 #1(轉載)

USB HID 教學 #2 (轉載)