tkinter - 섭씨 온도를 화씨온도로 변환하는 프로그램 만들기
본문 바로가기
파이썬(Python)/파이썬 GUI(PyQt5 & tkinter)

tkinter - 섭씨 온도를 화씨온도로 변환하는 프로그램 만들기

by Squat Lee 2021. 10. 12.

 

tkinter를 응용해서 섭씨온도(℃)를 입력하면, 화씨온도(℉)로 변환해주는 프로그램을 만들어 보도록 하겠습니다.

from tkinter import *

 

win = Tk()

win.title('섭씨 온도를 화씨 온도로 변환')

win.geometry('400x100')

 

lbl_c = Label(win, text="섭씨온도", width=10)

lbl_f = Label(win, text="화씨온도")

lbl_c.grid(row=0, column=0)

lbl_f.grid(row=1, column=0)

 

ent_c = Entry(win, width=20)

ent_f = Entry(win)

ent_c.grid(row=0, column=1)

ent_f.grid(row=1, column=1)

 

btn_tr = Button(win, text="변환", width=20)

btn_tr.grid(row=2, column=0, columnspan=2)

 

win.mainloop()

 

geometry를 사용해서 window 사이즈를 정하고, 각 Label과 Entry 그리고 Button을 배치하였습니다. 

 

혹시 tkinter가 생소하시다면, 제 블로그에 tkinter관련 포스트를 차근차근 보시면 이해가 됩니다. 아래에 링크를 걸어드리니 참고하세요

 

tkinter 시작하기 - 윈도우 창 만들기

 

위에 코드를 잘 입력 하셨다면, 아래와 같이 창이 뜹니다.

 이제 이벤트를 연결하기 위해 함수를 만들어 보도록 하겠습니다.

def FtoC(celsius):

    return celsius * 9 / 5 + 32

 

섭씨온도를 받아서 화씨온도로 반환하는 함수 입니다.

 

def clicked():

    degree = eval(ent_c.get()) #eval은 문자를 받아서 값으로 계산

    ent_f.delete(0, END) #0에서 END(마지막) 까지 삭제

    ent_f.insert(0str(FtoC(degree))) #0의 위치 즉 첫번째 위치에 str(... 입력

 

 버튼을 누르면 엔트리에 입력된 값을 받아서 'degree'라는 변수에 저장합니다. 이때 'eval' 함수를 사용해서 문자를 숫자로 바꿔서 계산해 줍니다. 예를들어 eval 함수는 "3+5" 라고 적힌 문자를 숫자 8로 반환하는 함수 입니다.

 

엔트리 속성 중 'delete'를 사용해서 기존에 입력된 값을 삭제해 주고, 'insert' 속성으로 첫번째 위치(0)에 문자형태로 섭씨온도를 화씨온도로 변환해 주는 함수(def FtoC(celsius))의 반환값을 입력해 줍니다.

 

btn_tr = Button(win, text="변환", width=20, command=clicked)

 

그리고 버튼의 command 옵션을 함수(clicked)와 연결해 줍니다.

 

제대로 잘 작동하는 것을 확인할 수 있습니다.

아래는 전체 코드입니다. 참고하세요.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
from tkinter import *
 
def FtoC(celsius):
    return celsius * 9 / 5 + 32
 
def clicked():
    degree = eval(ent_c.get()) #eval은 문자를 받아서 값으로 계산
    ent_f.delete(0, END) #0에서 END(마지막) 까지 삭제
    ent_f.insert(0str(FtoC(degree))) #0의 위치 즉 첫번째 위치에 str(... 입력
 
win = Tk()
win.title('섭씨 온도를 화씨 온도로 변환')
win.geometry('400x100')
 
lbl_c = Label(win, text="섭씨온도", width=10)
lbl_f = Label(win, text="화씨온도")
lbl_c.grid(row=0, column=0)
lbl_f.grid(row=1, column=0)
 
ent_c = Entry(win, width=20)
ent_f = Entry(win)
ent_c.grid(row=0, column=1)
ent_f.grid(row=1, column=1)
 
btn_tr = Button(win, text="변환", width=20, command=clicked)
btn_tr.grid(row=2, column=0, columnspan=2)
 
win.mainloop()
cs
728x90
반응형

댓글