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(0, str(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(0, str(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 |
'파이썬(Python) > 파이썬 GUI(PyQt5 & tkinter)' 카테고리의 다른 글
tkinter - 이벤트 설정하기 (0) | 2021.10.10 |
---|---|
tkinter - 그리드를 이용해서 레이블, 엔트리, 버튼 배치하기 (0) | 2021.10.08 |
tkinter - 레이블, 엔트리, 버튼 만들기 (0) | 2021.10.06 |
tkinter - 윈도우 창 만들기 (0) | 2021.10.02 |
PyQt5 - (Qt designer) QFileDialog 를 이용하여 여러파일 이름 출력 (0) | 2020.12.17 |
댓글