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이 할당된 공간을 꽉 채운 것을 확인할 수 있다.
'tkinter' 카테고리의 다른 글
tkinter를 이용하여 계산기 만들기 (0) | 2022.07.27 |
---|---|
Tkinter 기본 위젯 종류 (0) | 2022.07.23 |
[tkinter] BMI 계산기 만들기(ver.2) (0) | 2022.07.22 |
자기암시 GUI 프로그램 만들기(Tkinter) (0) | 2022.07.21 |
파이썬 tkinter, 우울증 간이검사 설문지 만들어 보기(feat. radiobutton) (0) | 2021.12.21 |