Перебор переменных из списка в цикле

Rodger-1

Новичок
Пользователь
Июн 14, 2024
3
0
1
Добрый день!
В питоне новичок, и никак не могу найти решение простой, на первый взгляд задачи.
Есть форма, есть файл *.ini. В файле 4 параметра. При запуске программы, параметры должны вычитываться из файла и заносится в соответствующие поля формы.
Хотел сделать это в цикле, но не знаю как можно перебирать поля формы с аргументом .insert. Подскажите пожалуйста:

Python:
import tkinter as tk
from tkinter import *
from tkinter import messagebox
from tkinter import filedialog
import configparser

config = configparser.ConfigParser()

def softsourse(event):
    soft = filedialog.askopenfilename()
    Soft_tf.insert(0,soft)

def filesourse(event):
    file = filedialog.askopenfilename()
    File_tf.insert(0,file)

def start():
    # Создание конфигурации
    try:
        config.add_section('Settings')
    except configparser.DuplicateSectionError:
         pass
    Ven = Vendor.get()
    config.set('Settings', 'Vendor', Ven)
    Prod = Product.get()
    config.set('Settings', 'Product', Prod)
    Sof = Soft.get()
    config.set('Settings', 'Soft', Sof)
    Fil = File.get()
    config.set('Settings', 'File', Fil)
    # Сохранение конфигурации в файл
    with open('Config.ini', 'w') as config_file:
         config.write(config_file)

window = Tk()
window.title("Start-Stop")
window.geometry('400x300')

frame = Frame(
   window,
   padx = 10,
   pady = 10
)
frame.pack(expand=True)

Vendor = Entry(
   frame,
)
Vendor.grid(row=1, column=2)

Product = Entry(
   frame,
)
Product.grid(row=2, column=2, pady=5)

Soft = Entry(
   frame,
)
Soft.grid(row=3, column=2, pady=5)
Soft.bind("<1>", softsourse)

File = Entry(
   frame,
)
File.grid(row=4, column=2, pady=5)
File.bind("<1>", filesourse)

Start_btn = Button(
   frame,
   text='Start',
   command = start
)
Start_btn.grid(row=5, column=3)
config.read('config.ini')
keys = ["Vendor", "Product", "Soft", "File"]
for key in keys:
    try:
        value = config.get("Settings", key)
        key.insert(0,value)
        #print(f"{key}:", value)
    except configparser.Error:#NoOptionError:
        print(f"No option '{key}' in section 'Settings'")
 
Последнее редактирование:

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 622
469
83
у вас в списке строки, а не формы

можно так
Python:
...

keys = ["Vendor", "Product", "Soft", "File"]
forms = [Vendor, Product, Soft, File]
for i in range(0, len(keys)):
    try:
        value = config.get("Settings", keys[i])
        forms[i].insert(0,value)
        #print(f"{key}:", value)
    except configparser.Error:#NoOptionError:
        print(f"No option '{key}' in section 'Settings'")

...
 

Rodger-1

Новичок
Пользователь
Июн 14, 2024
3
0
1
у вас в списке строки, а не формы

можно так
Python:
...

keys = ["Vendor", "Product", "Soft", "File"]
forms = [Vendor, Product, Soft, File]
for i in range(0, len(keys)):
    try:
        value = config.get("Settings", keys[i])
        forms[i].insert(0,value)
        #print(f"{key}:", value)
    except configparser.Error:#NoOptionError:
        print(f"No option '{key}' in section 'Settings'")

...
Спасибо! То что нужно. Не додумался, что можно два списка использовать. СПАСИБО!!!
 

Форум IT Специалистов