애플리케이션은 일반적으로 여러 창을 사용하여 다양한 정보를 표시하거나 다른 작업을 수행합니다. PySide6에서는 이러한 작업을 쉽게 처리할 수 있도록 다양한 창 클래스를 제공합니다. 이 장에서는 메인 윈도우, 서브 윈도우, 다이얼로그 등을 포함한 다양한 창을 사용하는 방법을 살펴보겠습니다.
#### QMainWindow
QMainWindow는 애플리케이션의 주 창으로 사용되며, 메뉴 바, 도구 모음, 상태 표시줄 등을 포함할 수 있습니다.
**QMainWindow 예제**
```python
import sys
from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton, QToolBar, QStatusBar
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("QMainWindow Example")
# 중앙 위젯 설정
button = QPushButton("Press Me")
self.setCentralWidget(button)
# 도구 모음 추가
toolbar = QToolBar("Main Toolbar")
self.addToolBar(toolbar)
# 상태 표시줄 추가
self.setStatusBar(QStatusBar(self))
app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec()
```
이 예제는 중앙에 버튼이 있는 기본 QMainWindow를 생성하고, 도구 모음과 상태 표시줄을 추가합니다.
#### 다중 창 애플리케이션
다중 창 애플리케이션을 만들기 위해 서브 윈도우를 생성할 수 있습니다. 서브 윈도우는 QDialog 또는 다른 QMainWindow 인스턴스를 사용할 수 있습니다.
**서브 윈도우 예제**
```python
import sys
from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton, QDialog, QVBoxLayout, QLabel
class SubWindow(QDialog):
def __init__(self):
super().__init__()
self.setWindowTitle("Sub Window")
layout = QVBoxLayout()
layout.addWidget(QLabel("This is a sub window"))
self.setLayout(layout)
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Main Window")
button = QPushButton("Open Sub Window")
button.clicked.connect(self.open_sub_window)
self.setCentralWidget(button)
def open_sub_window(self):
dialog = SubWindow()
dialog.exec()
app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec()
```
이 예제는 메인 윈도우에서 버튼을 클릭하면 서브 윈도우를 여는 다중 창 애플리케이션을 생성합니다.
#### MDI (다중 문서 인터페이스)
MDI는 여러 자식 창을 하나의 부모 창 내에서 관리하는 데 사용됩니다. QMainWindow와 QMdiArea 클래스를 사용하여 MDI 애플리케이션을 만들 수 있습니다.
**MDI 예제**
```python
import sys
from PySide6.QtWidgets import QApplication, QMainWindow, QMdiArea, QMdiSubWindow, QTextEdit
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("MDI Example")
# MDI 영역 생성
mdi = QMdiArea()
self.setCentralWidget(mdi)
# 서브 윈도우 생성 및 추가
sub1 = QMdiSubWindow()
sub1.setWidget(QTextEdit())
sub1.setWindowTitle("Subwindow 1")
mdi.addSubWindow(sub1)
sub2 = QMdiSubWindow()
sub2.setWidget(QTextEdit())
sub2.setWindowTitle("Subwindow 2")
mdi.addSubWindow(sub2)
sub1.show()
sub2.show()
app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec()
```
이 예제는 여러 자식 창을 관리하는 MDI 애플리케이션을 생성합니다. 각 자식 창은 QMdiSubWindow로 생성되며, QMdiArea에 추가됩니다.
#### 다이얼로그
다이얼로그는 일반적으로 사용자 입력을 받거나 정보를 제공하는 데 사용됩니다. QDialog 클래스를 사용하여 다이얼로그를 생성할 수 있습니다.
**QDialog 예제**
```python
import sys
from PySide6.QtWidgets import QApplication, QMainWindow, QDialog, QVBoxLayout, QLabel, QPushButton, QDialogButtonBox
class CustomDialog(QDialog):
def __init__(self):
super().__init__()
self.setWindowTitle("Custom Dialog")
layout = QVBoxLayout()
layout.addWidget(QLabel("This is a custom dialog"))
buttons = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel)
buttons.accepted.connect(self.accept)
buttons.rejected.connect(self.reject)
layout.addWidget(buttons)
self.setLayout(layout)
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Main Window")
button = QPushButton("Open Dialog")
button.clicked.connect(self.open_dialog)
self.setCentralWidget(button)
def open_dialog(self):
dialog = CustomDialog()
if dialog.exec():
print("Dialog accepted")
else:
print("Dialog rejected")
app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec()
```
이 예제는 메인 윈도우에서 버튼을 클릭하면 사용자 정의 다이얼로그를 여는 애플리케이션을 생성합니다. 사용자가 다이얼로그에서 확인 또는 취소 버튼을 클릭하면 해당 상태를 출력합니다.
### 결론
이 장에서는 PySide6를 사용하여 다양한 유형의 창을 생성하고 관리하는 방법을 살펴보았습니다. QMainWindow, 서브 윈도우, MDI, 다이얼로그 등을 통해 애플리케이션을 더욱 기능적으로 만들 수 있습니다. 다음 장에서는 이벤트를 처리하는 방법을 알아보겠습니다.
'PYTHON(파이썬) > PYSIDE6(GUI)' 카테고리의 다른 글
| PYSIDE6 QT디자이너 설치 (5) | 2024.10.24 |
|---|---|
| PYSIDE6 이벤트 (0) | 2024.10.24 |
| PYSIDE6 대화상자 (1) | 2024.10.24 |
| PYSIDE6 액션, 도구 모음, 메뉴 (0) | 2024.10.23 |
| PYSIDE6 레이아웃 (0) | 2024.10.22 |