Python tkinter 강좌 : 제 13강 - Frame
Frame(프레임)

Frame을 이용하여 다른 위젯들을 포함하기 위한 프레임을 생성할 수 있습니다.
Frame 사용
import tkinter
window=tkinter.Tk()
window.title("YUN DAE HEE")
window.geometry("640x400+100+100")
window.resizable(False, False)
frame1=tkinter.Frame(window, relief="solid", bd=2)
frame1.pack(side="left", fill="both", expand=True)
frame2=tkinter.Frame(window, relief="solid", bd=2)
frame2.pack(side="right", fill="both", expand=True)
button1=tkinter.Button(frame1, text="프레임1")
button1.pack(side="right")
button2=tkinter.Button(frame2, text="프레임2")
button2.pack(side="left")
window.mainloop()frame1=tkinter.Frame(window, relief="solid", bd=2)
frame1.pack(side="left", fill="both", expand=True)
frame2=tkinter.Frame(window, relief="solid", bd=2)
frame2.pack(side="right", fill="both", expand=True)
button1=tkinter.Button(frame1, text="프레임1")
button1.pack(side="right")
button2=tkinter.Button(frame2, text="프레임2")
button2.pack(side="left")tkinter.Frame(윈도우 창, 매개변수1, 매개변수2, 매개변수3, ...)을 사용하여 해당 윈도우 창에 표시할 프레임의 속성을 설정할 수 있습니다.
매개변수를 사용하여 프레임의 속성을 설정합니다.
위젯의 매개변수 중 윈도우 창에서 프레임 이름을 이용하여 해당 프레임에 위젯을 포함시킬 수 있습니다.
tkinter.Button(frame1, ...)과 같이 위젯의 첫 번째 매개변수에 프레임을 전달하면, 해당 위젯은 윈도우 창이 아닌 프레임 안에 배치됩니다.
프레임 안의 위젯은 프레임을 기준으로 pack, grid, place가 적용되므로, 프레임을 여러 개 사용하면 복잡한 배치를 구역별로 나누어 구성할 수 있습니다.
-
Tip :
relief로 테두리 모양을 설정하더라도bd(borderwidth)의 기본값이0이므로, 테두리를 표시하려면bd를1이상으로 설정해야 합니다. -
Tip : 프레임은
pack과grid를 같은 부모 안에서 함께 사용할 수 없다는 제약을 피할 때에도 활용됩니다. 프레임마다 서로 다른 배치 방식을 사용할 수 있습니다. -
Tip :
tkinter.ttk.Frame도 동일한 용도로 사용할 수 있으며, 테마가 적용된 모양으로 표시됩니다. 단,ttk.Frame은bg등의 색상 매개변수를 지원하지 않으며,style로 모양을 설정합니다.
Frame Parameter
프레임 형태 설정
| 이름 | 의미 | 기본값 | 속성 |
|---|---|---|---|
| width | 프레임의 너비 | 0 | 상수 |
| height | 프레임의 높이 | 0 | 상수 |
| relief | 프레임의 테두리 모양 | flat | flat, groove, raised, ridge, solid, sunken |
| borderwidth=bd | 프레임의 테두리 두께 | 0 | 상수 |
| background=bg | 프레임의 배경 색상 | SystemButtonFace | color |
| padx | 프레임의 테두리와 내용의 가로 여백 | 0 | 상수 |
| pady | 프레임의 테두리와 내용의 세로 여백 | 0 | 상수 |
프레임 형식 설정
| 이름 | 의미 | 기본값 | 속성 |
|---|---|---|---|
| cursor | 프레임의 마우스 커서 모양 | - | 커서 속성 |
| class_ | 클래스 설정 | - | - |
| visual | 시각적 정보 설정 | - | - |
| colormap | 256 색상을 지정하는 색상 맵 설정 | - | new |
프레임 하이라이트 설정
| 이름 | 의미 | 기본값 | 속성 |
|---|---|---|---|
| highlightcolor | 프레임이 선택되었을 때 색상 | SystemWindowFrame | color |
| highlightbackground | 프레임이 선택되지 않았을 때 색상 | SystemButtonFace | color |
| highlightthickness | 프레임이 선택되었을 때 두께 (두께 설정) | 0 | 상수 |
프레임 동작 설정
| 이름 | 의미 | 기본값 | 속성 |
|---|---|---|---|
| takefocus | Tab 키를 이용하여 위젯 이동 허용 여부 | False | Boolean |
| container | 응용 프로그램이 포함될 컨테이너로 사용 | False | Boolean |
참고
- 내부에 위젯이 존재할 경우,
width와height설정을 무시하고크기 자동 조절
-
cursor 매개변수
- arrow, based_arrow_down, based_arrow_up, boat, bogosity, bottom_left_corner, bottom_right_corner, bottom_side, bottom_tee, box_spiral, center_ptr, circle, clock, coffee_mug, cross, cross_reverse, crosshair, diamond_cross, dot, dotbox, double_arrow, draft_large, draft_small, draped_box, exchange, fleur, gobbler, gumby, hand1, hand2, heart, icon, iron_cross, left_ptr, left_side, left_tee, leftbutton, ll_angle, lr_angle, man, middlebutton, mouse, pencil, pirate, plus, question_arrow, right_ptr, right_side, right_tee, rightbutton, rtl_logo, sailboat, sb_down_arrow, sb_h_double_arrow, sb_left_arrow, sb_right_arrow, sb_up_arrow, sb_v_double_arrow, shuttle, sizing, spider, spraycan, star, target, tcross, top_left_arrow, top_left_corner, top_right_corner, top_side, top_tee, trek, ul_angle, umbrella, ur_angle, watch, wait, xterm, X_cursor
-
highlightbackground를 설정하였을 경우, 프레임이 선택되지 않았을 때에도 두께가 표시됨 -
container를True로 설정하였을 경우, 프레임의 내부에위젯이 포함되어 있지 않아야 함
댓글 남기기