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를 사용하면 된다
