파이썬(Python)/PySide

[Python] Pyside 메뉴바 만들기(Menu bar)

끄적끄적아무거나 2022. 12. 13. 08:40
반응형

 

목차

     

     

     

     

    파이썬 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 리턴 값을 전달 해줍니다.

     

     

     

    반응형