Форум сайта python.su
Привет.
Сохраняю строку в файл ini следующим образом:
settings.setValue('settings/test', self.lineEdit.text())
self.ui.lineEdit.setText(settings.value('settings/test', ''))
[settings] test=my test string
[settings] test="my test string 1veryverylongstringsadfnbadskjgnsdkjfnkjsdnfkjsdnfkjsdnfkjsdnfkjsndkfjnsdkjfn"
Отредактировано ValeriyB (Апрель 12, 2012 20:02:44)
Офлайн
Не могу воспроизвести. Напишите:
from PyQt4 import QtCore test_string = "looooong" * 1000 test_string_with_spaces = "looooong loong asdf" * 100000 settings = QtCore.QSettings("test.ini", QtCore.QSettings.IniFormat) settings.setValue('test1', test_string) settings.setValue('settings/test1', test_string) settings.setValue('settings/test2', test_string_with_spaces)
Офлайн
Код сохранения чую виноват. Т.е. Я считываю настройки, меняю их, затем записываю в файл.
cfgparser = configparser.ConfigParser() cfgparser.read_file(open(PATH)) settings = cfgparser ..... Тут обработка настроек settings .write(open(PATH, "w")) <-- а это сохранение. cfgparser сохраняет неправильно видимо, может доп. параметры нужны.
Отредактировано ValeriyB (Апрель 13, 2012 18:26:06)
Офлайн
А при чем тут ConfigParser, если используется QSettings? Если QSettings был правильно создан, с именем файла и параметром QtCore.QSettings.IniFormat (см. код в предыдущем посте), то настройки сохранятся в файл test.ini после вызова деструктора QSettings. Также можно вызвать QSettings.sync() для досрочной записи результатов.
Отредактировано reclosedev (Апрель 13, 2012 19:06:55)
Офлайн
Отказался от использования конфиг парсера - все Ok.
Офлайн
Возник вопрос.
Я загружаю настройки:
settings = QtCore.QSettings("test.ini", QtCore.QSettings.IniFormat) ...... редактирую их ......
Офлайн
Хм, похоже в QSettings такое не предусмотрено. Но можно написать самому:
def copy_settings_to_file(settings, filename): new_settings = QtCore.QSettings(filename, QtCore.QSettings.IniFormat) for key in settings.allKeys(): new_settings.setValue(key, settings.value(key)) new_settings.sync() copy_settings_to_file(settings, 'test2.ini')
Офлайн
Хороший вариант, спасибо.
Офлайн
Чтобы не плодить похожие темы опишу еще одну проблему с Qsettings тут.
Файл настроек:
[test1] test1Key1="..." test1Key2="..." test1Key3="..." [test2] test2Key1="..." test2Key2="..." test2Key3="..." [test3] test3Key1="..." test3Key2="..." test3Key3="..."
for group in settings.childGroups(): settings.beginGroup(group) for key in settings.childKeys(): print(group + " : " + key)
test1 : test1Key1 test1 : test1Key2 test1 : test1Key3 test2 : test2Key1 test2 : test2Key2 test2 : test2Key3 test3 : test3Key1 test3 : test3Key2 test3 : test3Key3
test1 : test1Key1 test1 : test1Key2 test1 : test1Key3
Офлайн
ValeriyBНужно добавить settings.endGroup()
Что я делаю не так?
for group in settings.childGroups(): settings.beginGroup(group) for key in settings.childKeys(): print(group + " : " + key) settings.endGroup()
Офлайн