본문 바로가기

개발자 모드/파이썬(python)

파이썬 tkinter로 라디오버튼 응용하기(chat gpt)

728x90
import tkinter as tk
from tkinter import ttk
from tkinter import messagebox

# 선택된 값을 저장할 변수들
selected_values = {}

def show_selected():
    """사용자가 선택한 라디오 버튼 값 출력"""
    result = []
    for key, var in selected_values.items():
        selected = var.get()
        if selected:
            result.append(f"{key}: {selected}")
    messagebox.showinfo("선택된 값", "\n".join(result) if result else "아무것도 선택되지 않았습니다.")

# 메인 윈도우 생성
root = tk.Tk()
root.title("Tkinter GUI 구조")
root.geometry("500x400")

# a 프레임 생성
frame_a = ttk.LabelFrame(root, text="a")
frame_a.pack(fill="x", padx=10, pady=5)

# a 프레임 내부 라디오버튼 (1,2 세트)
var_a = tk.IntVar()
selected_values["a"] = var_a
tk.Radiobutton(frame_a, text="1", variable=var_a, value=1, fg="blue").pack(anchor="w")
tk.Radiobutton(frame_a, text="2", variable=var_a, value=2, fg="blue").pack(anchor="w")

# 기본값 설정 (a의 첫 번째 버튼 선택)
var_a.set(1)

# b 프레임 생성
frame_b = ttk.LabelFrame(root, text="b")
frame_b.pack(fill="x", padx=10, pady=5)

# b 내부 프레임 리스트 (100~400)
b_values = {100: [3, 4], 200: [5, 6], 300: [7, 8], 400: [9, 10]}
for key, values in b_values.items():
    sub_frame = ttk.LabelFrame(frame_b, text=str(key))
    sub_frame.pack(side="left", padx=5, pady=5)
    var = tk.IntVar()  # 세트마다 하나의 variable 사용
    selected_values[key] = var
    for val in values:
        tk.Radiobutton(sub_frame, text=str(val), variable=var, value=val, fg="blue").pack(anchor="w")
   
    # 기본값 설정 (각 b 프레임에서 첫 번째 버튼 선택)
    var.set(values[0])

# c 프레임 생성
frame_c = ttk.LabelFrame(root, text="c")
frame_c.pack(fill="x", padx=10, pady=5)

# c 내부 프레임 리스트 (500~800)
c_values = {500: [11, 12], 600: [13, 14], 700: [15, 16], 800: [17, 18]}
for key, values in c_values.items():
    sub_frame = ttk.LabelFrame(frame_c, text=str(key))
    sub_frame.pack(side="left", padx=5, pady=5)
    var = tk.IntVar()  # 세트마다 하나의 variable 사용
    selected_values[key] = var
    for val in values:
        tk.Radiobutton(sub_frame, text=str(val), variable=var, value=val, fg="blue").pack(anchor="w")
   
    # 기본값 설정 (각 c 프레임에서 첫 번째 버튼 선택)
    var.set(values[0])

# 실행 버튼 추가
btn_execute = ttk.Button(root, text="실행", command=show_selected)
btn_execute.pack(pady=10)

# GUI 실행
root.mainloop()

 

 

위의 코드를 사용하면 간단한 

 

라디오버튼 예제가 실행된다

 

결과

 

 

728x90