通常設計輸入介面時,如果在多個選項中只能挑選其中一項時,我們可以使用選項按鈕元件來設計。只要其中一個選項按鈕被選取,則其他選項按鈕自動變成不被選取。下圖是「接龍」遊戲中「選項」的設定畫面,其中「發牌」群組中「發一張牌」、「發三張牌」只能二選一。
「計分」群組則只能三選一。

建立Radiobutton的語法如下:
物件變數 = tkinter.Radiobutton(容器物件, [參數1=值1, 參數2=值2, …])Radiobutton可使用Label提供的參數,下表是Radiobutton常用的參數說明:
| 參數 | 說明 |
|---|---|
value | 代表選項按鈕的值。 |
command | 選項按鈕狀態改變時會執行 command 所指定的函式。使用方式與按鈕相同。 |
textvariable | 代表選項按鈕的文字物件,用來存取選項按鈕上的文字。使用時必須先透過 tkinter 模組的 IntVar()、DoubleVar()、StringVar()、BooleanVar() 方法定義選項按鈕代表文字物件要使用資料型別。使用方式和文字方塊的 textvariable 相同。 |
variable | 指定選項按鈕的變數,可用來存取選項按鈕的狀態,同一群組的選項按鈕名稱要設為相同。 如下寫法,建立性別選項按鈕有 ‘男’ 和 ‘女’ 選項,‘男’ 選項的值為 ‘先生’,‘女’ 選項的值為 ‘小姐’,選項按鈕群組的變數為 gender,預設選取為 ‘男’ 選項(值為 ‘先生’)。gender.set('先生')radM=tk.Radiobutton(win,text='男',variable=gender,value='先生');radF=tk.Radiobutton(win,text='女',variable=gender,value='小姐'); |
image | 使用圖片代表選項按鈕的選項內容。可參考 11.9 節。 |
[簡例] 使用文字方塊與選項按鈕製作個人簡歷表,文字方塊用來讓使用者填入姓名,選項按鈕用來讓使用者指定性別與學歷資訊。 (檔名:radiobutton01.py)
[結果]

程式碼:
radiobutton01.pyimport tkinter as tk from tkinter import messagebox as msgbox #定義fnOk函式,當按下確定鈕會執行此函式 def fnOk(): # 取得學歷的value值,即代表第幾個項目 index = edu.get(); # 將顯示結果指定給result變數 result = '{0}{1}的學歷是{2}'.format(name.get(), gender.get() , eduAry[index]) msgbox.showinfo('個人簡歷', result) win = tk.Tk() win.title('選按按鈕範例') win.geometry('450x150') # 指定tkinter模組的字串物件name,是txtName文字欄的變數 name=tk.StringVar() # 指定tkinter模組的字串物件gender,是radM男和radF女選項按鈕的變數 gender=tk.StringVar() # 指定tkinter模組的整數物件edu,是國小, 國中, 高中職, 大學, 碩博士選項按鈕的變數 edu=tk.IntVar() # 建立姓名lblName標籤 lblName = tk.Label(win, text='姓名', padx=10, pady=8) lblName.grid(row=0, column=0) # 建立txtName文字欄,此文字欄代表變數為name txtName = tk.Entry(win, width=10, textvariable=name) txtName.grid(row=0, column=1) # 建立性別lblGender標籤 lblGender = tk.Label(win, text='性別', padx=10, pady=8) lblGender.grid(row=1, column=0) # 建立radM男和radF女選項按鈕,預設 '男' 選項按鈕被選取 gender.set('先生') radM = tk.Radiobutton(win, text='男', variable=gender ,value='先生'); radM.grid(row=1, column=1) radF = tk.Radiobutton(win, text='女', variable=gender ,value='小姐'); radF.grid(row=1, column=2) # 建立學歷lblEdu標籤 lblEdu = tk.Label(win, text='學歷', padx=10, pady=8) lblEdu.grid(row=2, column=0) eduAry=['國小', '國中','高中職','大學', '碩博士'] # 建立學歷選項按鈕,有國小, 國中, 高中職, 大學, 碩博士選項,代表變數為edu for i in range(5): tk.Radiobutton(win, text=eduAry[i], variable=edu, value=i).grid(row=2, column=(1+i)) # 預設 '大學' 選項被選取 edu.set(3) # 建立btnOk按鈕,按下此鈕會執行fnOk函式 btnOk = tk.Button(win, text='確定', command=fnOk ) btnOk.grid(row=3, column=0) win.mainloop()
說明
- 第
28行:建立eduAry[0]~eduAry[4]串列元素值依序為「國小」、「國中」、「高中職」、「大學」、「碩博士」。- 第
2930行:使用迴圈建立國小,國中,高中職,大學,碩博士的選項按鈕,這五個選項按鈕的value值為04,選項按鈕變數為edu。
相關主題與延伸閱讀
- 0. 章節索引:本章全部筆記的學習地圖與快速查找。
- 1. tkinter 套件:
tkinter套件的整體介紹與元件總覽。 - 8. Checkbutton 核取按鈕元件:同樣是選項元件,但
Checkbutton可複選、Radiobutton僅能單選,適合對照學習。 - 5. Entry 文字方塊元件:本篇範例中與選項按鈕並用,讓使用者輸入姓名。
- 6. messagebox 對話方塊元件:選取完成後以對話方塊顯示個人簡歷結果。
- 10. 遊戲銷售統計:以
Radiobutton選取遊戲名稱,是選項按鈕的綜合應用案例。