오늘은 QtWidgets에서 QMainWindow 를 알아 볼겁니다
QMainWindow는 가장 외곽의 윈도우 프레임을 만드는 모듈입니다. 1. 메인 윈도우 생성
먼저 메인 윈도우를 생성하기 위해 필요한 함수들은 QMainWindow 로부터 상속을 받습니다. 여기에 QApplication 으로 부터 앱으로서 작동하도록 시스템으로부터 인자를 받아 실행하도록합니다. self.setGeometry(30, 70, 500, 350) // 모니터상에서 생성되는 위치 + 내부프레임 크기 설정 self.setWindowTitle('customUI') // 윈도우내의 타이틀 설정 self.show() // 파일 실행시 gui 보여주도록 명령 이를 실행하면 아래와 같은 윈도우가 생성됩니다. 2. menubar 생성 이번엔 윈도우 내에 메뉴바를 만들어 보겠습니다. from PyQt5.QtWidgets import qApp, QAction from PyQt5.QtGui import QIcon 추가되는 모듈은 QAction과 qApp 그리고 QIcon 입니다. QAction 은 메뉴바에 메뉴와 링크할 기능을 가지는 객체입니다. 여기에 아이콘 객체를 넣기위해서 QIcon 이 필요합니다. qApp은 사실 지금으로서는 있어도 좋고 없어도 좋습니다. 하지만 기능을 간단히 불러올수 있다는 장점이 있어서 여기서 보여줍니다. menu_bar = self.menuBar() // 윈도우 내에서 메뉴바의 공간을 마련합니다. menu_bar.setNativeMenuBar(False) // mac native menu bar를 사용X 처음 코드는 바로 이해가 가능한데 두번째 코드가 어색하네요.. ^^ 맥에서는 사실 메뉴바의 위치가 실행 윈도우 안에 위치하지 않습니다. 그래서 그냥 메뉴바만 생성을 하면 사실 작동하지 않습니다. 해서 맥의 네이티브메뉴바를 사용하지 않겠다는 코딩을 넣어주면 일반 윈도우의 메뉴바처럼 작동하게 만들수 있습니다. 이제 메뉴바를 만들었으니 메뉴를 넣어보겠습니다. # manu 추가 menu1 = menu_bar.addMenu('&파일') menu2 = menu_bar.addMenu('&보기') 하지만 이런 메뉴는 그냥 여러 기능중 비슷한 기능들의 모음집입니다. 모음집이니 이제 기능(action)을 넣어 주어야 합니다. # manu1 기능 생성 action1 = QAction(QIcon('home_icon.png'),'&Exit', self) action1.setShortcut('Ctrl+Q') #단축키로 'Ctrl+Q'로 설정 action1.setStatusTip('Exit App') #statusBar에 표시될 tip 설정 action1.triggered.connect(self.menu1_clicked) #선택시에 menu1_clicked 함수를 호출합니다. menu1.addAction(action1) '파일' 칸에 추가해줍니다. # manu2 기능 생성 action2 = QAction('&View', self) action2.setShortcut('Ctrl+T') #단축키로 'Ctrl+T'로 설정 action2.setStatusTip('View App') #statusBar에 표시될 tip 설정 action2.triggered.connect(self.menu2_clicked) #선택시에 menu2_clicked 함수를 호출합니다. menu2.addAction(action2) '보기' 칸에 추가해줍니다. 여기까지가 윈도우 메뉴바를 생성하는 코드입니다. 아래는 전체 소스코드 입니다.
|
|||||||||||