QWidget 을 기반으로 메뉴 / 상태바 / 툴바
등 자주쓰는 Window 형태를 미리 구현해 둔 클래스로, 메뉴 / 상태표시줄 / 툴바를 쓰기 위해서는QWidget 이 아닌 QMainWindow
를 써야 한다
Modal
: 최상위 Modal 창
만 사용 가능하여 하위 창 제어 불가 , exec_() 메서드 사용
Modaless
: 순서 상관없이
사용자가 마음대로 제어 가능한 창 , show() 메서드 사용
StatusBar
: 화면하단에 표시되는 정보 출력
from PySide6.QtWidgets import *
app = QApplication()
win = QMainWindow()
win.resize(400,400) # setGeomerty(0,0,400,400)와 동일
txt = QLabel("라면",win) # 상단 배치
txt.adjustSize() # 글자길이 자동 맞춰주는 메서드
bar = win.statusBar()
bar.showMessage("배고프다") # 하단 배치
win.show()
app.exec()
QMainWindow 에 구현되어 있는 MenuBar 객체 사용
from PySide6.QtWidgets import *
app = QApplication()
win = QMainWindow()
menu = win.menuBar()
menu.addMenu("파일")
menu.addMenu("저장")
win.show()
app.exec()
QAction
: 메뉴 / 툴바 버튼 / 단축키를 통해 명령을 내릴 수 있는 객체
from PySide6.QtWidgets import *
from PySide6.QtGui import * # 하위 메뉴를 위한 import
app = QApplication()
win = QMainWindow()
menu = win.menuBar()
menuFile = menu.addMenu("파일")
menuStore = menu.addMenu("저장")
new = QAction("New",win)
menuFile.addAction(new)
win.show()
app.exec()
Trigger Signal 연결
메뉴를 눌렀을 때 , Trigger Signal 이 발생
슬롯 함수와 connect 하기
from PySide6.QtWidgets import *
from PySide6.QtGui import * # 하위 메뉴를 위한 import
app = QApplication()
win = QMainWindow()
menu = win.menuBar()
menuFile = menu.addMenu("파일")
menuStore = menu.addMenu("저장")
bar = win.statusBar()
bar.showMessage("메뉴를 클릭해보세요.")
new = QAction("New",win)
menuFile.addAction(new)
def run():
bar.showMessage("버튼 눌림")
new.triggered.connect(run)
win.show()
app.exec()
Label을 QMainWindow에 추가할 때 영역이 겹치게 되는 문제를 해결하기 위한 메서드
from PySide6.QtWidgets import *
from PySide6.QtGui import * # 하위 메뉴를 위한 import
app = QApplication()
win = QMainWindow()
menu = win.menuBar()
menu.addMenu("안녕")
menu.addMenu("잘가")
main = QWidget()
win.setCentralWidget(main)
txt = QLabel("HI",main)
win.show()
app.exec()