Python

파이썬 GUI - 배치 , pack/grid/place

샐님 2024. 5. 10. 11:08
728x90
반응형

컴포넌트 배치
 1.pack : (짐을) 싸다. 2.grid : 격자무늬  3.place : (어떤 장소에) 놓다
  pack 과 grid 는 함께 못쓴다. 

1. Pack 

from tkinter import *

win = Tk()
win.geometry("400x200")
win.title("pack")
win.option_add("*Font", "맑은고딕 20")

btn = Button(win)
btn.config(text="버튼")
btn.pack(pady=10) # 위치, pady 는 위아래로 패딩이 생김

btn2 = Button(win)
btn2.config(text="버튼2")
btn2.pack()

win.mainloop()

2. Grid 

from tkinter import *



win = Tk()
win.geometry("400x200")
win.title("grid")
win.option_add("*Font", "맑은고딕 20")

# 4 x 3 버튼 array 만들기
btn_list =[]
col_num = 4
row_num = 3
for j in range(0,row_num):
    for i in range(0, col_num):
        btn = Button(win)
        btn.config(text="({},{})".format(i,j))
        btn.grid(column=i, row=j, padx=10, pady=10) 
        btn_list.append(btn)

btn = Button(win)
btn.config(text="new")
btn.grid(column=2, row=4, rowspan=4) # 위치를 지정해줘야한다. 그렇지 않으면 겹칠수 있음.


win.mainloop()

3.Place

from tkinter import *



win = Tk()
win.geometry("400x200")
win.title("place")
win.option_add("*Font", "맑은고딕 20")

xx = 30
yy = 50

# 절대 좌표 

btn = Button(win)
btn.config(text="절대좌표")
btn.place(x=100,y=100) 

# 상대 좌표 : 창의 크기를 1로 간주
btn2 = Button(win)
btn2.config(text="상대좌표")
btn2.place(relx=0.1, rely=0.1)

win.mainloop()

728x90
반응형