Appia의 IT세상

파이썬[Python] 025 tkinter 기본강의 005 Menu, Menubutton 본문

Python/Python Tk (GUI)

파이썬[Python] 025 tkinter 기본강의 005 Menu, Menubutton

Appia 2020. 1. 2. 06:51
반응형

오늘 포스팅에서는 GUI에서 가장 기본 되는 Menu 생성하는 방법과 버튼에 추가 메뉴가 달리는 Menubutton 생성하는 방법에 대해서 살펴보고자 합니다.

 

Menu

 

대부분 GUI기반의 툴을 사용하다 보면, File, Edit, Help등의 메뉴로 구성되는 윈도우 상단에 있는 메뉴들을 수가 있습니다. 이런 메뉴를 생성할 있는 방법은 다음과 같습니다.

 

w = Menu ( master, option, ... )

 

여기에서 몇가지 옵션들에 대해서 살펴봐야 합니다.

  • Add_cascade()  - 상위 메뉴 탭에 대한 설정
  • Add_command() - 상위 메뉴 버튼에 대한 항목 추가
  • Add_separator() - 분리 추가

그럼 예시 살펴보겠습니다.

from tkinter import *

def domenu():
    print("OK")

root = Tk()
menubar = Menu(root)                                # 윈도우에 메뉴바 추가
filemenu = Menu(menubar, tearoff=0)                 # 상위 메뉴 탭 항목 추가
menubar.add_cascade(label="File", menu=filemenu)    # 상위 메뉴 탭 설정
filemenu.add_command(label="New", command=domenu)   # 항목 추가
filemenu.add_command(label="Open", command=domenu)
filemenu.add_command(label="Save", command=domenu)
filemenu.add_command(label="Save as...", command=domenu)
filemenu.add_separator()                            # 분리선 추가
filemenu.add_command(label="Exit", command=root.quit)

editmenu = Menu(menubar, tearoff=0)
menubar.add_cascade(label="Edit", menu=editmenu)
editmenu.add_command(label="Copy", command=domenu)
editmenu.add_command(label="Paste", command=domenu)
editmenu.add_separator()
editmenu.add_command(label="Delete", command=domenu)

helpmenu = Menu(menubar, tearoff=0)
menubar.add_cascade(label="Help", menu=helpmenu)
helpmenu.add_command(label="About...", command=domenu)

root.config(menu=menubar)             # 생성된 객체를 위에서 생성된 메뉴바에 연결         
root.mainloop()

 

위의 명시된 3가지 옵섭이 주요 사용되었습니다. 전체적인 흐름을 보면 윈도우에 메뉴바를 추가 하였습니다. 그리고, 위젯 중 하나인 메뉴를 생성하였습니다. 여기에는 총 3가지 탭(File, Edit, Help)로 구성됩니다. 여기에 생성한 각 객체를 앞서 윈도우에 생성한 메뉴바에 추가 합니다. 이러한 순서로 됩니다. 

 

위의 예시를 실행하면 다음과 같은 결과가 나옵니다. 

 

Menubutton

 

Menubutton의 경우, 메뉴바와 달리 버튼에 메뉴가 표시되게 하는 방법입니다. 저의 경우는 많이 사용하지는 않지만, 여러가지 동작을 한번에 실행하는 버튼과 별개로 각각의 행동을 수행하게 하는 버튼을 만들 때에 유용하게 사용할 수 있습니다. 대부분의 Option은 앞서 Menu에서 사용한 부분과 같습니다. 그래서 간단한 문법과 예시만 살펴 보도록 하겠습니다. 

 

w = Menubutton ( master, option, ... )

다음과 같은 예제를 한번 만들어 봤습니다. 

from tkinter import *

root = Tk()
mb = Menubutton(root, text="MenuButton")
mb.grid()
mb.menu = Menu(mb, tearoff=0)
mb["menu"] = mb.menu

mb.menu.add_checkbutton(label="Cat")
mb.menu.add_checkbutton(label="Dog")

mb.pack()
root.mainloop()

 

위의 부분을 실행하면 다음과 같은 결과가 나옵니다. 실행 후에 MenuButton을 클릭한 것입니다. 

 

 

오늘은 간단하게 Menu와 MenuButton을 생성하는 방법에 대해서 살펴봤습니다. 실제 Menu같은 경우에 상당히 많이 사용하는 부분입니다. 관련해서 활용도가 높을 것이라고 생각합니다. 

반응형
Comments