반응형

 안녕하세요. 이번 포스팅에서는 tkinter의 위젯을 배치하는 함수에 대해 포스팅하겠습니다.

 

1. 함수 소개

위젯을 배치하는 함수는 pack, place, grid 이렇게 세 가지 종류가 있습니다. 간략한 설명은 아래와 같습니다.

place - 절대 위치

grid - 격자 배치

pack - 상대 위치

 place는 위젯을 놓을 위치의 절대좌표(x, y 좌표)를 입력해서 사용할 수 있습니다. 직접 좌표를 입력해서 배치하기 때문에 정확한 위치에 배치할 수 있습니다.

 grid는 위젯을 놓을 위치를 행(column)과 열(row)을 입력하여 배치합니다. 바둑판이나 엑셀과 같다고 생각하면 좋을 것 같습니다.

 pack은 상대 위치로 윈도우의 상하좌우 등에 배치할 수 있으며, 윈도우의 크기를 변경하면, 변하는 크기에 따라 움직입니다.

 

2. place

 윈도우 창의 좌상단을 원점으로(0,0) 좌우를 x축, 상하를 y축으로 구성되어 있습니다. 각각 우측과 아래 방향이 양(+)의 방향입니다. x와 y에 숫자를 입력해, 원하는 위치에 위젯을 배치할 수 있습니다.

import tkinter

window = tkinter.Tk()
window.geometry('300x300')

lb_1 = tkinter.Label(text='1번 라벨', background='green')
lb_2 = tkinter.Label(text='2번 라벨', background='green')
lb_3 = tkinter.Label(text='3번 라벨', background='green')

lb_1.place(x=220, y=50)
lb_2.place(x=20, y=100)
lb_3.place(x=150, y=210)

window.mainloop()

 

tkinter place

 

3. grid

 grid는 격자구조로 행과 열에 맞추어 배치할 수 있습니다. 행은 column에, 열은 row에 원하는 숫자를 대입해 위젯을 배치할 수 있습니다. 좌우가 row이고, 상하가 column입니다.

import tkinter

window = tkinter.Tk()
window.geometry('300x300')

lb_1 = tkinter.Label(text='1번 라벨', background='green')
lb_2 = tkinter.Label(text='2번 라벨', background='green')
lb_3 = tkinter.Label(text='3번 라벨', background='green')
lb_4 = tkinter.Label(text='4번 라벨', background='green')
lb_5 = tkinter.Label(text='5번 라벨', background='green')
lb_6 = tkinter.Label(text='6번 라벨', background='green')
lb_7 = tkinter.Label(text='7번 라벨', background='green')
lb_8 = tkinter.Label(text='8번 라벨', background='green')
lb_9 = tkinter.Label(text='9번 라벨', background='green')

lb_1.grid(row=1,column=1)
lb_2.grid(row=1,column=2)
lb_3.grid(row=1,column=3)
lb_4.grid(row=2,column=1)
lb_5.grid(row=2,column=2)
lb_6.grid(row=2,column=3)
lb_7.grid(row=3,column=1)
lb_8.grid(row=3,column=2)
lb_9.grid(row=3,column=3)

window.mainloop()

 

tkinter grid

 

4. pack

 pack은 윈도우 상대적인 위치에 배치할 수 있습니다. 추가 요소를 주지 않고 pack()만 사용하게 되면 아래와 같이 중앙 상단부터 내려가게 됩니다.

import tkinter

window = tkinter.Tk()
window.geometry('300x300')

lb_1 = tkinter.Label(text='1번 라벨', background='green')
lb_2 = tkinter.Label(text='2번 라벨', background='green')
lb_3 = tkinter.Label(text='3번 라벨', background='green')
lb_4 = tkinter.Label(text='4번 라벨', background='green')
lb_5 = tkinter.Label(text='5번 라벨', background='green')

lb_1.pack()
lb_2.pack()
lb_3.pack()
lb_4.pack()
lb_5.pack()

window.mainloop()

 

tkinter pack

 

side 값을 주게 된다면 그에 해당하는 위치에 배치할 수 있습니다. pack은 앞서 말했듯이 상대적인 위치에 배치하기 때문에 윈도우의 크기를 변경해도, 변하는 윈도우에 맞춰 각각의 위치에 있게 됩니다.

import tkinter

window = tkinter.Tk()
window.geometry('300x300')

lb_1 = tkinter.Label(text='1번 라벨', background='green')
lb_2 = tkinter.Label(text='2번 라벨', background='green')
lb_3 = tkinter.Label(text='3번 라벨', background='green')
lb_4 = tkinter.Label(text='4번 라벨', background='green')

lb_1.pack(side='right')
lb_2.pack(side='left')
lb_3.pack(side='top')
lb_4.pack(side='bottom')

window.mainloop()

 

 

 이번 포스팅은 tkinter의 위젯들을 배치하는 방법에 대한 포스팅을 작성해봤습니다. 읽어주셔서 감사합니다.

반응형

+ Recent posts