개요
wxPython을 이용하여 간단한 메뉴바(wx.Menubar)를 구성해보자. 메뉴바 항목들에 마우스 오버(Mouse Over)를 하면 상태표시줄에 해당 메뉴에 대한 설명 문구가 뜨게 한다.
wx.Menubar
메뉴바(wx.Menubar)란 프레임 상단에 위치하고 일련의 메뉴들로 구성된 wxPython 위젯이다. 메뉴바 인스턴스(menubar)를 생성 후 wx.Frame.SetMenuBar()를 이용하여 프레임에 셋팅한다.
menubar = wx.MenuBar()
frame.SetMenuBar(menubar)
그러나 위 코드만으로는 메뉴바가 보이지 않을 것이다. 메뉴바는 각 메뉴(wx.Menu)들이 달릴 수 있는 그릇이고 메뉴가 하나라도 없으면 메뉴바는 GUI에서 보이지 않는다.
메뉴바 인스턴스 생성 후 아래와 같이 메뉴(wx.Menu)를 추가해보자. "File" 메뉴를 생성하고 하위 항목으로 "Open..."과 "Exit"을 추가한다. 추가는 File 메뉴의 인스턴스(file_menu)에 Append(id, item="아이템이름", helpString="도움말", kind=(ItemKind))로 할 수 있다. helpString은 상태표시줄에 뜨는 문구이다. 일반적인 경우 kind는 생략 가능하다.
# File 메뉴 버튼과 그 하위 항목
file_menu = wx.Menu()
file_menu.Append(wx.ID_ANY, "Open...", '파일 열기') # 차례로 id / 메뉴항목 / 상태표시줄 텍스트
file_menu.Append(wx.ID_ANY, "Exit", '프로그램을 종료합니다.')
이렇게 File 메뉴가 구성이 되면 File 메뉴 인스턴스를 메뉴바에 연결할 수 있다. 앞서 wx.Menu.Append와 혼동하지 말자. 여기서는 wx.MenuBar.Append(menu, title)로 메뉴바에 File 메뉴를 붙이고 제목을 "File"로 하겠다는 뜻이다.
menubar.Append(file_menu, "File")
메뉴바(wx.MenuBar)에 메뉴(wx.Menu)를 붙이고, 메뉴(wx.Menu)에 항목(Menu Items)들을 붙인다는 것을 기억하자.
wx.MenuBar 예제
이제 위 코드를 응용하여 간단한 메뉴바 예제를 작성해보자.
import wx
# wx.Frame 상속 클래스
class MenubarExampleFrame(wx.Frame):
def __init__(self):
# Frame 초기화
wx.Frame.__init__(self,
None,
id=wx.ID_ANY, # id에 -1 혹은 wx.ID_ANY를 입력하면 자동으로 아이디가 할당
title='MenuBar Example',
size=(990/2,520/2), pos=(100,100)) # 창 사이즈와 위치를 조절
"""""""""""""""
메뉴바 생성 코드
"""""""""""""""
# File & Edit 메뉴 버튼을 모두 포함하는 메뉴 바 전체
menubar = wx.MenuBar()
# File 메뉴 버튼과 그 하위 항목
file_menu = wx.Menu()
file_menu.Append(wx.ID_ANY, "Open...", '파일 열기') # 차례로 id / 메뉴항목 / 상태표시줄 텍스트
file_menu.Append(wx.ID_ANY, "Exit", '프로그램을 종료합니다.')
# Edit 메뉴 버튼과 그 하위 항목
edit_menu = wx.Menu()
edit_menu.Append(wx.ID_ANY, "Undo", '되돌리기')
edit_menu.Append(wx.ID_ANY, "Redo", '복구')
# 앞서 정의한 File 메뉴와 Edit 메뉴를 "메뉴바"에 붙인다.
menubar.Append(file_menu, "File")
menubar.Append(edit_menu, "Edit")
# 메뉴바를 "self" (=MenubarExampleFrame)에 세팅하고 사용자에게 보여준다.
self.SetMenuBar(menubar)
# 프레임 하단에 상태표시줄을 만든다.
status = self.CreateStatusBar()
if __name__ == "__main__":
app = wx.App()
window = MenubarExampleFrame()
window.Show()
# app 실행
app.MainLoop()
메뉴바에 File, Edit 메뉴가 있고, 그 하위 아이템으로는 각각 (File) Open..., Exit와 (Edit) Undo, Redo를 구성하였다. 각 메뉴 항목에 마우스오버를 하면 상태표시줄에 설명이 뜬다.
도움되셨다면 하트(♥) 부탁드리고, 더 궁금한 사항은 댓글로 남겨주세요 :)
'wxPython' 카테고리의 다른 글
파이썬 GUI, 싱글초이스다이얼로그 wx.SingleChoiceDialog (0) | 2023.02.22 |
---|---|
파이썬 GUI, 체크박스 생성 후 이벤트 연결하기 (0) | 2023.02.22 |
파이썬 GUI, 버튼 생성 후 이벤트 등록하기 (0) | 2023.02.12 |
파이썬 GUI, wxPython Hello World! (0) | 2023.02.12 |
파이썬 GUI, 왜 wxPython 인가? (1) | 2023.02.11 |