Bonjour à toutes et à tous!

Je cherche actuellement à apprendre un peu le développement de GUI en python, je me suis donc naturellement tourner vers le module Tkinter pour commencer.
Dans une application que je cherche à développer je voudrais qu'une seconde fenêtre s'ouvre avec un nombre de champ (de frame pour faire simple) variable et préalablement renseigner par l'utilisateur.
Pour cela je voulais ranger dans des listes les widgets mais je n'arrive pas à accéder au méthode de ces dernier depuis la liste, notamment au méthode de placement (ici .grid() ) :/ je vous joint le code, naturellement beaucoup d'optimisation peuvent être faite, c'est un premier essais, mais la parties qui nous intéresse ici concerne la fonction generation_windows().

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
 
 
import tkinter as tk
from tkinter.filedialog import askdirectory
 
screen_x = 1600
screen_y = 1440
window_x = 500
window_y = 110
 
 
def path_selection():
    global path, entry_save
    entry_save.delete(0,last=1000)
    pathhhh = askdirectory()
    path.set(pathhhh)
 
def generation_windows(saving_name, saving_path, number):
    generation_f2 = tk.Tk()
 
    generation_f2.title('Génération des sirènes')
    generation_f2.resizable(width=0, height=0)
    generation_f2.geometry('600x{}+{}+{}'.format(120*number,screen_x // 2 - window_x//2, screen_y // 2 - window_y // 2))
    generation_f2.positionfrom('user')
 
    label_name_sirene = [[] for i in range(number)]
    entry_name_sirene = [[] for i in range(number)]
    label_direction = [[] for i in range(number)]
    label_number = [[] for i in range(number)]
    entry_direction = [[[] for j in range(5)] for i in range(number)]
    entry_number = [[[] for j in range(5)] for i in range(number)]
 
    for i in range(number):
        lbl1 = tk.Label(generation_f2, text='Nom: \t')
        label_name_sirene[i].append(lbl1)
        label_name_sirene[i].grid(row=3*i, column=0)
 
        entry1 = tk.Entry(generation_f2, width=35, validate='all')
        entry_name_sirene[i].append(entry1)
        entry_name_sirene[i].grid(row=3*i, column=1, columnspan=5)
 
        label_direction[i].append(tk.Label(generation_f2, text='Direction: \t'))
        label_direction[i].grid(row=3*i+1, column=0)
 
        label_number[i].append(tk.Label(generation_f2, text='Nombre: \t'))
        label_number[i].grid(row=2+3*i, column=0)
 
        for j in range(5):
            entry_direction[i][j].append(tk.Entry(generation_f2, width = 4, validate='all'))
            entry_direction[i][j].grid(row=1+3*i, column=1+j)
 
            entry_number[i][j].append(tk.Entry(generation_f2, width = 4, validate='all'))
            entry_number[i][j].grid(row=2+3*i, column=1+j)
 
    generation_f2.mainloop()
 
 
 
projet_f1 = tk.Tk()
path = tk.StringVar()
name = tk.StringVar()
 
projet_f1.title('Sirène plot')
projet_f1.resizable(width=0, height=0)
projet_f1.geometry('{}x{}+{}+{}'.format(window_x,window_y,screen_x // 2 - window_x//2, screen_y // 2 - window_y // 2))
projet_f1.positionfrom('user')
 
label_name = tk.Label(projet_f1, text = "Nom du projet: \t")
label_name.grid(row = 0, column = 0)
entry_name= tk.Entry(projet_f1, bg = '#d1d1e0', width = 43, validate = 'all', textvariable=name)
entry_name.grid(row = 0, column = 1, columnspan = 2)
 
label_save = tk.Label(projet_f1, text = 'Chemin de sauvegarde: \t')
label_save.grid(row=1, column=0)
entry_save = tk.Entry(projet_f1, bg = '#d1d1e0', width = 35, validate = 'all', textvariable=path)
entry_save.grid(row=1, column=1)
button_save = tk.Button(projet_f1, text = 'path', command = path_selection)
button_save.grid(row=1, column=2)
 
label_nb_sirene = tk.Label(projet_f1, text= 'Nb de sirène \t')
label_nb_sirene.grid(row=2, column = 0)
spinbox_nb_sirene = tk.Spinbox(projet_f1, from_= 1, to = 6)
spinbox_nb_sirene.grid(row=2, column = 1, columnspan=2)
 
button_ok = tk.Button(projet_f1, text = 'OK', command= lambda: generation_windows(name.get(), path.get(), int(spinbox_nb_sirene.get())))
button_ok.grid(row=4, column=0, columnspan=3)
 
projet_f1.mainloop()
Je vous remercie par avance du temps que vous aller me consacrer!