python/tkinter

[Python tkinter GUI] #10 Menu(메뉴)

ohojee 2022. 12. 16. 17:49

 

전체 소스코드
from tkinter import *

root = Tk()

root.title("GUI")
root.geometry("300x150")

def create_new_file():
    print("새 파일을 만듭니다.")

menu = Menu(root)

#File 메뉴
menu_file = Menu(menu, tearoff=0)
menu_file.add_command(label="New File", command=create_new_file)
menu_file.add_command(label="New Window")
menu_file.add_separator()
menu_file.add_command(label="Open File...")
menu_file.add_separator()
menu_file.add_command(label="Save All", state="disable")
menu_file.add_separator()
menu_file.add_command(label="Exit", command=root.quit)
menu.add_cascade(label="File", menu=menu_file)

#File 메뉴(빈 값)
menu.add_cascade(label="Edit") #빈 메뉴 생성

#Language 메뉴 추가(radio버튼 이용)
menu_lang= Menu(menu, tearoff=0)
menu_lang.add_radiobutton(label="Python")
menu_lang.add_radiobutton(label="Java")
menu_lang.add_radiobutton(label="C++")
menu.add_cascade(label="Language", menu=menu_lang)

#View 메뉴
menu_view = Menu(menu, tearoff=0)
menu_view.add_checkbutton(label="Show Minimap")
menu.add_cascade(label="View", menu=menu_view)


root.config(menu=menu)
root.mainloop()
 
 

Menu
 

우리가 흔히 아는 메모장의 파일, 편집, 보기의 기능의 형식을 가진다

menu_file = Menu(menu, tearoff=0)
menu_file.add_command(label="New File", command=create_new_file)
menu_file.add_command(label="New Window")
menu_file.add_separator()
menu_file.add_command(label="Open File...")
menu_file.add_separator()
menu_file.add_command(label="Save All", state="disable")
menu_file.add_separator()
menu_file.add_command(label="Exit", command=root.quit)
menu.add_cascade(label="File", menu=menu_file)
 

.add_command()로 메뉴를 누르면 나오는 실행목록들을 추가할 수 있다

.add_separator()는 아래 GUI 사진에 보이는 구분선이다

.cascade()를 이용해 menu에다 만든 menu_file정보를 넣어줌으로써

둘을 연결한다

 

.config()는 윈도우창에 메뉴를 등록해준다

이 문장이 없으면 GUI에 메뉴가 추가되지 않는다

 

아래는 tearoff를 설정하지 않은 경우다

tearoff는 메뉴의 첫번째 항목 위에 절취선을 말한다

저 절취선을 누르면 오른쪽같이 창형식으로 메뉴바를 사용할 수 있다

 
빈 메뉴 만들기
#File 메뉴(빈 값)
menu.add_cascade(label="Edit") #빈 메뉴 생성
 

다른 method없이 .add_cascade만 써주면

눌러도 아무것도 뜨지 않는 빈 메뉴가 생성된다

메뉴 속 라디오버튼
#Language 메뉴 추가(radio버튼 이용)
menu_lang= Menu(menu, tearoff=0)
menu_lang.add_radiobutton(label="Python")
menu_lang.add_radiobutton(label="Java")
menu_lang.add_radiobutton(label="C++")
menu.add_cascade(label="Language", menu=menu_lang)
 

메뉴에도 라디오버튼을 이용할 수 있다

.add_radiobutton를 이용해 추가할 수 있다

 

메뉴 속 체크버튼
#View 메뉴
menu_view = Menu(menu, tearoff=0)
menu_view.add_checkbutton(label="Show Minimap")
menu.add_cascade(label="View", menu=menu_view)
 

라디오버튼 말고도 체크버튼을 메뉴에 넣을 수 있다

.add_checkbutton를 사용하면 된다