이 글에서는 Python의 Tkinter 라이브러리를 활용해 이동하는 물체의 평균 속도를 계산하는 GUI 기반 애플리케이션을 만드는 방법을 소개합니다.
평균 속도는 다음 공식을 사용하여 계산할 수 있습니다.
평균 속도 = 거리 / [시간 + (분/60)]
사용자 입력값을 받기 위해 특정 범위의 값을 선택할 수 있는 SpinBox(스핀박스) 위젯을 사용합니다. 입력 항목은 총 세 가지로, 거리(Km), 시간(Hours), 분(Minutes)입니다.
전체 예제 코드
from tkinter import *
# Tkinter 프레임 인스턴스 생성
win = Tk()
# 창 크기 설정 및 리사이즈 비활성화
win.geometry("700x400")
win.resizable(0, 0)
win.title("Average Speed Calculator")
# 메인 창 제목 레이블 생성
Label(win, text="Average Speed Calculator", font=("Times New Roman", 18, "bold"),
fg="black").pack()
# 평균 속도 계산 함수
def average_cal():
# 시간(Hours) 값 가져오기
hrs = int(hours.get())
# 분(Minutes) 값 가져오기
mins = int(minutes.get())
# 거리(Distance) 값 가져오기
dist = int(distance.get())
# 평균 속도 계산 공식 적용
avg = dist / (hrs + (mins / 60))
# config() 메서드로 레이블 텍스트 변경
average_speed.config(text=f"{avg} Km/Hr")
# 여러 개의 프레임 생성
frame = Frame(win)
frame.pack()
frame1 = Frame(win)
frame1.pack()
frame2 = Frame(win)
frame2.pack()
# 레이블과 스핀박스 생성
Label(frame, text="Hours", width=15, font=("Times New Roman", 12, "bold"),
borderwidth=2, relief="solid").pack(side=LEFT, padx=10, pady=10)
hours = Spinbox(frame, from_=0, to=1000000, width=5,
font=("Times New Roman", 12, "bold"))
hours.pack(side=LEFT, pady=10)
Label(frame1, text="Minutes", width=15, font=("Times New Roman", 12, "bold"),
borderwidth=2, relief="solid").pack(side=LEFT, padx=10, pady=10)
minutes = Spinbox(frame1, from_=0, to=10000000, width=5,
font=("Times New Roman", 12, "bold"))
minutes.pack(side=LEFT, pady=10)
Label(frame2, text="Distance in(Km)", width=15, font=("Times New Roman", 12, "bold"),
borderwidth=2, relief="solid").pack(side=LEFT, padx=10, pady=10)
distance = Spinbox(frame2, from_=0, to=1000000, width=5,
font=("Times New Roman", 12, "bold"))
distance.pack(side=LEFT, pady=10)
# 계산 버튼 생성
Button(win, text="Average Speed is:", width=15, font=("Times New Roman", 12, "bold"),
command=average_cal, fg="white", bg="black").pack(pady=20)
# 결과를 표시할 레이블 생성
average_speed = Label(win, text="", width=50, font=("Times New Roman", 12, "bold"),
relief="solid")
average_speed.pack()
# Tkinter 실행
win.mainloop()코드 설명
- Spinbox 위젯: 시간, 분, 거리 값을 직접 타이핑하지 않고 화살표 버튼으로 범위 내에서 손쉽게 선택할 수 있도록 구성했습니다.
- average_cal() 함수: 각 스핀박스에서 정수형 값을 읽어 온 뒤, 공식에 따라 평균 속도를 계산합니다.
- config() 메서드: 계산 결과를 별도의 새 창이 아닌 기존 결과 레이블의 텍스트를 갱신하는 방식으로 출력합니다.
실행 결과
위 코드를 실행하면 다음과 같이 시간, 분, 거리를 입력할 수 있는 평균 속도 계산기 창이 생성되어 화면에 표시됩니다. 각 값을 설정한 후 "Average Speed is:" 버튼을 클릭하면 계산된 평균 속도가 Km/Hr 단위로 하단에 나타납니다.
