본문 바로가기

tkinter

[파이썬 tkinter] Radiobutton 사용하기

반응형

python tkinter radiobutton 기능 사용하기

 


안녕하세요. 파이썬을 공부하는 가정의학과 전문의 닥터 배입니다.

 

오늘은 python gui tkinter의 Radiobutton 기능을 알아보도록 하겠습니다.

 

오늘 만들어볼 tkinter gui의 결과물은 다음과 같습니다. 

파이썬  tkinter, radiobutton

 


Radiobutton 은 위의 사진에서 보시는 바와 같이
사과, 딸기, 배라는 글자 앞에 있는 작은 원형 모양의 버튼을 말합니다.

예를 들어,
"과일을 선택하세요"라는 질문에
사과를 선택하려면 사과 앞에 있는 radiobutton을 클릭하고
딸기를 선택하려면 딸기 앞에 있는 radiobutton을 클릭하는 것입니다.

 

그럼 파이썬 tkinter 모듈을 사용하여 원하는 과일(예를 들어 "딸기") 앞의 radiobutton을 클릭하면 "딸기를 선택하였습니다." 라는 문구가 나오는 프로그램을 만들어 보겠습니다.

 

 

전체 코드)

import tkinter as tk
from tkinter import *

win = tk.Tk()
win.title("python_GUI_Radiobutton")
win.geometry("600x400")

# Radiobutton을 클릭하면
# "(선택한 radiobutton의 과일)을 선택하였습니다." 라는 문구가
# 출력되도록 하는 함수 설정.

def fruit_rad():
    if fruit.get() == 0:
        lb2.configure(text = "사과를 선택하였습니다.")
    elif fruit.get() == 1:
        lb2.configure(text = "딸기를 선택하였습니다.")
    elif fruit.get() == 2:
        lb2.configure(text = "배를 선택하였습니다.")

# "과일을 선택하세요."라는 텍스트를 가진
# 라벨 만들기

lb1 = tk.Label(win, text = "과일을 선택하세요.", bg = "yellow")
lb1.grid(row= 0, column = 0, columnspan = 3)

# "사과", "딸기", "배" 라는 텍스트를 가진
# Radiobutton 만들기

fruit = tk.IntVar()

rad1 = tk.Radiobutton(win, text ="사과", variable = fruit, value = 0, command = fruit_rad)
rad1.grid(row=1, column=0, sticky = "w")

rad2 = tk.Radiobutton(win, text ="딸기", variable = fruit, value = 1,command = fruit_rad)
rad2.grid(row=1, column=1, sticky = "w")

rad3 = tk.Radiobutton(win, text ="배", variable = fruit, value = 2, command = fruit_rad)
rad3.grid(row=1, column=2, sticky = "w")

# 결과물이 출력되는(현재는 비어있는) 라벨 만들기

lb2 = tk.Label(win)
lb2.grid(row=2, column = 0, sticky = "w", columnspan = 3)

win.mainloop()

 


프로그램의 전반적인 코드는 다음과 같습니다. 그럼 하나 하나 자세히 알아보도록 하겠습니다.

 

import tkinter as tk
from tkinter import *

win = tk.Tk()
win.title("python_GUI_Radiobutton")
win.geometry("600x400")

 

win = tk.Tk()
win 창을 만듭니다.

win.title("python_GUI_Radiobutton")
타이틀을 python_GUI_Radiobutton로 설정합니다.

win.geometry("600x400")
크기를 600x400으로 설정합니다.

 

# Radiobutton을 클릭하면
# "(선택한 radiobutton의 과일)을 선택하였습니다." 라는 문구가
# 출력되도록 하는 함수 설정.

def fruit_rad():
    if fruit.get() == 0:
        lb2.configure(text = "사과를 선택하였습니다.")
    elif fruit.get() == 1:
        lb2.configure(text = "딸기를 선택하였습니다.")
    elif fruit.get() == 2:
        lb2.configure(text = "배를 선택하였습니다.")

 


def fruit_rad():
fruit_chk라는 함수를 정의합니다.

참고로 뒤에 radiobutton 생성할 때 나오는 내용을 미리 말씀드립니다.
사과, 딸기, 배에 각각 해당되는
Raidobutton 1, 2, 3 (Rad1, Rad2, Rad3)을 만듭니다. 각 Radiobutton의 변수를 fruit를 지정하고Rad1의 value 값은 0, Rad2의 value 값은 1, Rad3의 value 값은 2로 설정합니다.

    if fruit.get() == 0:
        lb2.configure(text = "사과를 선택하였습니다.")
    만약 Radiobutton1(Rad1)을 클릭하여
    Rad1의 변수(fruit)의 value 값인 0이 되면
    라벨 2(lb2)에 "사과를 선택하였습니다."가 출력됩니다.

    elif fruit.get() == 1:
        lb2.configure(text = "딸기를 선택하였습니다.")
    그렇지 않고 만약 Raidobutton2(Rad2)을 클릭하여
    Rad2의 변수(fruit)의 value 값인 1이 되면
    라벨2(lb2)에 "딸기를 선택하였습니다."가 출력됩니다.

    elif fruit.get() == 2:
        lb2.configure(text = "배를 선택하였습니다.")
    그렇지 않고 만약 Radiobutton3(Rad3)을 클릭하여
    Rad3의 변수(fruit)의 value 값인 2가 되면
    라벨 2(lb2)에 "배를 선택하였습니다."가 출력됩니다.

 

# "과일을 선택하세요."라는 텍스트를 가진
# 라벨 만들기

lb1 = tk.Label(win, text = "과일을 선택하세요.", bg = "yellow")
lb1.grid(row= 0, column = 0, columnspan = 3)

 

 

lb1 = tk.Label(win, text = "과일을 선택하세요.", bg = "yellow")
"과일을 선택하세요."라는 텍스트를 가진 라벨 1(lb1)을 만듭니다.
배경색은 yellow로 지정해 줍니다.

lb1.grid(row= 0, column = 0, columnspan = 3)
lb1을 0행, 0열에 위치시키고 열을 3개 합칩니다.
행을 3개 합치는 이유는 1행에 열이 3개가 나오기 때문입니다.

 

# "사과", "딸기", "배" 라는 텍스트를 가진
# Radiobutton 만들기

fruit = tk.IntVar()

rad1 = tk.Radiobutton(win, text ="사과", variable = fruit, value = 0, command = fruit_rad)
rad1.grid(row=1, column=0, sticky = "w")

rad2 = tk.Radiobutton(win, text ="딸기", variable = fruit, value = 1,command = fruit_rad)
rad2.grid(row=1, column=1, sticky = "w")

rad3 = tk.Radiobutton(win, text ="배", variable = fruit, value = 2, command = fruit_rad)
rad3.grid(row=1, column=2, sticky = "w")

 


fruit = tk.IntVar()

rad1 = tk.Radiobutton(win, text ="사과", variable = fruit, value = 0, command = fruit_rad)
rad1.grid(row=1, column=0, sticky = "w")
'사과'라는 텍스트를 가진 Radiobutton1(Rad1)을 만들어 줍니다.
이때 변수는 fruit으로 지정하고 value 값은 0으로 설정해 줍니다.
command 명령어를 이용하여 앞서 만든 fruit_rad 함수를 연결해 줍니다.
Rad1의 위치를 1행, 0열로 배치해 주고 왼쪽 정열을 해 줍니다.

rad2 = tk.Radiobutton(win, text ="딸기", variable = fruit, value = 1, command = fruit_rad)
rad2.grid(row=1, column=1, sticky = "w")
'딸기'라는 텍스트를 가진 Radiobutton2(Rad2)을 만들어 줍니다.
이때 변수는 fruit으로 지정하고 value 값은 1로 설정해 줍니다.
command 명령어를 이용하여 앞서 만든 fruit_rad 함수를 연결해 줍니다.
Rad1의 위치를 1행, 1열로 배치해 주고 왼쪽 정열을 해 줍니다.

rad3 = tk.Radiobutton(win, text ="배", variable = fruit, value = 2, command = fruit_rad)
rad3.grid(row=1, column=2, sticky = "w")
'딸기'라는 텍스트를 가진 Radiobutton3(Rad3)을 만들어 줍니다.
이때 변수는 fruit으로 지정하고 value 값은 2로 설정해 줍니다.
command 명령어를 이용하여 앞서 만든 fruit_rad 함수를 연결해 줍니다.
Rad1의 위치를 1행, 2열로 배치해 주고 왼쪽 정열을 해 줍니다.

 

# 결과물이 출력되는(현재는 비어있는) 라벨 만들기

lb2 = tk.Label(win)
lb2.grid(row=2, column = 0, sticky = "w", columnspan = 3)

win.mainloop()

 

lb2 = tk.Label(win)
lb2.grid(row=2, column = 0, sticky = "w", columnspan = 3)
Raidobutton을 클릭했을 때
결과가 출력될 비어있는 라벨(lb2)을 만들고 2행, 0열에 위치시킵니다.
왼쪽 정열을 하고 열 3개를 합칩니다.

자~ 그럼 코딩이 완성되었습니다. 실행을 한번 해 볼까요?

 

결과 영상)

파이썬 tkinter radiobutton 실행

 

결과 사진)

파이썬 tkinter radiobutton 실행

 


영상에서 보시듯이 사과를 선택하면 "사과를 선택하였습니다."가,

딸기를 선택하면 "딸기를 선택하였습니다."가 출력되는 것을 볼 수 있습니다.

간단하지만 그래도 스스로 해냈다는 보람이 있습니다. 닥터 배의 코딩 도전은 계속될 것입니다~^^

반응형