반응형
PySide6 팝업에서 Cancel 클릭 시 메인 GUI 닫기
PySide6는 Python으로 GUI 애플리케이션을 개발할 수 있는 강력한 도구로, 사용자에게 직관적인 인터페이스를 제공할 수 있습니다. 이번 포스팅에서는 팝업 창에서 "Cancel" 버튼을 클릭하면 팝업 창과 메인 GUI가 함께 닫히도록 구현하는 방법을 설명합니다. 이 과정에서 PySide6의 기본 개념과 관련된 기술도 함께 설명합니다.
주요 개념
1. PySide6
- Python을 위한 Qt GUI 라이브러리입니다.
- 다양한 GUI 요소를 제공하여 데스크톱 애플리케이션을 쉽게 개발할 수 있습니다.
2. QMessageBox
- PySide6에서 팝업 메시지를 표시할 수 있는 클래스입니다.
- 표준 메시지 타입 (정보, 경고, 오류 등)과 사용자 정의 버튼을 제공할 수 있습니다.
3. 이벤트 루프
- GUI 애플리케이션에서 사용자와의 상호작용을 처리하는 무한 반복 동작입니다.
- exec()로 실행된 팝업은 모달로 동작하여 이벤트 루프를 잠시 중단할 수 있습니다.
반응형
기본 코드 예제
아래는 PySide6에서 팝업에서 "Cancel" 버튼을 클릭할 때 메인 GUI까지 함께 닫히도록 구현한 예제입니다.
import sys
from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton, QMessageBox, QVBoxLayout, QWidget
class PopupWindow(QMessageBox):
def __init__(self, main_window):
super().__init__()
self.main_window = main_window
self.setWindowTitle("Popup Window")
self.setText("This is a popup window.")
self.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel)
self.buttonClicked.connect(self.on_button_clicked)
def on_button_clicked(self, button):
if button.text() == "Cancel":
self.main_window.close()
self.close()
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Main Window")
self.setGeometry(100, 100, 300, 200)
self.initUI()
def initUI(self):
self.button = QPushButton("Show Popup", self)
self.button.clicked.connect(self.show_popup)
layout = QVBoxLayout()
layout.addWidget(self.button)
container = QWidget()
container.setLayout(layout)
self.setCentralWidget(container)
def show_popup(self):
popup = PopupWindow(self)
popup.show()
if __name__ == "__main__":
app = QApplication(sys.argv)
main_window = MainWindow()
main_window.show()
sys.exit(app.exec())
코드 설명
- PopupWindow 클래스
- QMessageBox를 상속받아 팝업으로 사용됩니다.
- "Cancel" 버튼 클릭 시 메인 GUI도 함께 닫히도록 설정했습니다.
- MainWindow 클래스
- 버튼을 클릭하면 팝업이 나타나도록 구성했습니다.
- 팝업 비동기 처리
- 팝업을 popup.show()로 비동기 실행하여 메인 윈도우가 즉시 닫힐 수 있도록 했습니다.
이해를 돕기 위한 기초 용어
- 메인 GUI (Main GUI): 사용자가 애플리케이션을 실행할 때 가장 먼저 표시되는 기본 창.
- 팝업 (Popup): 사용자의 입력이나 확인을 요구하는 임시 창.
- 비동기 (Asynchronous): 이벤트가 독립적으로 처리되어 즉시 응답할 수 있는 방식.
- 모달 (Modal): 사용자 입력이 해당 창에서만 가능하도록 만드는 동작 방식.
반응형
'코딩취미 > Python' 카테고리의 다른 글
Python으로 파일 및 경로 확인, 생성, 삭제 자동화하기 (0) | 2025.05.10 |
---|---|
Python 프로젝트에서 폴더 관리 자동화 (0) | 2025.05.09 |
Python psutil 라이브러리로 시스템 정보 수집 및 실시간 모니터링 만들기 (0) | 2025.05.03 |
경로 생성 시 오류 없이 안전하게 처리하는 구조 (0) | 2025.05.03 |
Pandas 정렬 고급편: 다중 조건 정렬과 GroupBy 후 정렬 완전 정복 (0) | 2025.05.03 |