zabigun
@zabigun

Как сделать, чтобы дочерняя форма помнила свое состояние при повторном открытие?

Дочерняя форма открывается:
def EnterOS(self):
        global  EnterOsDialog
        EnterOsDialog = QtWidgets.QDialog()
        global ui
        ui = Ui_EnterOsDialog()
        EnterOsDialog.show()

Как подправить вызов так что бы после того как внес изменения в какой либо виджет (например написал что либо в LineEdit), закрыл форму и когда открыл повторно мои изменения сохранились?
  • Вопрос задан
  • 82 просмотра
Пригласить эксперта
Ответы на вопрос 2
Gremlin92
@Gremlin92
Целеустремленный
Надо сохранять в файл и при открытии записывать из него данные
Ответ написан
chuikoalex
@chuikoalex
Викторович
Ну если понудеть, то сразу вопрос какие аргументы у состояния? Размер, положение, текст по умолчанию в LineEdit.
1. Простой выход: создай словарь "состояний", в котором по ключу - названию диалогового окна, можно будет хранить данные о его состоянии (этот вариант если программа простая, и хранить состояние нужно только на время работы приложения).
2. Если программа большая, то Евгений говорит правильно создай класс который наследуется от QDialog и при создании его экземпляров (диалоговых окон) каждое из них будет хранить состояние в себе (тоже только на время работы приложения ибо при перезапуске состояния будут дефолтными).
3. Если прям нужно для сохранения перезапуска, то тут будет правильным создать конфигурационный файл .ini .yaml - кто что любит :)) Ну или словарь из п.1. можно просто сохранить с помощью модуля pickle.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы