Читайте документацию по QSettings()
В методе CloseEvent() вызываете self.writeSettings()
Вот мой пример:
# процедура сохранения настроек:
def writeSettings(self):
settings = QtCore.QSettings("MyDirConfigName", "my_config_file_name")
# координаты окна приложения
position = self.pos()
# размер окна приложения
sizeWin = self.size()
settings.setValue("pos", position)
settings.setValue("size", sizeWin)
# пример сохраненения размеров частей виджета QSplitter
settings.setValue("sizeTreeDSplitter", self.split.saveState())
# можно группировать атрибуты для сохранения
# "groupName" - это имя группы (придумываете своё любое)
settings.beginGroup("groupName")
# сохраняете в группу то, что нужно, вызывая settings.setValue
settings.setValue("groupItemName_1", "data_for_saving_1")
#.....
settings.setValue("groupItemName_2", "data_for_saving_2")
#.....
settings.endGroup()
#в конструкторе основного класса приложения, например, в QMainWindow() вызываете self.readSettings()
#процедура чтения сохраненных настроек:
def readSettings(self):
settings = QtCore.QSettings("MyDirConfigName", "my_config_file_name")
# координаты окна приложения
position = settings.value("pos", QtCore.QPoint(400, 400))
self.move(position)
# размер окна приложения
sizeWin = settings.value("size", QtCore.QSize(1000, 900))
self.resize(sizeWin)
# пример чтения сохраненных размеров частей в QSplitter
sizeTreeDSplitter = settings.value("sizeTreeDSplitter", QtCore.QByteArray())
self.split.restoreState(sizeTreeDSplitter)
# пример чтения из группы
settings.beginGroup("groupName")
self.value1 = settings.value("groupItemName_1", "default_data_1"))
#.... используете прочитанное значение self.value1 как вам надо
self.value2 = settings.value("groupItemName_2", "default_data_2"))
#....
settings.endGroup()