Python tkinter Menu 위젯에 대해 살펴보겠습니다.
Menu는 우리가 흔히 알고 있듯이 여러 기능 들을 분류하여 나누는 위젯입니다.
Menu 만들기
Menu는 tkinter에 Menu(window) 함수로 생성합니다.
매개변수로 Menu가 출력될 window를 넣어줘야 합니다.
import tkinter
win = tkinter.Tk();
menu1 = tkinter.Menu(win);
menu1.add_command(label='menu1');
win.config(menu=menu1);
win.mainloop();
최종적으로 윈도우에 menu속성으로 생성한 Menu를 넣어줘야 화면에 출력됩니다.
이렇게 아주간단하게 Menu 만들기에 성공했습니다.
이제는 실제 프로그램처럼 여러 Menu를 만들고 기능을 부여하는 예제를 살펴보겠습니다.
import tkinter
win = tkinter.Tk();
# label만들기
label = tkinter.Label(win, text='hello, this is Label');
label.pack();
def redLabel():
label.config(background='red');
def blueLabel():
label.config(background='blue');
# Menu만들기
allMenu = tkinter.Menu(win);
menu1 = tkinter.Menu(allMenu, tearoff=0);
menu1.add_command(label='subMenu1');
menu1.add_command(label='subMenu2');
allMenu.add_cascade(label='menu1', menu=menu1);
menu2 = tkinter.Menu(allMenu, tearoff=0);
menu2.add_radiobutton(label='red', command=redLabel);
menu2.add_radiobutton(label='blue', command=blueLabel);
allMenu.add_cascade(label='color', menu=menu2);
win.config(menu=allMenu);
win.mainloop();
위 코드는 윈도우에 allMenu라는 메뉴를 만들고 그 안에 menu1, color라는 상위 메뉴 두 가지를 만들었습니다.
각각의 상위메뉴 안에 두 개의 서브메뉴가 만들어졌고
color 메뉴안에 메뉴들은 선택 시 Label의 배경 색상이 변경되도록 코딩되었습니다.
코드의 정확한 의미나 뜻은 아래 함수 및 옵션 정리 내용과 비교하시면 쉽게 이해 가능합니다.
Menu의 함수들
이름 | 기능 |
add_command(옵션) | 기본 메뉴 생성 |
add_radiobutton(옵션) | 라디오버튼 메뉴 생성 ( 여러메뉴중 단일 선택 ) |
add_checkbutton(옵션) | 체크버튼 메뉴 생성 ( 여러메뉴중 다중 선택 ) |
add_cascade(옵션) | 상위메뉴와 하위메뉴 연결 ( 상위메뉴에 사용하고 옵션으로 menu=하위메뉴 ) |
add_separator() | 구분선 생성 |
add(유형, 옵션) | 원한는 유형의 메뉴 생성 |
delete(start_index, end_index) | start_index부터 end_index까지의 메뉴삭제 |
entryconfig(index, 옵션) | index위치의 메뉴 수정 |
index(menu) | menu의 index위치 반환 |
insert_separator(index) | index위치에 구분선 생성 |
invoke(index) | index 위치의 메뉴 실행 ( 클릭한것처럼 ) |
type(index) | index 위치의 메뉴유형 반환합니다. ( command, checkbutton, radiobutton, ... ) |
Menu의 옵션들
1. Menu의 동작 관련
이름 | 기능 | 기본값 | 속성 |
postcommand | 메뉴가 선택되었을때 실행할 함수 | 함수 | |
tearoff | 하위메뉴 분리기능 사용 유무 | False | Boolean |
title | 하위메뉴 분리기능의 제목 | 문자열 |
2. Menu의 디자인 관련
이름 | 기능 | 기본값 | 속성 |
relief | Menu의 테두리 모양 | flat | flat, raised, ridge, groove, sunken, solid |
foreground | Menu의 문자열 색상 | SystemButtonFace | color |
background | Menu의 배경색상 | SystemButtonFace | color |
selectcolor | 하위메뉴의 선택표시 색상 | SystemWindow | color |
font | Menu의 문자열 글꼴 | TkDefaultFont | font |
cursor | Menu의 마우스 커서 모양 | pointer, arrow등 cursor속성 | |
activeborderwidth | active상태일때 Menu의 테두리 두께 | 1 | 숫자 |
activeforeground | active상태일때 Menu의 문자열 색상 | SystemButtonText | color |
activebackground | active상태일때 Menu의 배경색상 | SystemHighlight | color |
disabledforeground | disabled상태일때 Menu의 문자열 색상 | SystemDisabledText | color |