Python – обновлять конфигурационный файл между модулями

У меня есть ужасные сомнения относительно подхода к файловому файлу python.

Я создаю программу с графическим интерфейсом (PyQt). Программа загружает некоторые параметры из файла .cfg с помощью модуля configparser. И пользователь может редактировать эти параметры из графического интерфейса пользователя с помощью виджета пользовательских настроек. Когда виджет настроек закрыт, файл .cfg сохраняется, но я не знаю, как обновить остальную часть программы, используя обновленные значения параметров.

Я попытаюсь объяснить на примере:

  1. Я запускаю программу. Он создает ConfigParser () с именем config и read settings.cfg .
  2. Программа извлекает значение параметра « clock_speed » (предположим, что оно 5 ) из config и устанавливает clkSpd = 5 .
  3. Я нажимаю Edit -> Preferences и меняю тактовую частоту с помощью QSpinBox до 8 .
  4. Я закрываю зависание настроек , settings.cfg сохраняется, значение опции « clock_speed » теперь равно 8 .
  5. НО в своем модуле clkSpd все равно 5 .

Я знаю, что могу просто загружать настройки, редактировать их, сохранять их и перезагружать все настройки каждый раз, когда я закрываю окно «Настройки». Это просто, но не очень красиво.

Существует ли классический и эффективный подход для файлов конфигурации в режиме чтения / записи?

Спасибо заранее.

2 Solutions collect form web for “Python – обновлять конфигурационный файл между модулями”

Попробуйте добавить обратный вызов в свой виджет настроек, чтобы при закрытии любые измененные значения распространялись обратно на остальную часть программы. События или обработка сигналов, подобные этому обзору, могут работать для вас.

Вам также может потребоваться изменить порядок хранения этих переменных, чтобы иметь возможность изменять их из обратного вызова. Это может быть хорошим приложением для глобалов, или вы можете проверить этот вопрос SO, чтобы узнать, могут ли переменные передаваться в ваши обратные вызовы для обновления.

Обновление состояния вашего приложения не может быть тривиальной вещью, если вы находитесь где-то посередине. Просто пример:

  1. Ваше приложение = автомобиль
  2. Вы запускаете свое приложение = вы начинаете свой автомобиль
  3. Вы задаете в настройках переменную type_tyre для Winter
  4. В вашем рабочем приложении все еще есть type_tyre равно Sommer
  5. Вы пытаетесь сменить шины во время движения по шоссе
  6. авария

И это при смене шин перед запуском машины может быть тривиальной и безопасной задачей.

Таким образом, вам просто нужно написать процедуру, которая регулирует состояние вашего приложения в соответствии с изменением предпочтений, но это в целом отличается от инициализации приложения и зависит от текущего состояния приложения. Но иначе просто напишите такую ​​рутину и назовите ее.

  • Очистить несколько URL-адресов, используя QWebPage
  • QWizard: изменение высоты / размеров поля заголовка
  • Как показать Test_Question (String) на страницу? (PyQt / Python)
  • matplotlib и показатель прозрачности
  • Ошибка потока в Python & PyQt
  • Построение больших массивов в pyqtgraph
  • как код a Кнопка изображения в PyQt?
  • PyQt5: Ошибка загрузки DLL: указанный модуль не найден
  • Python - лучший язык программирования в мире.