본문 바로가기
python/tkinter

[Python tkinter GUI] #7 Radiobutton(라디오버튼)

by ohojee 2022. 12. 16.

 

전체 소스코드
from tkinter import *

root = Tk()

root.title("GUI")
root.geometry("300x150")

Label(root, text="메뉴를 선택하세요").pack()

burger_var = IntVar() #int형으로 값 저장
btn_burger1 = Radiobutton(root, text="햄버거", value=1, variable=burger_var)
btn_burger2 = Radiobutton(root, text="치즈버거", value=2, variable=burger_var)
btn_burger3 = Radiobutton(root, text="치킨버거", value=3, variable=burger_var)
btn_burger1.select() #기본값 선택

btn_burger1.pack()
btn_burger2.pack()
btn_burger3.pack()

Label(root, text="음료를 선택하세요").pack()

drink_var = StringVar() #string형으로 값 저장
btn_drint1 = Radiobutton(root, text="콜라", value="콜라", variable=drink_var)
btn_drint2 = Radiobutton(root, text="사이다", value="사이다", variable=drink_var)
btn_drint1.select() #기본값 선택

btn_drint1.pack()
btn_drint2.pack()

def btncmd():
    print(burger_var.get()) #햄버거 중 선택된 라디오 항목의 value 출력
    print(drink_var.get()) #음료 중 선택된 라디오 항목의 value 출력

btn = Button(root, text="주문", command=btncmd)
btn.pack()

root.mainloop()
 
 

Radiobutton
 

라디오버튼은 여러개의 항목 중 하나만 선택할 수 있다

체크박스의 variable을 구할 때는 체크박스 각각 다른 변수로 설정했는데

Radiobox는 여러개 중 하나를 선택하는거라 항목이 그룹으로 묶여있어야함

때문에 variable 기준으로 같은 값들이 grouping된다

Label(root, text="메뉴를 선택하세요").pack()

burger_var = IntVar() #int형으로 값 저장
btn_burger1 = Radiobutton(root, text="햄버거", value=1, variable=burger_var)
btn_burger2 = Radiobutton(root, text="치즈버거", value=2, variable=burger_var)
btn_burger3 = Radiobutton(root, text="치킨버거", value=3, variable=burger_var)
btn_burger1.select() #기본값 선택

btn_burger1.pack()
btn_burger2.pack()
btn_burger3.pack()
 

하나를 선택하면 다른 하나가 선택해제된다

 

Radiobutton grouping
# 햄버거 종류
burger_var = IntVar() #int형으로 값 저장
btn_burger1 = Radiobutton(root, text="햄버거", value=1, variable=burger_var)

# 음료 종류
drink_var = StringVar() #string형으로 값 저장
btn_drint1 = Radiobutton(root, text="콜라", value="콜라", variable=drink_var)
 

소스코드에서 보면 알 수 있듯이 variable이 다르다

같은 variable 값 안에서 하나밖에 선택이 안된다

variable 기준으로 같은 값들이 grouping된다

햄버거와 음료 각각 하나를 선택하고 주문 버튼을 눌러도

알맞게 출력된다

 

댓글