반응형
목차
파이썬 Pyside 메뉴바 만들기(Menu bar)
GUI 프로그램을 보면 파일 저장, 불러오기 등 이러한 기능을 위쪽 상단에 메뉴 선택으로 만들어져 있음을 볼 수 있습니다. 이번 포스트는 Menu drop을 어떻게 만드는지를 알아보겠습니다. 우선 전체 코드로 결과와 함께 보여 드리고 주석으로 설명 드리겠습니다.
전체 코드>>
from PySide6.QtWidgets import QMainWindow, QApplication, QLabel, QToolBar, QStatusBar, QCheckBox
from PySide6.QtGui import QAction, QIcon, QKeySequence
from PySide6.QtCore import Qt, QSize
import sys
class Qt_Ex(QMainWindow):
def __init__(self):
super(Qt_Ex, self).__init__()
self.setWindowTitle("Qt Example")
self.setFixedSize(QSize(300, 200))
label = QLabel("This is menu bar example")
label.setAlignment(Qt.AlignCenter)
self.setCentralWidget(label)
menu_1 = QAction("Open file", self)
menu_1.setStatusTip("for opening file")
menu_1.triggered.connect(self.file_open_clicked)
menu_1.setShortcut(QKeySequence("Ctrl+o"))
menu_2 = QAction("Open folder", self)
menu_2.setStatusTip("for opening folder")
menu_2.triggered.connect(self.folder_open_clicked)
menu_2.setShortcut(QKeySequence("Ctrl+Shift+o"))
menu_3 = QAction("jpg", self)
menu_3.setStatusTip("for saving jpg file")
menu_3.triggered.connect(self.file_save_clicked)
menu_3.setCheckable(True)
menu_4 = QAction("gif", self)
menu_4.setStatusTip("for saving gif file")
menu_4.triggered.connect(self.file_save_clicked)
menu_4.setCheckable(True)
self.setStatusBar(QStatusBar(self))
menu = self.menuBar()
file_menu = menu.addMenu("File")
file_menu.addAction(menu_1)
file_menu.addAction(menu_2)
file_menu.addSeparator()
file_save = file_menu.addMenu("Save as")
file_save.addAction(menu_3)
file_save.addAction(menu_4)
def file_open_clicked(self, x):
print("return :", x)
print("file opened")
def folder_open_clicked(self, x):
print("return :", x)
print("folder opened")
def file_save_clicked(self, x):
print("return :", x)
print("file saveed")
app = QApplication(sys.argv)
window = Qt_Ex()
window.show()
app.exec()
결과>>
return : True
file saveed
return : False
folder opened
주석>>
label = QLabel("This is menu bar example")
label.setAlignment(Qt.AlignCenter)
self.setCentralWidget(label)
라벨에 글을 입력하고 상단에 고정 합니다.
menu_1 = QAction("Open file", self)
menu_1.setStatusTip("for opening file")
menu_1.triggered.connect(self.file_open_clicked)
menu_1.setShortcut(QKeySequence("Ctrl+o"))
QAction 클래스로 "Open file"이라는 메뉴를 만듭니다.
setStatusTip을 통해서 해당 메뉴에 대한 설명을 윈도우 아래에 띄웁니다.
triggered.connect로 클릭 시 괄호안의 함수를 실행합니다.
Short 키 선택 방법으로 setShortcut 클래스로 Ctrl+O 키를 누르면 해당 메뉴가 동작 합니다.
menu_3.setCheckable(True)
클릭 해서 해당 메뉴 선택이 가능하게 해줍니다.
self.setStatusBar(QStatusBar(self))
setStatusTip에서 입력한 주석 글을 띄워주는 상태창을 만들어 줍니다.
menu = self.menuBar()
file_menu = menu.addMenu("File")
file_menu.addAction(menu_1)
file_menu.addAction(menu_2)
메뉴바를 만들고 menu_1과 menu2 항목을 넣습니다.
file_menu.addSeparator()
줄선으로 메뉴 사이 경계를 만들어 줍니다.
file_save = file_menu.addMenu("Save as")
file_save.addAction(menu_3)
file_save.addAction(menu_4)
하부 메뉴를 추가해서 선택 가능하게 만들어 줍니다.
def file_open_clicked(self, x):
print("return :", x)
print("file opened")
메뉴 선택 시 실행되는 함수로 x 값은 임의의 변수를 넣어도 됩니다. True, False 리턴 값을 전달 해줍니다.
반응형
'파이썬(Python) > PySide' 카테고리의 다른 글
[Python] Pyside 레이아웃 설정, 수직, 수평, 겹치기, 그리드(Layout, Vertical, Horizontal, Stack, Grid) (0) | 2022.12.09 |
---|---|
[Python] PySide 라벨 위치, 폰트, 글자 크기(Pont, Size, Type) (0) | 2022.12.05 |
[Python] PySide 위젯 종류 및 기능(Widget) (0) | 2022.12.02 |
[Python] PySide 라벨 키보드 이벤트 (Lable, Keyboard, Event) (0) | 2022.12.01 |
[Python] PySide 마우스 이벤트 동작(Mouse event) (0) | 2022.11.25 |