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

Menu를 이용하여 자주 사용하는 기능 등을 다양한 선택사항으로 나누는 메뉴를 생성할 수 있습니다.



import tkinter

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

def close():
    window.quit()
    window.destroy()

menubar=tkinter.Menu(window)

menu_1=tkinter.Menu(menubar, tearoff=0)
menu_1.add_command(label="하위 메뉴 1-1")
menu_1.add_command(label="하위 메뉴 1-2")
menu_1.add_separator()
menu_1.add_command(label="하위 메뉴 1-3", command=close)
menubar.add_cascade(label="상위 메뉴 1", menu=menu_1)

menu_2=tkinter.Menu(menubar, tearoff=0, selectcolor="red")
menu_2.add_radiobutton(label="하위 메뉴 2-1", state="disabled")
menu_2.add_radiobutton(label="하위 메뉴 2-2")
menu_2.add_radiobutton(label="하위 메뉴 2-3")
menubar.add_cascade(label="상위 메뉴 2", menu=menu_2)

menu_3=tkinter.Menu(menubar, tearoff=0)
menu_3.add_checkbutton(label="하위 메뉴 3-1")
menu_3.add_checkbutton(label="하위 메뉴 3-2")
menubar.add_cascade(label="상위 메뉴 3", menu=menu_3)

window.config(menu=menubar)

window.mainloop()

print("Window Close")


def close():
    window.quit()
    window.destroy()

menubar=tkinter.Menu(window)

menu_1=tkinter.Menu(menubar, tearoff=0)
menu_1.add_command(label="하위 메뉴 1-1")
menu_1.add_command(label="하위 메뉴 1-2")
menu_1.add_separator()
menu_1.add_command(label="하위 메뉴 1-3", command=close)
menubar.add_cascade(label="상위 메뉴 1", menu=menu_1)

menu_2=tkinter.Menu(menubar, tearoff=0, selectcolor="red")
menu_2.add_radiobutton(label="하위 메뉴 2-1", state="disabled")
menu_2.add_radiobutton(label="하위 메뉴 2-2")
menu_2.add_radiobutton(label="하위 메뉴 2-3")
menubar.add_cascade(label="상위 메뉴 2", menu=menu_2)

menu_3=tkinter.Menu(menubar, tearoff=0)
menu_3.add_checkbutton(label="하위 메뉴 3-1")
menu_3.add_checkbutton(label="하위 메뉴 3-2")
menubar.add_cascade(label="상위 메뉴 3", menu=menu_3)

window.config(menu=menubar)

window.mainloop()

print("Window Close")

메뉴 이름=tkinter.Menu(윈도우 창)을 사용하여 해당 윈도우 창에 메뉴를 사용할 수 있습니다.

상위 메뉴 이름=tkinter.Menu(메뉴 이름, 매개변수1, 매개변수2, 매개변수3, ...)을 사용하여 해당 메뉴창에 표시할 상위 메뉴의 속성을 설정할 수 있습니다.

매개변수를 사용하여 상위 메뉴의 속성을 설정합니다.

상위 메뉴 이름.메서드(매개변수1, 매개변수2, 매개변수3, ...)를 사용하여 메서드에 해당하는 하위 메뉴를 추가할 수 있습니다.

매개변수를 사용하여 하위 메뉴의 속성을 설정합니다.

윈도우 창.config(menu=메뉴 이름)을 통하여 해당 윈도우 창에 메뉴를 등록할 수 있습니다.

window.quit()는 위젯이 유지된 채 window.mainloop() 이후의 코드를 실행시킵니다.

window.destroy()는 위젯을 파괴하고 window.mainloop() 이후의 코드를 실행시킵니다.

  • Tip : tearoff=0으로 설정하면 하위 메뉴 맨 위에 표시되는 점선(분리선)이 사라집니다. 점선을 클릭하면 하위 메뉴가 별도의 창으로 분리되므로, 일반적인 프로그램에서는 tearoff=0으로 설정합니다.

  • Tip : add_radiobutton()과 add_checkbutton()은 Radiobutton, Checkbutton 위젯과 같이 variable, value, onvalue, offvalue 매개변수로 제어 변수를 연결할 수 있습니다.

  • Tip : add_command(label="저장", accelerator="Ctrl+S")처럼 accelerator 매개변수를 사용하면 메뉴 항목 오른쪽에 단축키 문자열을 표시할 수 있습니다. 단, 문자열만 표시될 뿐 실제 단축키는 window.bind("<Control-s>", 함수)로 따로 연결해야 합니다.



이름 의미
add_command(매개변수) 기본 메뉴 항목 생성
add_radiobutton(매개변수) 라디오버튼 메뉴 항목 생성
add_checkbutton(매개변수) 체크버튼 메뉴 항목 생성
add_cascade(매개변수) 상위 메뉴와 하위 메뉴 연결
add_separator() 구분선 생성
add(유형, 매개변수) 특정 유형의 메뉴 항목 생성
delete(start_index, end_index) start_index부터 end_index까지의 항목 삭제
entryconfig(index, 매개변수) index 위치의 메뉴 항목 수정
index(item) item 메뉴 항목의 index 위치 반환
insert_separator (index) index 위치에 구분선 생성
invoke(index) index 위치의 항목 실행
type(index) index 위치 항목의 유형 반환 (command, radiobutton, checkbutton, cascade, separator, tearoff)


  • Tip : 매개변수 중 label=이름을 이용하여 메뉴의 이름을 설정할 수 있습니다.

  • Tip : 메뉴 이름.add_cascade(label="상위 메뉴 이름", menu=연결할 상위 메뉴)를 이용하여 메뉴를 부착할 수 있습니다.



메뉴 형태 설정

이름 의미 기본값 속성
relief 메뉴의 테두리 모양 flat flat, groove, raised, ridge, solid, sunken
background=bg 메뉴의 배경 색상 SystemMenu color
foreground=fg 메뉴의 문자열 색상 SystemMenuText color
selectcolor 하위 메뉴의 선택 표시(√) 색상 SystemMenuText color


메뉴 형식 설정

이름 의미 기본값 속성
font 메뉴의 문자열 글꼴 설정 TkDefaultFont font
cursor 메뉴의 마우스 커서 모양 - 커서 속성


메뉴 상태 설정

이름 의미 기본값 속성
activeborderwidth active 상태일 때 메뉴의 테두리 두께 1 상수
activebackground active 상태일 때 메뉴의 배경 색상 SystemHighlight color
activeforeground active 상태일 때 메뉴의 문자열 색상 SystemHighlightText color
disabledforeground disabled 상태일 때 메뉴의 문자열 색상 SystemDisabledText color


메뉴 동작 설정

이름 의미 기본값 속성
postcommand 메뉴가 화면에 표시되기 직전에 실행하는 메서드(함수) - 메서드, 함수
tearoff 하위메뉴의 분리 기능 사용 유/무 True Boolean
title 하위메뉴의 분리 기능의 제목 - 문자열
tearoffcommand 하위 메뉴가 분리될 때 실행하는 메서드(함수) - 메서드, 함수


참고

  • 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

댓글 남기기