YOGYUI

PyQt5 - QMenuBar location in macOS 본문

Software/Python

PyQt5 - QMenuBar location in macOS

요겨 2021. 9. 17. 08:59
반응형

 

Mac OS에서 PyQt5로 윈도우를 만들어서 메뉴바를 추가하면 default로 상단 작업표시줄에 메뉴바가 표시된다

(테스트 당시 OSX 버전은 11.5.2, PyQt5 버전은 5.15.4)

 

[테스트 코드]

if __name__ == '__main__':
    import sys
    from PyQt5.QtGui import *
    from PyQt5.QtCore import *
    from PyQt5.QtWidgets import *

    app = QCoreApplication.instance()
    if app is None:
        app = QApplication(sys.argv)

    window = QMainWindow()
    menubar = QMenuBar(window)
    window.setMenuBar(menubar)

    menu1 = QMenu('Menu1', menubar)
    menubar.addAction(menu1.menuAction())
    mb1 = QAction('menu 1-1')
    menu1.addAction(mb1)
    menu2 = QMenu('Menu2', menubar)
    menubar.addAction(menu2.menuAction())
    mb2 = QAction('menu 2-1')
    menu2.addAction(mb2)

    window.show()
    app.exec_()

메뉴바가 태스크바에!

 

메뉴바가 작업표시줄로 옮겨가기 때문에, 평소 Windows OS와 UI가 달라진다 

개인적인 느낌인 (워낙에 앱등이인지라) Mac OS의 UX가 훨씬 보기 좋다 ㅎㅎ

 

(굳이) OS 환경에 상관없이 메뉴바를 동일하게 QMainWindow의 타이틀바 아래에 위치하게 하고 싶다면 QMenuBar의 'nativeMenuBar' 속성을 False로 설정해주면 된다

https://doc.qt.io/qt-5/qmenubar.html#nativeMenuBar-prop

 

if __name__ == '__main__':
    # ...
    window = QMainWindow()
    menubar = QMenuBar(window)
    window.setMenuBar(menubar)
    menubar.setNativeMenuBar(False)  # 추가
    # ...

setNativeMenuBar(False) 설정 후

 

반응형