이 글에서는 비율(ratio)을 계산하는 실용적인 GUI 애플리케이션을 만드는 방법을 알아봅니다. 완전히 동작하는 애플리케이션을 만들기 위해 SpinBox 위젯을 사용할 것입니다. SpinBox는 특정 값 범위 내에서 사용자가 값을 손쉽게 조정할 수 있도록 해주는 위젯으로, 최솟값부터 최댓값까지의 범위 안에서 값을 선택할 수 있습니다.
먼저 tkinter 프레임을 생성하고, 그 안에 필요한 위젯들을 정의하는 방식으로 애플리케이션을 구성해 보겠습니다.
예제 코드
from tkinter import *
win = Tk()
win.title("Ratio Calculator")
win.geometry("600x500")
win.resizable(0,0)
# 비율 계산기용 텍스트 라벨 생성
label= Label(win, text="Ratio Calculator", font=('Times New Roman', 25))
# 값을 계산하는 함수 정의
def ratio_cal():
a1=int(a.get())
b1= int(b.get())
c1= int(c.get())
val= (b1*c1)/a1
x_val.config(text=val)
# 추가 프레임 생성
frame= Frame(win)
frame.pack()
# A, B, C를 위한 스핀박스 생성
a= Spinbox(frame, from_=0, to= 100000, font=('Times New Roman', 14), width=10)
a.pack(side=LEFT,padx=10, pady=10)
b= Spinbox(frame,from_=0, to=100000, font=('Times New Roman', 14), width=10)
b.pack(side=LEFT, padx= 10, pady=10)
c= Spinbox(frame, from_=0, to=100000, font=('Times New Roman', 14), width= 10)
c.pack(side= LEFT, padx=10, pady=10)
x_val= Label(frame, text="",font=('Times New Roman', 18))
x_val.pack(side=LEFT)
# 결과를 계산하는 버튼 생성
Button(win, text= "Calculate",command=ratio_cal, borderwidth=3, fg="white",
bg="black", width=15).pack(pady=20)
win.mainloop()실행 결과
위 코드를 실행하면 GUI 기반의 비율 계산기가 생성됩니다. 세 개의 스핀박스에 A, B, C 값을 입력하고 Calculate 버튼을 누르면, (B × C) ÷ A 공식에 따라 계산된 결과가 화면에 표시됩니다.

코드 설명
이 애플리케이션의 핵심 동작 원리를 살펴보면 다음과 같습니다.
1. 메인 윈도우 설정: Tk()로 메인 윈도우를 생성하고, title(), geometry(), resizable() 메서드를 사용해 창 제목, 크기(600×500), 크기 조정 여부를 설정합니다.
2. 계산 함수 정의: ratio_cal() 함수는 세 개의 스핀박스에서 값을 가져와 정수로 변환한 뒤, 비율 공식 (B × C) / A를 계산합니다. 결과는 x_val 라벨의 config() 메서드를 통해 화면에 갱신됩니다.
3. 스핀박스 구성: 세 개의 Spinbox 위젯은 0부터 100,000까지의 값을 지원하며, pack() 메서드의 side=LEFT 옵션으로 가로 방향으로 나란히 배치됩니다. padx와 pady 옵션으로 위젯 간 여백을 조절합니다.
4. 버튼과 이벤트 연결: Button 위젯의 command 매개변수에 ratio_cal 함수를 연결하여, 버튼을 클릭할 때마다 계산이 수행되도록 합니다.
이처럼 Tkinter의 기본 위젯만으로도 간단하지만 실용적인 계산기 애플리케이션을 손쉽게 구현할 수 있습니다. 필요에 따라 스핀박스의 범위를 조정하거나 소수점 처리, 입력값 유효성 검사 등을 추가하여 더 완성도 높은 프로그램으로 확장할 수 있습니다.