본문 바로가기
프로그래밍 관련/PyQt

Pyqt 메뉴 만들기 상위메뉴

by 존버매니아.임베디드 개발자 2022. 8. 14.
반응형

파이썬[Python GUI, PyQt5 Tutorial 021] 메뉴바(Menu Bar) 만들기 (tistory.com)

 

최상단 메뉴바 1개 만들기

만들어진 메뉴바에 선택지 만들기

각 선택지 아래에서 실제 실행될 액션 만들기

 

아래 예시코드 복붙해서 실행시켜보면서 코드를 보면 이해 될 것임

import sys
from PyQt5.QtWidgets import *
    
class MyWindow(QMainWindow):
         
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Test")
        self.setGeometry(1000, 200, 700, 700)

        #최상단 메뉴바 생성하기     
        menubar = self.menuBar()
        
        #만들어진 메뉴바에 선택지 3개 만들기     
        menu1 = menubar.addMenu("파일") 
        menu2 = menubar.addMenu("설정")
        menu3 = menubar.addMenu("Help")

        #실제 실행될 action들 만들기
        loadfile = QAction('laod File', self)
        savefile = QAction('save File', self)

        property = QAction('property', self)
        
        help =    QAction('help', self)
        version = QAction('version 보기', self)
        
        #'파일' 메뉴에 액션 2개 연결
        menu1.addAction(loadfile)
        menu1.addAction(savefile)

        #'설정' 메뉴에 액션 1개 연결
        menu2.addAction(property)

        #'help' 메뉴에 액션 2개 연결
        menu3.addAction(help)
        menu3.addAction(version)

        
if __name__ == "__main__":
    app = QApplication(sys.argv)
    myWindow = MyWindow()
    myWindow.show()

    app.exec_()

  • 액션 설정해주기액션 관련해서 이런저런 메소드들이 많은데 가장 기본이 될만한 기능만 예시에서 사용해보았다.

    해당 액션 선택시 실행될 function 연결해주기
    해당 액션에 대한 단축키 지정해주기
import sys
from PyQt5.QtWidgets import *
    
class MyWindow(QMainWindow):
         
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Test")
        self.setGeometry(1000, 200, 700, 700)

        #최상단 메뉴바 생성하기     
        menubar = self.menuBar()
        
        #만들어진 메뉴바에 선택지 만들기     
        menu1 = menubar.addMenu("파일") 
        
        #실제 실행될 action들 만들기
        act_loadfile = QAction('laod File', self)
        act_loadfile.triggered.connect(self.fun_loadfile) # 메뉴 선택시 실행될 function 연결
        # loadfile.hovered.connect(self.fun_loadfile)     # 마우스를 메뉴에 올렸을 때 (클릭은 안한 상태)
        
        act_loadfile.setShortcut('Ctrl+L')  # 단축키 셋팅
                
        #'파일' 메뉴에 액션 1개 연결
        menu1.addAction(act_loadfile)

    def fun_loadfile(self):
        print("loadfile run")
               
if __name__ == "__main__":
    app = QApplication(sys.argv)
    myWindow = MyWindow()
    myWindow.show()

    app.exec_()
반응형