Фиксация нескольких изменений файла конфигурации при нажатии кнопки с помощью tkinter и configparser - PullRequest
0 голосов
/ 24 июня 2019

У меня есть программа, которая имеет меню, построенное с помощью tkinter.В меню есть несколько кнопок, и при нажатии пользователь может выбрать определенные места для файлов.Вот этот код:

def open_vend_direct():
    vend_directory = filedialog.askopenfilename(
        initialdir="/", title="Select file", filetypes=(("Excel Files (CSV)", "*.csv"), ("all files", "*.*")))
    parser = ConfigParser()
    parser.read('config.ini')
    parser.set('VendorList','List_Location',vend_directory)

def open_attach_direct():
    vend_attach_direct = filedialog.askdirectory()
    parser = ConfigParser()
    parser.read('config.ini')
    parser.set('VendorFile','file_Location',vend_attach_direct)

def open_log_direct():
    log_locate = filedialog.askdirectory()
    parser = ConfigParser()
    parser.read('config.ini')
    parser.set('LogFolder','log_location',log_locate)

У меня есть еще одна кнопка, которая должна применить все изменения.Для этой функции я попробовал это, но это не работает:

def apply_option():
    parser = ConfigParser()
    parser.read('config.ini')
    with open('config.ini', 'w') as f:
        parser.write(f)

В трех функциях кнопок, которые у меня были, это было:

with open('config.ini', 'w') as f:
        parser.write(f)

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

Редактировать: у меня также есть другие параметры в меню (кнопки-флажки, на которые я хотел бы также применить изменения)

Это потому, что все они в разных функциях?

1 Ответ

1 голос
/ 25 июня 2019

Каждый раз, когда вы запускаете парсер и читаете файл, вы сбрасываете парсер в значения в вашем config.ini. Так что поставь инициализацию parser и parser read из функций в global. Тогда это должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...