개요
사용자가 만든 GUI 애플리케이션에서,
사용자가 입력한 설정(예: 페이지 수, URL 등)을 프로그램 종료 후에도 자동으로 저장하고, 이를 불러오는 방법에 대해 기록해보려고 한다.
PySide6의 QSettings
클래스를 사용하면, 복잡한 파일 입출력 없이 간편하게 애플리케이션 설정을 관리할 수 있다!
QSettings란?
PySide6의 QSettings
클래스는 운영체제에 맞게 설정을 저장하는 기능을 제공하고 있다.
- Windows: 레지스트리에 저장
- macOS: plist 파일에 저장
- Linux: 보통 .ini 파일 형식으로 저장
개발자는 파일 경로나 데이터베이스를 직접 관리할 필요 없이,
QSettings의 간단한 인터페이스를 통해 설정 값을 저장하고 불러올 수 있다.
정말 좋은 기능 같다!
QSettings 사용 방법
1. QSettings 객체 생성
우선, 애플리케이션의 식별을 위해
회사명
과 애플리케이션명
등을 인자로 전달하여 QSettings 객체를 생성해주자.
이 때 회사명
, 애플리케이션명
은 본인이 임의로 지정한 것으로 구현자가 원하는 키워드로 변경해도 상관 없다.
2. 설정 값 저장하기
사용자가 입력한 값을 저장하려면 setValue(key, value)
메소드를 사용한다.
settings.setValue("page_count", page_count)
settings.setValue("delay", delay)
3. 설정 값 불러오기
저장된 값을 불러올 때는 value(key, defaultValue)
메서드를 사용하면 된다.
page_count = settings.value("page_count", 0) # 기본값 0
delay = settings.value("delay", 0) # 기본값 0
예제 코드
아래 코드는 QSettings
를 활용해 UI에 입력된 페이지 수와 딜레이 값을 저장하고 불러오는 예제 코드이다.
import sys
from PySide6.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget, QLineEdit, QLabel, QPushButton
from PySide6.QtCore import QSettings
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# QSettings 객체 생성 (회사명, 애플리케이션명)
self.settings = QSettings("MyCompany", "MyApp")
# UI 구성
self.page_label = QLabel("페이지 수:")
self.page_input = QLineEdit()
self.delay_label = QLabel("딜레이 (초):")
self.delay_input = QLineEdit()
self.save_button = QPushButton("저장")
self.save_button.clicked.connect(self.save_settings)
layout = QVBoxLayout()
layout.addWidget(self.page_label)
layout.addWidget(self.page_input)
layout.addWidget(self.delay_label)
layout.addWidget(self.delay_input)
layout.addWidget(self.save_button)
container = QWidget()
container.setLayout(layout)
self.setCentralWidget(container)
# 애플리케이션 시작 시 설정 불러오기
self.load_settings()
def load_settings(self):
"""이전에 저장된 설정 값을 불러옵니다."""
self.page_input.setText(self.settings.value("page_count", ""))
self.delay_input.setText(self.settings.value("delay", ""))
def save_settings(self):
"""현재 UI에 입력된 값을 설정에 저장합니다."""
self.settings.setValue("page_count", self.page_input.text())
self.settings.setValue("delay", self.delay_input.text())
def closeEvent(self, event):
"""프로그램 종료 시 자동으로 설정을 저장합니다."""
self.save_settings()
super().closeEvent(event)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
위 코드를 실행하면, 사용자가 입력한 페이지 수와 딜레이 값이 프로그램 종료 시 자동으로 저장되며,
다음 실행 시 자동으로 불러와진다 !~