1. Tkinter์์์ ์์ ๋ฐฐ์น ๋ฐฉ๋ฒ
๊ทธ๋ํฝ ์ธํฐํ์ด์ค๊ฐ ๋จ์ํ ํ๋ฉด์ ํฉ์ด์ง ๋ฒํผ๊ณผ ํ
์คํธ ํ๋๋ง์ด ์๋๋ผ๋ ๊ฒ์ ์๋ง ์ด๋ฏธ ๋์น์ฑ์ ๊ฑฐ์ผ. ์ ๊ตฌ์กฐํ๋๊ณ , ๊ฐ๊ฐ์ ๋ํ
์ผ์ด ์ ์๋ฆฌ์ ์๋ ํธ๋ฆฌํ ์ ํ๋ฆฌ์ผ์ด์
์ด ํ์ํ์ง. Tkinter๋ pack
, grid
, place
๋ผ๋ ์ธ ๊ฐ์ง ์ฃผ์ ๋ฐฐ์น ๋ฐฉ๋ฒ์ ์ ๊ณตํด. ์ค๋์ pack
๊ณผ grid
์ ์ง์คํ๊ณ , place
๋ ๋ ๋ณต์กํ๊ฑฐ๋ ์์๋ฅผ ์ ๋์ ์ธ ์์น์ ๋ฐฐ์นํด์ผ ํ ๋๋ก ๋จ๊ฒจ๋์.
pack
์ ๋ํด ์์๋ณด๊ธฐ
pack
๋ฉ์๋๋ ์์ ฏ์ ๋ฐฐ์นํ๋ ๊ฐ๋จํ๊ณ ์ง๊ด์ ์ธ ๋ฐฉ๋ฒ์ด์ผ. "๋จผ์ ์จ ๋์ด ๋จผ์ ๋ฐฐ์น๋๋ค" ์์น์ผ๋ก ์์๋ฅผ ์ปดํฉํธํ๊ฒ ๋ฐฐ์นํ๊ณ ๋น ๋ฅด๊ฒ ์ธํฐํ์ด์ค๋ฅผ ์กฐ์งํํ ์ ์๋๋ก ๋์์ค. ํ์ง๋ง ์ด ๋ฐฉ์์ ๋จ์ํด์ ๋ชจ๋ ์์์ ์ ํํ ๋ฐฐ์น๋ฅผ ์๋ฒฝํ ์ ์ดํ๊ธด ์ด๋ ค์.
pack
์ฌ์ฉ ์์
import tkinter as tk
root = tk.Tk()
root.title("pack ๋ฐฐ์น ์์ ")
# ๋ช ๊ฐ์ง ์์ ฏ ์์ฑ
label = tk.Label(root, text="๋๋ ๋ ์ด๋ธ")
button = tk.Button(root, text="๋๋ ๋ฒํผ")
# pack์ ์ฌ์ฉํด ์์ ฏ ๋ฐฐ์น
label.pack()
button.pack()
root.mainloop()
์ด ์์ ์์ label
๊ณผ button
์ ๋ง์น ์ปคํผ์ ์น๊ตฌ๋ค์ฒ๋ผ ๋๋ํ ์ค์ ์๋ฏ ๋ฐฐ์น๋์ด. Starbucks ์ค์ ์๊ฐํด๋ด!
grid
์ ๋ํด ์์๋ณด๊ธฐ
๋ง์ฝ pack
์ด ์ฆ๊ฑฐ์ด ์ถ์ ๋ผ๋ฉด grid
๋ ๋ชจ๋ ์ฑ
(=์์ ฏ)์ด ์ ํํ ์ ์๋ ๋์๊ด์ด์ผ. grid
๋ฉ์๋๋ ์์๋ฅผ ํ
์ด๋ธ ํํ๋ก ๋ฐฐ์นํ ์ ์๊ฒ ํด์ฃผ๊ณ , ์์น๋ฅผ ์ ํํ ์ ์ดํ ์ ์์ด. ๋๊ฐ ์ง์ ์ด๋ค ์์๋ค์ด ์๋ก ๊ฐ๊น์ด ์์นํ ์ง ๊ฒฐ์ ํ ์ ์์ง.
grid
์ฌ์ฉ ์์
import tkinter as tk
root = tk.Tk()
root.title("grid ๋ฐฐ์น ์์ ")
# ๋ฒํผ ์์ฑ
buttons = [
"1", "2", "3",
"4", "5", "6",
"7", "8", "9",
"0", "+", "="
]
# ๋ฒํผ์ grid์ ์ถ๊ฐ
row_val = 0
col_val = 0
for button in buttons:
btn = tk.Button(root, text=button, width=5)
btn.grid(row=row_val, column=col_val)
col_val += 1
if col_val > 2:
col_val = 0
row_val += 1
root.mainloop()
์ด ์์ ์์ grid
๋ฒํผ๋ค์ ์์นจ ์กฐํ์ฒ๋ผ ์ ๋ ฌ๋ผ ์์ด, ๊น๋ํ๊ณ ์ ๋ฌธ์ ์ธ ๋๋์ ์ฃผ์ง.
2. pack
์ ์ฌ์ฉํ ๋ฐฐ์น
pack
๋ฉ์๋๋ ์์๋ค์ด ์๋ก ์ด๋ป๊ฒ ๋ฐฐ์น๋ ์ง ์ ์ดํ ์ ์๋ ๋ช ๊ฐ์ง ๋ชจ๋๋ฅผ ์ ๊ณตํด. side
, fill
, expand
, padx/pady
๊ฐ์ ๋งค๊ฐ๋ณ์๋ฅผ ์ง์ํด.
pack
์ค์
- side: ์์๊ฐ ๋ถ๋ชจ ์ปจํ
์ด๋์ ์ด๋ ์ชฝ์ ๋ฐฐ์น๋ ์ง ๊ฒฐ์ ํด์ค.
TOP
,BOTTOM
,LEFT
,RIGHT
๊ฐ ์ค ํ๋๋ฅผ ์ ํ ๊ฐ๋ฅ. - fill: ์์๊ฐ ์ถ์ ๋ฐ๋ผ ๋จ์ ๊ณต๊ฐ์ ์ฑ์ธ์ง ๊ฒฐ์ . ์๋ฅผ ๋ค์ด
X
๋ ๊ฐ๋ก ๋ฐฉํฅ,Y
๋ ์ธ๋ก ๋ฐฉํฅ์ ์ฑ์. - expand: ์ฌ์ ๊ณต๊ฐ์ด ์๋ค๋ฉด ์์๊ฐ ์ถ๊ฐ ๊ณต๊ฐ์ ์ฐจ์งํ ์ง๋ฅผ ๋ํ๋.
- padx/pady: ์ํ๊ณผ ์์ง ๋ฐฉํฅ์ผ๋ก ์ฌ๋ฐฑ์ ์ค์ ํด์ค.
pack
์ ํ์ฅ๋ ์ฌ์ฉ ์์
import tkinter as tk
root = tk.Tk()
root.title("pack ํ์ฅ ์์ ")
tk.Label(root, text="๋งจ ์").pack(side=tk.TOP, fill=tk.X)
tk.Label(root, text="๋งจ ์๋").pack(side=tk.BOTTOM, fill=tk.X)
tk.Label(root, text="์ผ์ชฝ").pack(side=tk.LEFT, fill=tk.Y)
tk.Label(root, text="์ค๋ฅธ์ชฝ").pack(side=tk.RIGHT, fill=tk.Y)
root.mainloop()
3. grid
๋ฅผ ์ฌ์ฉํ ๊ทธ๋ฆฌ๋ ๋ฐฐ์น
grid
๋ฉ์๋๋ ๋ ๋ณต์กํ๊ณ ๊ทธ๋ฆฌ๋์ ์
์ ์๋ฆฌ๋ฅผ ์ดํดํด์ผ ํ์ง๋ง, ์ต์ํด์ง๋ฉด ์ด๋ค ๋ณต์กํ ์ธํฐํ์ด์ค๋ ๋ง๋ค ์ ์์ด.
grid
์ค์
- row / column: ์์๊ฐ ์ด๋ค ํ๊ณผ ์ด์ ๋ฐฐ์น๋ ์ง ๊ฒฐ์ .
- rowspan / columnspan: ์์๊ฐ ๋ช ํ์ด๋ ๋ช ์ด์ ์ฐจ์งํ ์ง ๊ฒฐ์ .
- sticky: ์์๊ฐ ์
์ ๊ฒฝ๊ณ๋ฅผ ๋ฐ๋ผ ์ด๋์ "๊ณ ์ "๋ ์ง ๊ฒฐ์ .
N
,E
,S
,W
๋๋ ๊ทธ ์กฐํฉ ์ฌ์ฉ ๊ฐ๋ฅ.
grid
์ ํ์ฅ๋ ์ฌ์ฉ ์์
import tkinter as tk
root = tk.Tk()
root.title("grid ํ์ฅ ์์ ")
# ๋ ์ด๋ธ ์์ฑ ๋ฐ ๊ทธ๋ฆฌ๋์ ๋ฐฐ์น
tk.Label(root, text="ํ 0, ์ด 0").grid(row=0, column=0, sticky="W")
tk.Label(root, text="ํ 0, ์ด 1").grid(row=0, column=1, sticky="E")
tk.Label(root, text="ํ 1, ์ด 0").grid(row=1, column=0, columnspan=2)
root.mainloop()
4. ์ค์ฉ์ ์ธ ํ์ฉ๊ณผ ์ผ๋ฐ์ ์ธ ์ค์
ํ๋์ ๋ฐฐ์น ๋ฉ์๋๋ง ์ฌ์ฉํ๊ณ ์ถ์ ๋ง์์ด ๋ค ์ ์์ง๋ง, ์ค์ ๋ก๋ ์ข
์ข
์ฌ๋ฌ ๊ฐ์ง๋ฅผ ์กฐํฉํด์ผ ํ ๊ฒฝ์ฐ๊ฐ ๋ง์. ์์ฃผ ๋ฐ์ํ๋ ์ค์๋ mainloop
ํธ์ถ์ ์๊ฑฐ๋, ํ/์ด ์ธ๋ฑ์ค๋ฅผ ์๋ชป ์ค์ ํ๊ฑฐ๋, expand
์ fill
์ ์ ์ ํ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด์ผ. ์ธํฐํ์ด์ค ์์ฑ ์ ๋ฐ์ํ ์ ์๋ ๊ณจ์นซ๊ฑฐ๋ฆฌ๋ฅผ ํผํ๋ ค๋ฉด ํญ์ pack
์ด๋ grid
ํธ์ถ ์์๋ฅผ ํ์ธํ๊ณ , ๋งค๊ฐ๋ณ์๋ฅผ ์ ๋๋ก ์ฌ์ฉํ๊ณ ์๋์ง ์ ๊ฒํด.
pack
๊ณผ grid
๋ ์ ์ฐ์ฑ๊ณผ ์์ ๋ฐฐ์น ์ ์ด์์ ์ฐจ์ด๊ฐ ์์ด. pack
์ ๋จ์ํ ์์ง ๋๋ ์ํ ์ธํฐํ์ด์ค์ ์ ํฉํ๊ณ , grid
๋ ์์์ ์ ํํ ์์น๊ฐ ์ค์ํ ๋ณต์กํ ๋ ์ด์์์ ์ ํฉํด.
์ด์ ๋ฐฐ์น ๋ฉ์๋๋ฅผ ์ฌ์ฉํด ๋ค ์์ ์ ์ธํฐํ์ด์ค๋ฅผ ๊ฐ๋ฐํ ์ค๋น๊ฐ ๋์ด. ์์ ฏ์ ํ๋ฉด์ ๋ฐฐ์นํ๋ ๊ฒ์ ํํฐ๋ฅผ ์ค๋นํ๋ ๊ฒ๊ณผ ๋น์ทํด. ๋ชจ๋ ์ฌ๋์ด ํธ์ํ๊ฒ ๋๊ปด์ผ ํด. ์ด๋ค ์ฌ๋์ ๋ฒฝ ์ชฝ์ ์๊ณ ์ถ์ ๊ฑฐ๊ณ , ์ด๋ค ์ฌ๋์ ๋ฐฉ ๊ฐ์ด๋ฐ๋ฅผ ๋์๋ค๋๊ณ ์ถ๊ฒ ์ง๋ง, ๋ชจ๋๊ฐ ์๊ธฐ ์๋ฆฌ์ ์๋ ๋๋์ ๋ฐ์์ผ ํด. ์ด์ฌํ ์์ ์ ๋ชฐ๋ํด์ ๋ฉ์ง ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค์ด๋ด!
GO TO FULL VERSION