Channi Studies

[python] tkinter miles km converter / tkinter 마일 킬로미터 변환기 본문

python

[python] tkinter miles km converter / tkinter 마일 킬로미터 변환기

Chan Lee 2023. 10. 10. 22:52

python의 tkinter 모듈을 사용해서 단위 변환기를 만들어 보자.

아직 tkinter 모듈을 처음 공부하는 중이기 때문에, 간단하게 구현해보았다.

 

1. miles to km, km to miles 2가지 옵션 구현

2. 버튼을 누를 시 계산이 완료되어 완료 값이 출력

 


코드

from tkinter import *

window = Tk()

FONT = ("Arial", 20)

from_unit = "miles"
to_unit = "km"

window.title("Unit Converter")
window.minsize(width="250", height="100")
window.config(padx=50, pady=25)

# Label
from_label = Label(text=f"{from_unit}", font=FONT)
from_label.grid(column=2, row=2, padx=5, pady=5)

to_label = Label(text=f"{to_unit}", font=FONT)
to_label.grid(column=2, row=3, padx=5, pady=5)

result_label = Label(text="0", font=FONT)
result_label.grid(column=1, row=3, padx=5, pady=5)

equal_to_label = Label(text="is equal to", font=FONT)
equal_to_label.grid(column=0, row=3, padx=5, pady=5)

empty_label = Label(text="", font=FONT)
empty_label.grid(column=1, row=1)

arrow_label = Label(text="➡️➡️➡️", font=FONT)
arrow_label.grid(column=0, row=2)

# Entry
num_input = Entry(width=10)
num_input.grid(column=1, row=2, padx=5, pady=5)


# Radio Button
def label_update():
    from_label.config(text=from_unit)
    to_label.config(text=to_unit)        

def change_mode(mode):
    global from_unit, to_unit
    if mode == "miles":
        from_unit = "miles"
        to_unit = "km"
    else:
        from_unit = "km"
        to_unit = "miles"
    label_update()


mode_select = StringVar()
miles_button = Radiobutton(text="miles -> km", value="miles", variable=mode_select, command=lambda: change_mode("miles"))
miles_button.select()
km_button = Radiobutton(text="km -> miles", value="km", variable=mode_select, command=lambda: change_mode("km"))

miles_button.grid(column=0, row=0)
km_button.grid(column=2, row=0)


# Button
def calculate(unit, value):
    if value:        
        if unit == "miles":
            result = miles_to_km(value)
        elif unit == "km":
            result = km_to_miles(value)
        result_label.config(text=round(result, 3))      

def miles_to_km(value):
    return float(value) * 1.609
def km_to_miles(value):
    return float(value) * 0.621

calculate_button = Button(text="CONVERT", command=lambda: calculate(unit=from_unit, value=num_input.get()))
calculate_button.grid(column=1, row=4)


window.mainloop()

 


실행 결과

012