GUI에서 가장 기본 되는 Menu를 생성하는 방법과 버튼에 추가 메뉴가 달리는 Menubutton를 생성하는 방법에 대해서 살펴보고자 합니다.
- GUI 어플리케이션에서 메뉴바(menu bar)는 흔하게 사용됩니다.
- 다양한 명령들의 모음이 메뉴바에 위치합니다.
파이썬 위젯 - 메뉴바 만들기 |
대부분 GUI기반의 툴을 사용하다 보면, File, Edit, Help등의 메뉴로 구성되는 윈도우 상단에 있는 메뉴들을 볼 수가 있습니다. 이런 메뉴를 생성할 수 있는 방법은 다음과 같습니다.
w = Menu ( master, option, ... ) |
▶ 메뉴바 옵션
[ 파이썬 위젯 메뉴바 만들기 예제 1 ]
from tkinter import *
from tkinter import filedialog
win = Tk()
win.geometry('300x200')
win.title("메뉴바 만들기")
def open():
print(filedialog.askopenfilename(initialdir = "/",
title = "Open file",filetypes = (("Python files","*.py;*.pyw"),
("All files","*.*"))))
def save():
print(filedialog.asksaveasfilename(initialdir = "/",
title = "Save as",filetypes = (("Python files","*.py;*.pyw"),
("All files","*.*"))))
def test():
print("파이썬 메뉴바 공부중....")
def close():
win.quit() #위젯을 유지한 채 mainloop() 이후 코드를 실행한다.
win.destroy() #위젯을 제거한 채 mainloop() 이후 코드를 실행한다.
#메뉴바를 만듭니다.
menubar = Menu(win)
filemenu = Menu(menubar, tearoff=0) # 상위 메뉴 탭 항목 추가
menubar.add_cascade(label="파일", menu=filemenu) # 상위 메뉴 탭 설정
filemenu.add_command(label="새파일", command=test) # 항목 추가
filemenu.add_command(label="열기", command=open)
filemenu.add_command(label="저장하기", command=save)
filemenu.add_command(label="새 이름으로...", command=test)
filemenu.add_separator() # 분리선 추가
filemenu.add_command(label="끝내기", command=close)
editmenu = Menu(menubar, tearoff=0)
menubar.add_cascade(label="편집", menu=editmenu)
editmenu.add_command(label="복사하기", command=test)
editmenu.add_command(label="붙여넣기", command=test)
editmenu.add_separator()
editmenu.add_command(label="삭제하기", command=test)
helpmenu = Menu(menubar, tearoff=0)
menubar.add_cascade(label="도움말", menu=helpmenu)
helpmenu.add_command(label="About...", command=test)
# 생성된 객체를 위에서 생성된 메뉴바에 연결합니다.
# 윈도우창에 메뉴를 등록한다.
win.config(menu=menubar)
win.mainloop()
'파이썬 GUI' 카테고리의 다른 글
16. 파이썬 위젯 - 농구장 그리기 (0) | 2021.06.21 |
---|---|
14. 파이썬 위젯 - 캔버스(이미지) (0) | 2020.12.20 |
13. 파이썬 위젯 - 마우스로 그림 그리기 (0) | 2020.12.18 |
12. 파이선 위젯 - 캔버스(원그리기) (0) | 2020.12.18 |
11. 파이썬 위젯 - 캔버스(사각형그리기) (0) | 2020.12.16 |