강의노트 위젯 위치 배치 - pack
tkinter는 위젯의 위치를 관리하기 위해 세 가지 방법을 지원한다: pack( ), grid( ) 와 place( ) 이다.
pack
팩은 위젯을 기본 창이나 프레임이 될 수 있는 컨테이너 위젯(부모위젯)의 안에서 위,아래, 왼쪽, 오른쪽 방향으로 위젯을 절대위치가 아닌 상대적 위치로 위젯을 쌓아가는 방식이다.
팩은 사용하는 위젯까리 서로 영향을 미치므로 배치 순서가 중요하다.
팩 지오메트리 매니저에는 위젯을 정렬하는 다양한 옵션이 있다.
팩의 기본 형태는 아래와 같다.
widget.pack(**options)
주요 옵션들은:
옵션 | 설명 | 예 |
---|---|---|
side | 위젯을 어느 방향에 배치할지를 지정. 기본값은 'top'이다. | widget.pack(side='top') #위로 붙인다. |
fill | 위젯이 남은 공간을 어떻게 채울지를 설정 | widget.pack(fill='both') # x와 y방향으로 채움 |
expand | 부모 위젯이 리사이징될 때 빈 공간을 차지할지 여부를 지정 | widget.pack(expand=True) #남은 공간을 위젯이 차지한다. |
padx, pady | 바깥쪽 여백을 설정 | widget.pack(padx=10, pady=5) #위젯의 바깥쪽을 좌/우로 10픽셀, 위/아래로 5픽셀의 여백을 준다. |
ipadx, ipady | 안쪽 여백을 설정 | widget.pack(ipadx=5, ipady=10) #컨테이너에서 내부 컨텐츠와 경계 사이의 간격. 좌/우로 5픽셀, 위/아래로 10픽셀의 여백을 준다. |
예제
import tkinter as tk
root = tk.Tk()
label1 = tk.Label(root, text="Top", bg="red")
label2 = tk.Label(root, text="Left", bg="green")
label3 = tk.Label(root, text="Right", bg="blue")
label4 = tk.Label(root, text="Bottom Fill X", bg="orange")
label1.pack(side="top", fill="x") #
label2.pack(side="left", padx=10, pady=10)
label3.pack(side="right", ipadx=10, ipady=10)
label4.pack(side="bottom", fill="x", expand=True)
root.mainloop()
위 예제의 팩이 진행되는 과정을 그림으로 표현했다.
레이블1을 top이어서 root의 top에 붙여서 빨간색 위젯이 위에 붙었다. fill이 x여서 좌우를 꽉 채운다.
레이블2는 left여서 남아있는 공간에서 왼쪽에 붙이는데 padx와 pady가 10이어서 10의 여백을 두고 붙인다.
레이블3은 남은 공간의 right에 내부 여백을 10(글씨가 좌우/위아래로 10의 여백이 있다)을 두고 붙인다.
레이블4는 남은 공간에서 bottom에 붙이는데 fill이 x여서 좌우로 꽉 채워서 붙인다.
최종 결과는 아래와 같다.
side
사이드 매개변수는 팩 레이아웃에서 위젯의 방향을 결정한다.
side 매개변수에는 네 가지 옵션이 있다:
매개변수 | 설명 |
---|---|
top | 위젯을 위에서 아래로 정렬한다. |
bottom | 위젯을 아래에서 위로 정렬한다. |
left | 위젯을 왼쪽에서 오른쪽으로 정렬한다. |
right | 위젯을 오른쪽에서 왼쪽으로 정렬한다. |
expand
expand는 위젯을 확장하여 컨테이너에 할당된 추가 공간을 차지할지 여부를 결정한다.
expand를 True로 설정하면 위젯이 확장되고, False로 설정하면 위젯이 확장되지 않는다. expand 매개변수의 기본값은 False이다.
expand 매개변수는 side 매개변수에 종속된다.
다음 표는 위젯의 공간과 관련하여 측면 매개변수와 확장 매개변수 간의 종속성을 보여줍니다.
로그인 하면 댓글을 쓸 수 있습니다.