Python tkinter 강좌 : 제 8강 – Menu

   

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="disable")
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="disable")
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() 이후의 코드를 실행시킵니다.




이름의미
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(속성)선택 유형 반환 (command, radiobutton, checkbutton, cascade, separator, tearoff)


  • Tip : 파라미터 중, : label=이름을 이용하여 메뉴의 이름을 설정할 수 있습니다.
  • Tip : 메뉴 이름.add_cascade(label="상위 메뉴 이름", menu=연결할 상위 메뉴)를 이용하여 메뉴를 부착할 수 있습니다.




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



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



메뉴 상태 설정
이름의미기본값속성
activeborderwidthactive 상태일 때 메뉴의 테두리 두께1상수
activebackgroundactive 상태일 때 메뉴의 배경 색상SystemHighlightcolor
activeforegroundactive 상태일 때 메뉴의 문자열 색상SystemButtonTextcolor
disabledforegrounddisabeld 상태일 때 메뉴의 문자열 색상SystemDisabledTextcolor



메뉴 동작 설정
이름의미기본값속성
postcommand메뉴가 선택되었을 때 실행하는 메소드(함수)-메소드, 함수
tearoff하위메뉴의 분리 기능 사용 유/무FalseBoolean
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


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

⤧  Next post Python tkinter 강좌 : 제 9강 – Menubutton ⤧  Previous post Python tkinter 강좌 : 제 7강 – Radiobutton