오늘은 Tkinter을 사용해서
제곱미터를 평으로 바꾸는 변환기를 만들어보자!
1. 윈도우 생성
from tkinter import *
window= Tk()
window.title("m2 > Pyeong")
window.minsize(width=250, height= 100)
window.mainloop()
2. 컴포넌트 생성
from tkinter import *
window= Tk()
window.title("m2 > Pyeong")
window.minsize(width=250, height= 100)
entry = Entry(width=10)
m2_label = Label(text = "m2")
equal_label= Label(text = "is equal to")
cal_km_label = Label(text="0")
pyeong_label = Label(text="pyeong")
calculate_button = Button(text="Calculate")
window.mainloop()
3. 레이아웃(배치)
배치 메소드 pack, place, grid 중 grid를 사용할 건데,
grid는 컴포넌트 간 배치를 자동으로 고려하기에,
행과 열을 계산하여,
먼저 위치시키고 싶은 것부터 차례로 배치하는 것이 좋으며
이렇듯 레이아웃을 전부 배치한다음
세부 디자인을 변경하는 것을 추천한다.
from tkinter import *
window= Tk()
window.title("m2 > Pyeong")
window.minsize(width=250, height= 100)
entry = Entry(width=5)
entry.grid(column=1, row=0)
m2_label = Label(text = "m2")
m2_label.grid(column=2, row=0)
equal_label= Label(text = "is equal to")
equal_label.grid(column=0, row=1)
cal_km_label = Label(text="0")
cal_km_label.grid(column=1, row=1)
pyeong_label = Label(text="pyeong")
pyeong_label.grid(column=2, row=1)
calculate_button = Button(text="Calculate")
calculate_button.grid(column=1, row=2)
window.mainloop()
4. 여백주기
config 메소드의 파라미터 padx, pady로 여백을 지정한다.
window.config(padx=20, pady=20)
5. 실제 기능 추가하기
1) 데이터유형 바꾸기 : str -> float
def m2_to_pyeong():
m2 = float(entry.get())
pyeong = m2 *0.3025
cal_km_label.config(text = f"{pyeong}")
여기서 중요한 것은
entry.get()의 데이터유형이 str이라는 점이다.
str은 다른 데이터유형(0.3025)과 수학 연산이 어렵다.
때문에 float()함수로 데이터유형을 실수로 전환한다.
2) f -string 쓰기
config의 파라미터 text는 str타입만 취할 수 있다.
그런데 지금 pyeong은 float 타입이다.
따라서,
f-string으로 어떤 데이터유형에도 관계없이 실행되도록 데이터타입을 바꾼다.
<최종코드>
from tkinter import *
window= Tk()
window.title("m2 > Pyeong")
window.minsize(width=250, height= 100)
window.config(padx=20, pady=20)
def m2_to_pyeong():
m2 = float(entry.get())
pyeong = m2 *0.3025
cal_km_label.config(text = f"{pyeong}")
entry = Entry(width=5)
entry.grid(column=1, row=0)
m2_label = Label(text = "m2")
m2_label.grid(column=2, row=0)
equal_label= Label(text = "is equal to")
equal_label.grid(column=0, row=1)
cal_km_label = Label(text="0")
cal_km_label.grid(column=1, row=1)
pyeong_label = Label(text="pyeong")
pyeong_label.grid(column=2, row=1)
calculate_button = Button(text="Calculate", command = m2_to_pyeong)
calculate_button.grid(column=1, row=2)
window.mainloop()
'파이썬 > 파이썬(python) 중급' 카테고리의 다른 글
[28-2 파이썬] tkinter Canvas widget, 캔버스 위젯 (0) | 2022.09.17 |
---|---|
[28-1 파이썬] 컬러헌트에서 색깔 찾기, 헥스코드 (0) | 2022.09.17 |
[27-7 파이썬] Tkinter 레이아웃 매니저 pack(), place(), grid(), 여백주기 padding (0) | 2022.09.15 |
[27-6 파이썬] Tkinter Tk, Label, Entry, Text, Scale, Checkbutton, Radiobutton, Listbox, insert(), END (0) | 2022.09.15 |
[27-5 파이썬] Tkinter 옵션 넣는 방법, Button, Entry 컴포넌트 추가하기 (0) | 2022.09.14 |