상위 목록: 하위 목록: 작성 날짜: 읽는 데 3 분 소요

PanedWindow(내부 윈도우)

PanedWindow를 이용하여 다른 위젯들을 포함하고 구역을 나눌 수 있는 내부 윈도우를 생성할 수 있습니다.



PanedWindow 사용

import tkinter

window=tkinter.Tk()
window.title("YUN DAE HEE")
window.geometry("640x400+100+100")
window.resizable(True, True)

panedwindow1=tkinter.PanedWindow(relief="raised", bd=2)
panedwindow1.pack(expand=True)
 
left=tkinter.Label(panedwindow1, text="내부윈도우-1 (좌측)")
panedwindow1.add(left)

panedwindow2=tkinter.PanedWindow(panedwindow1, orient="vertical", relief="groove", bd=3)
panedwindow1.add(panedwindow2)

right=tkinter.Label(panedwindow1, text="내부윈도우-2 (우측)")
panedwindow1.add(right)

top=tkinter.Label(panedwindow2, text="내부윈도우-3 (상단)")
panedwindow2.add(top)

bottom=tkinter.Label(panedwindow2, text="내부윈도우-4 (하단)")
panedwindow2.add(bottom)

window.mainloop()


panedwindow1=tkinter.PanedWindow(relief="raised", bd=2)
panedwindow1.pack(expand=True)
 
left=tkinter.Label(panedwindow1, text="내부윈도우-1 (좌측)")
panedwindow1.add(left)

panedwindow2=tkinter.PanedWindow(panedwindow1, orient="vertical", relief="groove", bd=3)
panedwindow1.add(panedwindow2)

right=tkinter.Label(panedwindow1, text="내부윈도우-2 (우측)")
panedwindow1.add(right)

top=tkinter.Label(panedwindow2, text="내부윈도우-3 (상단)")
panedwindow2.add(top)

bottom=tkinter.Label(panedwindow2, text="내부윈도우-4 (하단)")
panedwindow2.add(bottom)

tkinter.PanedWindow(윈도우 창, 매개변수1, 매개변수2, 매개변수3, ...)을 사용하여 해당 윈도우 창에 표시할 내부 윈도우의 속성을 설정할 수 있습니다.

매개변수를 사용하여 내부 윈도우의 속성을 설정합니다.

내부 윈도우의 새시를 이동하여 컨테이너를 움직일 수 있습니다.

새시(sash)는 구역과 구역 사이의 경계선이며, 마우스로 드래그하여 각 구역의 크기를 조절할 수 있습니다.

예제의 panedwindow1은 orient를 설정하지 않았으므로 기본값인 horizontal이 적용되어 위젯이 좌우로 나뉘며, panedwindow2는 orient="vertical"이므로 위젯이 상하로 나뉩니다.

  • Tip : 예제의 tkinter.PanedWindow(relief="raised", bd=2)처럼 첫 번째 매개변수인 윈도우 창을 생략하면 기본 윈도우 창(Tk)에 생성됩니다.

  • Tip : 내부 윈도우에 포함할 위젯은 pack, grid, place로 배치하지 않고, 반드시 add 메서드로 추가해야 합니다.

  • Tip : tkinter.ttk.PanedWindow도 동일한 용도로 사용할 수 있으며, add(위젯, weight=1)과 같이 weight로 창 크기가 변경될 때 각 구역이 늘어나는 비율을 설정합니다.



PanedWindow Method

이름 의미 설명
add(위젯, option) 위젯 추가 해당 위젯을 내부 윈도우에 추가
remove(위젯) / forget(위젯) 위젯 제거 해당 위젯을 내부 윈도우에서 제거
paneconfig(위젯, option) 위젯 설정 변경 추가된 위젯의 option을 변경
panes() 위젯 목록 반환 내부 윈도우에 추가된 위젯의 목록을 반환
sash_coord(index) 새시 좌표 반환 index 번째 새시의 (x, y) 좌표를 반환
sash_place(index, x, y) 새시 위치 변경 index 번째 새시를 (x, y) 위치로 이동


  • option

    • after : 해당 위젯의 뒤에 배치, panedwindow2.add(top, after=bottom)은 bottom 뒤에 top을 배치
    • before : 해당 위젯의 앞에 배치, panedwindow2.add(bottom, before=top)은 top 앞에 bottom을 배치
    • width : 내부 윈도우 자식의 너비
    • height : 내부 윈도우 자식의 높이
    • minsize : 해당 위젯 구역의 최소 크기, 새시를 이 크기보다 작게 이동할 수 없음
    • sticky : 할당된 공간 내에서의 위치 조정, n, e, w, s의 조합 (기본값 = nesw)
    • stretch : 창 크기가 변경될 때 늘어나는 구역 설정, always, first, last, middle, never (기본값 = last)
    • hide : True일 경우, 해당 위젯을 내부 윈도우에서 숨김
    • padx : 내부 윈도우의 가로 여백
    • pady : 내부 윈도우의 세로 여백
  • Tip : 위젯이 추가된 순서에 따라 내부 윈도우에서 위젯의 배열 순서를 결정



PanedWindow Parameter

내부 윈도우 형태 설정

이름 의미 기본값 속성
width 내부 윈도우의 너비 0 상수
height 내부 윈도우의 높이 0 상수
relief 내부 윈도우의 테두리 모양 flat flat, groove, raised, ridge, solid, sunken
borderwidth=bd 내부 윈도우의 테두리 두께 1 상수
background=bg 내부 윈도우의 배경 색상 SystemButtonFace color
orient 내부 윈도우의 표시 방향 horizontal vertical, horizontal
sashwidth 내부 윈도우 새시의 너비 3 상수
sashrelief 내부 윈도우 새시의 테두리 모양 flat flat, groove, raised, ridge, solid, sunken
sashpad 내부 윈도우 새시의 여백 0 상수
showhandle 내부 윈도우 새시의 손잡이 표시 유/무 False Boolean
handlesize 내부 윈도우 새시의 손잡이 크기 8 상수
handlepad 내부 윈도우 새시의 손잡이 위치 8 상수
opaqueresize 새시를 드래그하는 동안 구역 크기를 즉시 변경할지 여부 True Boolean


내부 윈도우 형식 설정

이름 의미 기본값 속성
cursor 내부 윈도우의 마우스 커서 모양 - 커서 속성
sashcursor 내부 윈도우 새시의 마우스 커서 모양 - 커서 속성


참고

  • 미 입력시, width와 height를 자동 조절

  • opaqueresize가 False일 경우, 드래그하는 동안에는 새시의 위치만 표시되고 마우스를 뗄 때 구역의 크기가 변경됨

  • 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

댓글 남기기