Je suis en train de faire une interface graphique qui donne à un utilisateur une série de champs de saisie en fonction du type de distribution statistique qu'il a sélectionné. Cela sera utilisé dans un calcul ultérieur dans le script. Chaque distribution statistique nécessite un nombre différent de variables (d'où la nécessité de remplir dynamiquement un certain nombre de champs de saisie). Pour l'instant, mon code fonctionne un peu. Le problème est que si vous sélectionnez une distribution qui vous donne 5 champs de saisie, puis passez à une distribution qui n'en nécessite que 3, les 5 champs de la sélection précédente restent là. Pour ce script, une distribution normale tronquée est censée avoir 3 variables, une distribution normale est censée avoir 5 variables et une distribution discrète est censée avoir 4 variables.
Je pensais que si je créais un champ de saisie factice et que je le supprimais à la fin de l'instruction if, cela supprimerait le(s) champ(s) dont je n'ai pas besoin. Cependant, cela ne semble pas avoir fonctionné.
Voici le code que j'ai jusqu'à présent. J'ai l'impression d'être presque arrivé et de manquer quelque chose. J'apprécierais grandement tout conseil. Encore une fois, l'objectif est de remplir juste le bon nombre de champs de saisie pour chaque sélection de distribution statistique, puis de pouvoir changer cette sélection dynamiquement et que le nombre de champs de saisie change en conséquence.
import tkinter as tk
from tkinter.ttk import *
master = tk.Tk()
master.title("Calculateur de Gaz")
v = tk.IntVar()
combo = Combobox(master)
def callbackARS(eventObject):
ARDist=(comboARS.get())
if ARDist == "Normal tronquée":
a1 = tk.Entry(master)
a2 = tk.Entry(master)
a3 = tk.Entry(master)
#tentative de création d'un champ de saisie factice qui n'est pas nécessaire et de le supprimer à la fin du code
a4 = tk.Entry(master)
a1.grid(row=3, column=4)
a2.grid(row=3, column=5)
a3.grid(row=3, column=6)
a4.grid(row=3, column=7)
tk.Label(master, text="Variable", padx=20, width=10, bg = "light blue").grid(row=2,column=4)
tk.Label(master, text="Zone", padx=20, width=10, bg = "light blue").grid(row=2,column=5)
tk.Label(master, text="Épaisseur", padx=20, width=10, bg = "light blue").grid(row=2,column=6)
tk.Label(master, text="", padx=20, width=10, bg = "light blue").grid(row=2,column=7)
#tentative de création d'un champ de saisie factice qui n'est pas nécessaire et de le supprimer à la fin du code
a4.grid_remove()
if ARDist == "Normal":
b1 = tk.Entry(master)
b2 = tk.Entry(master)
b3 = tk.Entry(master)
b4 = tk.Entry(master)
b5 = tk.Entry(master)
b1.grid(row=3, column=4)
b2.grid(row=3, column=5)
b3.grid(row=3, column=6)
b4.grid(row=3, column=7)
b5.grid(row=3, column=8)
tk.Label(master, text="a", padx=20, width=10, bg = "light blue").grid(row=2,column=4)
tk.Label(master, text="Aa", padx=20, width=10, bg = "light blue").grid(row=2,column=5)
tk.Label(master, text="aaa", padx=20, width=10, bg = "light blue").grid(row=2,column=6)
tk.Label(master, text="aaaa", padx=20, width=10, bg = "light blue").grid(row=2,column=7)
if ARDist == "Discret":
a1 = tk.Entry(master)
a2 = tk.Entry(master)
a3 = tk.Entry(master)
a4 = tk.Entry(master)
a1.grid(row=3, column=4)
a2.grid(row=3, column=5)
a3.grid(row=3, column=6)
a4.grid(row=3, column=7)
#Sélection de la distribution
comboARS = Combobox(master)
comboARS['values']= ("Normal tronquée", "Normale", "Discret")
comboARS.current(0) #définir l'élément sélectionné
comboARS.grid(row=3, column=3)
comboARS.bind("<>", callbackARS)