@Diolorca

Как сохранить данные из множества полей (объектов) формы QT?

Здравствуйте.
Посоветуйте путь решения проблемы, я не особо силен в Python и только учусь.
У меня есть форма на QT. В этой форме несколько десятков полей QLineEdit, несколько десятков QComboBox, и несколько QPlainTextEdit. Мне нужно, чтобы данные из объектов, перечисленных выше, сохранялись в какой-либо файл, а при необходимости их можно было бы подгружать в эти же поля (объекты).
Для нескольких QLineEdit я это сделал, данные сохраняются просто в текстовый файл и по необходимости подгружаются в форму QT. Но мне пришлось описывать вручную каждое поле, с которым я работаю, что не совсем рационально.
Как еще можно сделать более просто, чтобы сохранять и читать данные, при этом планируется в дальнейшем добавлять еще поля...
  • Вопрос задан
  • 70 просмотров
Решения вопроса 1
@AlbertForest
Сразу оговорюсь, что я не изучал вопрос и не знаю, есть ли нормальное решение. Но в голову пришла такая мысль:

У элементов формы есть ObjectName. По умолчанию это что-то типа groupBox_2, comboBox_5 и тд.
Выполнив form.__dict__ ты увидишь все атрибуты формы.


# Опишем нужные нам поля следующим образом:
attr_types = {
    "comboBox": ["currentText", "setCurrentText"],
    "lineEdit": ["text", "setText"],
    "plainTextEdit": ["toPlainText", "setPlainText"],
}

# Выберем нужные элементы из атрибутов формы:
for unit in [x for x in form.__dict__ if x.startswith(tuple(attr_types))]:
    # И получим их значения
    value = getattr(getattr(form, unit), attr_types.get(unit.split('_')[0])[0])()


Теперь у тебя есть:
unit - имя твоего элемента
value - его значение

Сохраняй куда угодно
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы