Python GUI程式設計實戰--Tkinter元件詳解:Entry
Radiobutton控制元件
Radiobutton(單選按鈕):元件用於實現多選一的問題。Radiobutton 元件可以包含文字或影象,每一個按鈕都可以與一個 Python 的函式或方法與之相關聯,當按鈕被按下時,對應的函式或方法將被自動執行。
Radiobutton 元件僅能顯示單一字型的文字,但文字可以跨越多行。另外,還可以為其中的個別字元加上下劃線(例如用於表示鍵盤快捷鍵)。預設情況下,tab 按鍵被用於在按鈕間切換。
每一組Radiobutton 元件應該只與一個變數相關聯,然後每一個按鈕表示該變數的單一值。
何時使用 Radiobutton 元件?
Radiobutton 元件是用於實現多選一的問題,它幾乎總是成組地被使用,其中所有成員共用相同的變數。
用法
Radiobutton 元件跟 Checkbutton 元件非常相似,為了實現其“單選”行為,確保一組中的所有按鈕的variable 選項都使用同一個變數,並使用 value 選項來指定每個按鈕代表什麼值:
引數
Radiobutton(master=None, **options) (class)
master – 父元件
**options – 元件選項
下面詳細列舉了各個選項的具體含義和用法:
activebackground
- 設定當 Radiobutton 處於活動狀態(通過 state 選項設定狀態)的背景色
- 預設值由系統指定
activeforeground
- 設定當 Radiobutton 處於活動狀態(通過 state 選項設定狀態)的前景色
- 預設值由系統指定
anchor
- 控制文字(或影象)在 Radiobutton 中顯示的位置
- N, NE, E, SE, S, SW, W, NW, 或 CENTER 來定位(EWSN代表東西南北,上北下南左西右東)
- 預設值是 CENTER
background <==>bg
- 設定背景顏色
- 預設值由系統指定
bitmap
- 指定顯示到 Radiobutton 上的點陣圖
- 如果指定了 image 選項,則該選項被忽略
borderwidth <==>db
- 指定 Radiobutton 的邊框寬度
- 預設值由系統指定,通常是 1 或 2 畫素
command
- 指定於該按鈕相關聯的函式或方法
- 當按鈕被按下時由 Tkinter 自動呼叫對應的函式或方法
- 如果不設定此選項,那麼該按鈕被按下後啥事兒也不會發生
compound
- 控制 Radiobutton 中文字和影象的混合模式
- 預設情況下,如果有指定點陣圖或圖片,則不顯示文字
- 如果該選項設定為 CENTER,文字顯示在影象上(文字重疊影象)
- 如果該選項設定為 BOTTOM,LEFT,RIGHT 或 TOP,那麼影象顯示在文字的旁邊(如 BOTTOM,則影象在文字的下方)
- 預設值是 NONE
cursor
- 指定當滑鼠在 Radiobutton 上飄過的時候的滑鼠樣式
- 預設值由系統指定
disabledforeground
- 指定當 Radiobutton 不可用的時候前景色的顏色
- 預設值由系統指定
font
- 指定 Radiobutton 中文字的字型
- 一個 Radiobutton 只能設定一種字型
- 預設值由系統指定
foreground <==>fg
- 設定 Radiobutton 的文字和點陣圖的顏色
- 預設值由系統指定
height
- 設定 Radiobutton 的高度
- 如果 Radiobutton 顯示的是文字,那麼單位是文字單元
- 如果 Radiobutton 顯示的是影象,那麼單位是畫素(或螢幕單元)
- 如果設定為 0 或者乾脆不設定,那麼會自動根據 Radiobutton 的內容計算出高度
highlightbackground
- 指定當 Radiobutton 沒有獲得焦點的時候高亮邊框的顏色
- 預設值由系統指定,通常是標準背景顏色
highlightcolor
- 指定當 Radiobutton 獲得焦點的時候高亮邊框的顏色
- 預設值由系統指定
highlightthickness
- 指定高亮邊框的寬度
- 預設值由系統指定,通常是 1 或 2 畫素
image
- 指定 Radiobutton 顯示的圖片
- 該值應該是 PhotoImage,BitmapImage,或者能相容的物件
- 該選項優先於 text 和 bitmap 選項
indicatoron
- 指定前邊作為選擇的小圓圈是否繪製
- 預設是繪製的
- 該選項會影響到按鈕的樣式,如果設定為 False,則點選後該按鈕變成 SUNKEN(凹陷),再次點選變為 RAISED(凸起)
justify
- 定義如何對齊多行文字
- 使用 LEFT,RIGHT 或 CENTER
- 注意,文字的位置取決於 anchor 選項
- 預設值是 CENTER
padx
- 指定 Radiobutton 水平方向上的額外間距(內容和邊框間)
- 預設值是 1
pady
- 指定 Radiobutton 垂直方向上的額外間距(內容和邊框間)
- 預設值是 1
relief
- 指定邊框樣式
- 可以設定 SUNKEN,RAISED,GROOVE,RIDGE 或 FLAT
- 如果 indicatoron 選項設定為 True,則預設值是 FLAT,否則為 RAISED
selectcolor
- 選擇框的顏色
- 預設值由系統指定
selectimage
- 設定當 Radiobutton 為選中狀態的時候顯示的圖片
- 如果沒有指定 image 選項,該選項被忽略
state
- 指定 Radiobutton 的狀態
- 預設值是 NORMAL
- 另外你還可以設定 ACTIVE 或 DISABLED
takefocus
- 如果是 True,該元件接受輸入焦點(使用者可以通過 tab 鍵將焦點轉移上來)
- 預設值是 False
text
- 指定 Radiobutton 顯示的文字
- 文字可以包含換行符
- 如果設定了 bitmap 或 image 選項,該選項則被忽略
textvariable
- Radiobutton 顯示 Tkinter 變數(通常是一個 StringVar 變數)的內容
- 如果變數被修改,Radiobutton 的文字會自動更新
underline
- 跟 text 選項一起使用,用於指定哪一個字元畫下劃線(例如用於表示鍵盤快捷鍵)
- 預設值是 -1
- 例如設定為 1,則說明在 Radiobutton 的第 2 個字元處畫下劃線
value
- 標誌該單選按鈕的值
- 在同一組中的所有按鈕應該擁有各不相同的值
- 通過將該值與 variable 選項的值對比,即可判斷使用者選中了哪個按鈕
variable
- 與 Radiobutton 元件關聯的變數
- 同一組中的所有按鈕的 variable 選項應該都指向同一個變數
- 通過將該變數與 value 選項的值對比,即可判斷使用者選中了哪個按鈕
width
- 設定 Radiobutton 的寬度
- 如果 Radiobutton 顯示的是文字,那麼單位是文字單元
- 如果 Radiobutton 顯示的是影象,那麼單位是畫素(或螢幕單元)
- 如果設定為 0 或者乾脆不設定,那麼會自動根據 Radiobutton 的內容計算出寬度
wraplength
- 決定 Radiobutton 的文字應該被分成多少行
- 該選項指定每行的長度,單位是螢幕單元
- 預設值是 0
常用方法:
deselect():-- 取消該按鈕的選中狀態。
flash():
– 重新整理 Radiobutton 元件,該方法將重繪Radiobutton 元件若干次(在 ACTIVE 和NORMAL 狀態間切換)。
– 該方法在除錯的時候很有用,也可以使用此方法提醒使用者激活了該按鈕。
invoke():
– 呼叫 Radiobutton 中 command 選項指定的函式或方法,並返回函式的返回值。
– 如果 Radiobutton 的狀態是 DISABLED(不可用)或沒有指定 command 選項,則該方法無效。
select():-- 將 Radiobutton 元件設定為選中狀態。
實戰內容:
1.建立三個RadioButton,實現簡單的選擇按鈕
from tkinter import *
window = Tk()
window.title("My Window")
window.geometry('200x180')
var = StringVar()
lb = Label(window, bg='yellow',width=20,
text='empty')
lb.pack()
def print_selection():
lb.config(text='You have selected ' + var.get())
# 建立RadioButton按鈕
rb1 = Radiobutton(window, text='Option A',
variable= var, value='A', command=print_selection)
rb1.pack()
rb2 = Radiobutton(window, text='Option B',
variable= var, value='B', command=print_selection)
rb2.pack()
rb3 = Radiobutton(window, text='Option C',
variable= var, value='C', command=print_selection)
rb3.pack()
window.mainloop()
2.製作三個選項框,通過選項框改變窗體背景顏色
import tkinter as tk
window = tk.Tk()
window.title("Python GUI")
window.geometry('200x180')
# 定義幾個顏色的全域性變數
COLOR1 = "Blue"
COLOR2 = "Gold"
COLOR3 = "Red"
# 單選按鈕回撥函式,就是當單選按鈕被點選會執行該函式
def radCall():
radSel = radVar.get()
if radSel == 1:
# 設定整個介面的背景顏色
window.configure(background=COLOR1)
elif radSel == 2:
window.configure(background=COLOR2)
elif radSel == 3:
window.configure(background=COLOR3)
# 通過tk.IntVar() 獲取單選按鈕value引數對應的值
radVar = tk.IntVar()
# 當該單選按鈕被點選時,會觸發引數command對應的函式
rad1 = tk.Radiobutton(window, text=COLOR1, variable=radVar,
value=1, command=radCall)
# 引數sticky對應的值參考複選框的解釋
rad1.grid(column=0, row=5, sticky=tk.W)
rad2 = tk.Radiobutton(window, text=COLOR2, variable=radVar,
value=2, command=radCall)
rad2.grid(column=1, row=5, sticky=tk.W)
rad3 = tk.Radiobutton(window, text=COLOR3, variable=radVar,
value=3, command=radCall)
rad3.grid(column=2, row=5, sticky=tk.W)
window.mainloop()