Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Tkinter로 만드는 평균 속도 계산기 GUI 애플리케이션

이 글에서는 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 단위로 하단에 나타납니다.

Tkinter로 만드는 평균 속도 계산기 GUI 애플리케이션