2017-02-02 16 views
0

Я сделал простое графическое приложение с tkinter и configparser, чтобы сохранить значения в моих полях ввода/текста.configparser в Tkinter - создать новый файл ini с идентификатором?

Но мне нужна помощь с чем-то. Я хочу, чтобы pogram присваивал новый ini-файл каждый раз, когда пользователь сохраняет входной сигнал от кнопки и дает идентификатор идентификатора от 1 до бесконечного

Таким образом, пользователь заполняет все записи и нажимает кнопку сохранения информации. Затем gui должен генерировать новый inifile (1).

def saveConfig(): 
    filename = "config.ini" 
    file = open(filename, 'w') 
    Config = configparser.ConfigParser() 
    Config.add_section('ORDERDATA') 
    Config.set("ORDERDATA", "REKVIRENT", e1.get()) 
    Config.set("ORDERDATA", "MODTAGER", e2.get()) 
    Config.set("ORDERDATA", "PATIENTFORNAVN", e3.get()) 
    Config.set("ORDERDATA", "PATIENTEFTERNAVN", e4.get()) 
    Config.set("ORDERDATA", "CPR", e7.get()) 
    Config.set("ORDERDATA", "DOKUMENTATIONSDATO", e5.get()) 
    Config.set("ORDERDATA", "ØNSKET UNDERSØGELSE", e6.get()) 
    Config.set("ORDERDATA", "ANAMNESE", t1.get('1.0', END)) 
    Config.set("ORDERDATA", "INDIKATION", t2.get('1.0', END)) 
    Config.write(file) 
    file.close() 

ответ

0

Если вы хотите, чтобы ваша программа, чтобы сохранить все файлы конфигурации с порядковыми номерами, вы можете сделать следующее:

# Python 2.7 
import os 
import ConfigParser as cp 
import Tkinter as tk 

def saveConfig(): 
    config = cp.ConfigParser() 
    config.add_section("ORDERDATA") 
    config.set("ORDERDATA", "REKVIRENT", e1.get()) 
    # Set all your settings here 
    # Using os.listdir(), you can get the files in a folder in a list 
    list_files = os.listdir(os.getcwd()) 
    # You can then convert the names of the files into integers for all 
    # .ini files 
    list_numbers = [int(x[:-4]) for x in list_files if x.endswith(".ini")] 
    # If the length of this new list is 0, max will throw a ValueError 
    if len(list_numbers) != 0: 
     # Calculate the new file number by adding one to the highest found number 
     new_file_num = max(list_numbers) + 1 
    # To prevent the ValueError, set the number to 1 if no files are present 
    else: 
     new_file_num = 1 
    # Derive the name of the file here 
    new_file_name = str(new_file_num) + ".ini" 
    # Open the file and write to it 
    with open(new_file_name, "w") as file_obj: 
     config.write(file_obj) 


root = tk.Tk() 
e1 = tk.Entry(root) 
button = tk.Button(root, text="Click me!", command=saveConfig) 
e1.pack() 
button.pack() 
root.mainloop() 

Для Python 3, вы только должны изменить импорт. Протестировано и работает с использованием Python 2.7 на Ubuntu.

+0

Эй, RedFantom, Большое вам спасибо! это получилось здорово! :) Вы также теперь можете отображать счетчик ini-файлов i GUI? –

+0

Добро пожаловать! ;) Вы можете использовать 'tk.StringVar()', связанный с 'Label', с опцией' textvariable' при создании «Label». Например: var = tk.StringVar() ',' lbl = tk.Label (root, textvariable = var) ',' var.set (str (number)) '. «Ярлык» автоматически обновляется в 'mainloop'. – RedFantom

+0

@MartinLed Если это ответит на ваш вопрос, не могли бы вы принять его в качестве ответа? Спасибо :) . – RedFantom