Python tkinter Menu ( 메뉴 )

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