Python tkinter 강좌 : 제 29강 – Sizegrip

   

Sizegrip (크기 조절)


1 Sizegrip을 이용하여 위젯의 크기를 조절할 수 있는 크기 조절를 생성할 수 있습니다.



Sizegrip 사용


import tkinter
import tkinter.ttk

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

def Drag(event):

    x=sizegrip.winfo_x()+event.x
    y=sizegrip.winfo_y()+event.y
    sz_width=sizegrip.winfo_reqwidth()
    sz_height=sizegrip.winfo_reqheight()

    text["width"]=x-sz_width
    text["height"]=y-sz_height

    if x >= sz_width and y >= sz_height and x < window.winfo_width() and y < window.winfo_height():
        text.place(x=0, y=0, width=x, height=y)
        sizegrip.place(x=x-sz_width, y=y-sz_height)

text=tkinter.Text(window)
text.place(x=0, y=0)

sizegrip=tkinter.ttk.Sizegrip(window)
sizegrip.place(x=text.winfo_reqwidth()-sizegrip.winfo_reqwidth() , y=text.winfo_reqheight()-sizegrip.winfo_reqheight() )
sizegrip.bind("<B1-Motion>", Drag)

window.mainloop()


import tkinter.ttk


상단에 import tkinter.ttk를 사용하여 ttk 모듈을 포함시킵니다. tkinter.ttk 함수의 사용방법은 tkinter.ttk.*를 이용하여 사용이 가능합니다.


def Drag(event):

    x=sizegrip.winfo_x()+event.x
    y=sizegrip.winfo_y()+event.y
    sz_width=sizegrip.winfo_reqwidth()
    sz_height=sizegrip.winfo_reqheight()

    text["width"]=x-sz_width
    text["height"]=y-sz_height

    if x >= sz_width and y >= sz_height and x < window.winfo_width() and y < window.winfo_height():
        text.place(x=0, y=0, width=x, height=y)
        sizegrip.place(x=x-sz_width, y=y-sz_height)

text=tkinter.Text(window)
text.place(x=0, y=0)

sizegrip=tkinter.ttk.Sizegrip(window)
sizegrip.place(x=text.winfo_reqwidth()-sizegrip.winfo_reqwidth() , y=text.winfo_reqheight()-sizegrip.winfo_reqheight() )
sizegrip.bind("<B1-Motion>", Drag)

tkinter.ttk.Sizegrip(윈도우 창, 파라미터1, 파라미터2, 파라미터3, ...)을 사용하여 크기 조절의 속성을 설정할 수 있습니다.

파라미터를 사용하여 크기 조절의 속성을 설정합니다.

마우스 포인터의 위치와 위젯의 크기에 대한 정보를 활용하여 위젯의 크기를 조절 할 수 있습니다.

winfo_*를 활용하여 위젯에 대한 정보를 확인할 수 있습니다.

x 변수y 변수는 마우스로 크기를 조절할 때 해당 위젯의 좌표를 의미합니다.

sz_width 변수sz_height 변수는 크기 조절 위젯의 실제 크기를 의미합니다.

if문을 활용하여 위젯의 크기를 조절할 때 윈도우 창을 벗어나지 않게 설정합니다.

sizegrip.place()의 좌표를 변경하여 위젯의 내부가 아닌 위젯의 외부로 위치를 이동시킬 수 있습니다.



winfo_ Method###


이름의미속성
winfo_atom(“문자열 식별자”)식별자 부여해당 위젯의 정수 식별자를 부여
winfo_atomname(정수 식별자)식별자 반환해당 위젯의 문자열 식별자를 확인
winfo_cells()컬러맵 반환해당 위젯의 컬러맵 셀의 수 반환
winfo_children()하위 위젯 반환해당 위젯에 포함되어 있는 하위 위젯들을 반환
winfo_class()클래스 명 반환해당 위젯의 클래스 명을 반환
winfo_colormapfull()컬러맵 확인해당 위젯에 컬러맵이 포함되어있다면 참 값 반환
winfo_containing(x, y)경로 이름 반환해당 위젯에 x, y 위치의 위젯 경로 이름을 반환
winfo_depth()비트 깊이 반환해당 위젯의 비트 깊이를 반환
winfo_exists()존재 여부 반환해당 위젯이 존재한다면 참 값 반환
winfo_fpixels(화소)화소 값 반환해당 위젯의 화소 부동 소수점 값 반환
winfo_geometry()위젯 설정 반환해당 위젯의 width x height + x + y 형식의 위젯 설정 반환
winfo_width()위젯 너비 반환해당 위젯의 너비 반환
winfo_height()위젯의 높이 반환해당 위젯의 높이 반환
winfo_id()고유 식별자 반환해당 위젯의 16진수 고유 식별자 반환
winfo_interps()디스플레이 인터프리터 반환해당 위젯에 대한 디스플레이 Tcl 인터프리터 이름 반환
winfo_ismapped()매핑 반환해당 위젯이 매핑되어있다면 참 값 반환
winfo_manager()지오메트리 매니저 이름 반환해당 위젯의 지오메트리 매니저의 값을 반환
winfo_name()위젯 이름 반환해당 위젯의 이름 반환
winfo_parent()상위 위젯 반환해당 위젯의 상위 위젯 이름을 반환
winfo_pathname(id)경로 이름 반환해당 id의 위젯의 경로 이름 반환
winfo_pixel(화소)화소 값 반환해당 위젯의 화소 정수 값 반환
winfo_pointerx()마우스 포인터 x 값 반환해당 위젯에서 마우스 포인터 x 좌표 값 반환
winfo_pointery()마우스 포인터 y 값 반환해당 위젯에서 마우스 포인터 y 좌표 값 반환
winfo_pointerxy()마우스 포인터 (x, y) 값 반환해당 위젯에서 마우스 포인터 (x, y) 좌표 값 반환
winfo_reqwidth()위젯 너비 반환해당 위젯의 요청된 너비 반환
winfo_reqheight()위젯 높이 반환해당 위젯의 요청된 높이 반환
winfo_rgb(color)(r, g, b) 반환color에 해당하는 (r, g, b) 값 반환
winfo_rootx()위젯 좌측 상단 x 값 반환해당 위젯의 좌측 상단 x 좌표 값 반환
winfo_rooty()위젯 좌측 상단 y 값 반환해당 위젯의 좌측 상단 y 좌표 값 반환
winfo_screen()위젯 화면 이름 반환해당 위젯의 화면 이름 반환
winfo_screencells()위젯 화면 픽셀 수 반환해당 위젯의 화면 픽셀 수 반환
winfo_screendepth()위젯 화면 픽셀 깊이 반환해당 위젯의 화면 깊이 반환
winfo_screenmmwidth()위젯 화면 너비 반환해당 위젯의 화면 너비 반환
winfo_screenmmheight()위젯 화면 높이 반환해당 위젯의 화면 높이 반환
winfo_screenvisual()위젯 화면 색상 모델 반환해당 위젯의 화면 색상 모델 반환
winfo_server()윈도우 서버 정보 반환해당 위젯의 서버 (1)버전 (2)개정 번호 (3)공급 업체 (4)서버 릴리즈 번호를 반환
winfo_toplevel()최상위 위젯 반환해당 위젯의 최상위 위젯 반환
winfo_viewable()위젯 매핑 여부 반환해당 위젯이 최상위 윈도우 까지 매핑되어있다면 참 값 반환
winfo_visual()위젯 색상 모델 반환해당 위젯의 색상 모델 반환
winfo_visualid()비주얼 식별자 반환해당 위젯의 비주얼 식별자 반환
winfo_visualsavailable()비주얼 목록 확인해당 위젯에서 사용할 수 있는 모든 비주얼 목록 확인
winfo_vrootwidth()위젯 가상 루트 너비 반환해당 위젯의 가상 루트 너비 반환
winfo_vrootheight()위젯 가상 루트 높이 반환해당 위젯의 가상 루트 높이 반환
winfo_x()위젯 좌측 상단 x 값 반환해당 위젯의 부모에서 좌측 상단 x 좌표 값 반환
winfo_height()위젯 좌측 상단 y 값 반환해당 위젯의 부모에서 좌측 상단 y 좌표 값 반환


  • 화소 형식 : “1i”, “2.0c”
  • r, g, b 범위 : 0~65535
  • 색상 모델 반환 값 : truecolor, staticgray, staticcolor, pseudocolor, grayscale, directcolor



Sizegrip Parameter


크기 조절 형식 설정
이름의미기본값속성
cursor크기 조절의 마우스 커서 모양-커서 속성
class_클래스 설정--



크기 조절 동작 설정
이름의미기본값속성
takefocusTab 키를 이용하여 위젯 이동 허용 여부FalseBoolean



참고

  • 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


도움이 되셨다면 광고 클릭 부탁드립니다.

⤧  Next post Python tkinter 강좌 : 제 30강 – Treeview ⤧  Previous post Python tkinter 강좌 : 제 28강 – Notebook