Python tkinter 강좌 : 제 8강 - Menu
Menu(메뉴)
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="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>", 함수)로 따로 연결해야 합니다.
Menu Method
| 이름 | 의미 |
|---|---|
| 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=연결할 상위 메뉴)를 이용하여 메뉴를 부착할 수 있습니다.
Menu Parameter
메뉴 형태 설정
| 이름 | 의미 | 기본값 | 속성 |
|---|---|---|---|
| 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
댓글 남기기