본문 바로가기

tkinter

위젯 배치 - pack()

반응형

 

tkinter에서 위젯을 배치하는 방법에는 

pack, grid, place가 있다.

 

먼저 pack에 대하여 알아보겠다. 

 

pack은 위젯 요소들을 순서대로 배치시키는 것이다.

 

기본 문법

# pack()을 이용하여 label1부터 4까지 순서대로 배치시킨다.
# pack()은 기본적으로 위에서 아래로 순서대로 배치시킨다.
 

import tkinter 
from tkinter import *

win = Tk()
win.title("위젯 배치 pack")
win.geometry("600x400")

label1 = Label(win, text = "라벨 1", width = 10, height = 2,  bg = "pink")
label2 = Label(win, text = "라벨 2", width = 10, height = 2,  bg = "lightblue")
label3 = Label(win, text = "라벨 3", width = 10, height = 2,  bg = "yellow")
label4 = Label(win, text = "라벨 4", width = 10, height = 2,  bg = "red")


# pack()을 이용하여 label1 부터 4까지 순서대로 배치시킨다.
# pack()은 기본적으로 위에서 아래로 순서대로 배치시킨다.
 

label1.pack()
label2.pack()
label3.pack()
label4.pack()

win.mainloop()

label 1, 2, 3, 4가 위에서 아래로 순서대로 배치되는 것을 볼 수 있다.

pack은 기본적으로 요소를 위에서 아래로 배치하며 할당된 공간의 중간에 위치시킨다. 

 

side 속성

# side 속성을 통해 배치시키는 방향을 설정할 수 있다.
# side = "left"로 설정하면 왼쪽 에서 부터 차례로 배치시킨다.

import tkinter 
from tkinter import *

win = Tk()
win.title("위젯 배치 pack")
win.geometry("600x400")

label1 = Label(win, text = "라벨 1", width = 10, height = 2,  bg = "pink")
label2 = Label(win, text = "라벨 2", width = 10, height = 2,  bg = "lightblue")
label3 = Label(win, text = "라벨 3", width = 10, height = 2,  bg = "yellow")
label4 = Label(win, text = "라벨 4", width = 10, height = 2,  bg = "red")

# side 속성을 통해 배치시키는 방향을 설정할 수 있다.
# side = "left"로 설정하면 왼쪽 에서 부터 차례로 배치시킨다. 


label1.pack(side="left")
label2.pack(side="left")
label3.pack(side="left")
label4.pack(side="left")

win.mainloop()

label1, 2, 3, 4가 왼쪽에서 부터 차래대로 배치되는 것을 확인할 수 있다. 

 

import tkinter 
from tkinter import *

win = Tk()
win.title("위젯 배치 pack")
win.geometry("600x400")

label1 = Label(win, text = "라벨 1", width = 10, height = 2,  bg = "pink")
label2 = Label(win, text = "라벨 2", width = 10, height = 2,  bg = "lightblue")
label3 = Label(win, text = "라벨 3", width = 10, height = 2,  bg = "yellow")
label4 = Label(win, text = "라벨 4", width = 10, height = 2,  bg = "red")


# side 속성을 이용해 각 라벨을 해당 위치에 순서대로 배치시킨다. 
label1.pack(side="left")
label2.pack(side="right")
label3.pack(side="top")
label4.pack(side="bottom")

win.mainloop()

label1, 2, 3, 4가 왼쪽, 오른쪽, 위, 아래에 차례대로 배치된 것을 확인할 수 있다. 

 

padx, pady 속성 : 요소 사이에 바깥 여백 만들기

# padx, paxy를 이용하여 label을 여백을 두고 배치를 할 수 있다.
# padx는 가로 방향으로 여백을 둔다.
# pady는 세로 방향으로 여백을 둔다. 

import tkinter 
from tkinter import *

win = Tk()
win.title("위젯 배치 pack")
win.geometry("600x400")

label1 = Label(win, text = "라벨 1", width = 10, height = 2,  bg = "pink")
label2 = Label(win, text = "라벨 2", width = 10, height = 2,  bg = "lightblue")
label3 = Label(win, text = "라벨 3", width = 10, height = 2,  bg = "yellow")
label4 = Label(win, text = "라벨 4", width = 10, height = 2,  bg = "red")

# padx, paxy를 이용하여 label을 여백을 두고 배치를 할 수 있다.
# padx는 가로 방향으로 여백을 둔다.
# pady는 세로 방향으로 여백을 둔다. 

label1.pack(side="left", padx=10, pady=10)
label2.pack(side="left", padx=10, pady=10)
label3.pack(side="left", padx=10, pady=10)
label4.pack(side="left", padx=10, pady=10)

win.mainloop()

label 1, 2, 3, 4 사이에 여백이 생긴 것을 확인할 수 있다.

 

anchor: 해당 요소를 할당된 공간 내에서 위치를 정한다.

# pack은 기본적으로 요소를 할당된 공간의 중간에 배치시킨다. 
# anchor 속성을 이용하면 해당 요소를 할당된 공간의 다른 위치에 배치할 수 있다. 
# anchor ="w"는 할당된 위치의 왼쪽에, "e"는 오른쪽에, "n"은 위에, "s"는 아래에 위치시킨다.

import tkinter 
from tkinter import *

win = Tk()
win.title("위젯 배치 pack")
win.geometry("600x400")

label1 = Label(win, text = "라벨 1", width = 10, height = 2,  bg = "pink")
label2 = Label(win, text = "라벨 2", width = 10, height = 2,  bg = "lightblue")
label3 = Label(win, text = "라벨 3", width = 10, height = 2,  bg = "yellow")
label4 = Label(win, text = "라벨 4", width = 10, height = 2,  bg = "red")

# pack은 기본적으로 요소를 할당된 공간의 중간에 배치시킨다. 
# anchor 속성을 이용하면 해당 요소를 할당된 공간의 다른 위치에 배치할 수 있다. 
# anchor ="w"는 할당된 위치의 왼쪽에, "e"는 오른쪽에, "n"은 위에, "s"는 아래에 위치시킨다.

label1.pack(anchor ="w", padx=10, pady=10)
label2.pack(padx=10, pady=10)
label3.pack(padx=10, pady=10)
label4.pack(padx=10, pady=10)

win.mainloop()

 

label1이 왼쪽으로 정렬이 된 것을 확인할 수 있다. 

 

fill: 요소가 할당된 공간의 빈 여백을 채운다.

# fill 속성을 이용하면 요소를 할당된 공간의 크기에 맞게 채우게 된다.
# fill = "x" 는 가로로 확장하여 할당된 공간을 채운다.
# fill = "y" 는 세로로 확장하여 할당된 공간을 채운다.
# fill = "both" 는 가로, 세로로 확장하여 할당된 공간을 채운다.

import tkinter 
from tkinter import *

win = Tk()
win.title("위젯 배치 pack")
win.geometry("600x400")

label1 = Label(win, text = "라벨 1", width = 10, height = 2,  bg = "pink")
label2 = Label(win, text = "라벨 2", width = 10, height = 2,  bg = "lightblue")
label3 = Label(win, text = "라벨 3", width = 10, height = 2,  bg = "yellow")
label4 = Label(win, text = "라벨 4", width = 10, height = 2,  bg = "red")

# fill 속성을 이용하면 요소를 할당된 공간의 크기에 맞게 채우게 된다.
# fill = "x" 는 가로로 확장하여 할당된 공간을 채운다.
# fill = "y" 는 세로로 확장하여 할당된 공간을 채운다.
# fill = "both" 는 가로, 세로로 확장하여 할당된 공간을 채운다.

label1.pack(anchor ="w", fill ="both", padx=10, pady=10)
label2.pack(padx=10, pady=10)
label3.pack(padx=10, pady=10)
label4.pack(padx=10, pady=10)

win.mainloop()

label1이 할당된 공간을 꽉 채운 것을 확인할 수 있다. 

반응형