Implement saving and restoring window state (size, position, last selected tab) using QSettings in PyQt5

This commit is contained in:
Bernd 2025-07-20 14:16:02 +05:00
parent 50b90bcf9c
commit de63ffc509

View File

@ -11,7 +11,7 @@ from PyQt5.QtWidgets import (
QComboBox, QTextEdit, QDialogButtonBox, QAction, QFileDialog, QMessageBox,
QInputDialog, QApplication, QAbstractItemView, QSizePolicy, QHeaderView
)
from PyQt5.QtCore import Qt
from PyQt5.QtCore import Qt, QSettings
from PyQt5.QtGui import QColor, QIcon
from backend import AnimeBackend
@ -136,6 +136,7 @@ class CustomTableWidget(QTableWidget):
class AnimeTracker(QMainWindow):
def __init__(self):
super().__init__()
self.settings = QSettings("xAI", "AnimeBacklogTracker")
self.setWindowTitle("Anime Backlog Tracker")
self.resize(800, 600)
self.backend = AnimeBackend()
@ -143,6 +144,15 @@ class AnimeTracker(QMainWindow):
self.setCentralWidget(self.tab_widget)
self.create_menu()
self.load_tabs()
self.restoreGeometry(self.settings.value("geometry", self.saveGeometry()))
last_tab = self.settings.value("lastTab", None)
if last_tab is not None:
self.set_current_tab_by_identifier(last_tab)
def closeEvent(self, event):
self.settings.setValue("geometry", self.saveGeometry())
self.settings.setValue("lastTab", self.get_current_tab_identifier())
super().closeEvent(event)
def create_menu(self):
menubar = self.menuBar()
@ -200,6 +210,9 @@ class AnimeTracker(QMainWindow):
if t.startswith(str(identifier) + " ("):
self.tab_widget.setCurrentIndex(i)
return
# If the year no longer exists, default to first tab
if self.tab_widget.count() > 0:
self.tab_widget.setCurrentIndex(0)
def load_tabs(self):
self.tab_widget.clear()