Я пытаюсь создать графический интерфейс, который дает пользователю диапазон полей ввода в зависимости от того, какой тип статистического распределения они выбрали.Это будет использовано в расчете позже в скрипте.Каждое статистическое распределение требует различного количества переменных (следовательно, необходимо динамически заполнять несколько полей ввода).Прямо сейчас мой код вроде работает.Проблема заключается в том, что если вы выберете распределение, которое дает вам 5 полей ввода, а затем переключите распределение на то, которое требует только 3, то 5 полей из предыдущего выбора все еще будут там.Для этого сценария усеченное нормальное распределение должно иметь 3 переменные, нормальное распределение должно иметь 5 переменных, а дискретное распределение должно иметь 4 переменные.
Я думал, что если бы я создал фиктивное поле вводаа затем удалите его в конце оператора if, и в итоге удалите те поля, которые мне не нужны.Это, похоже, не сработало.
Ниже приведен код, который у меня есть.Я чувствую, что я почти на месте и просто что-то упустил.Буду очень признателен за любые советы.Опять же, цель состоит в том, чтобы заполнить только правильное количество полей ввода для каждого статистического распределения распределения, а затем иметь возможность динамически изменять этот выбор и соответственно изменять количество полей ввода.
import tkinter as tk
from tkinter.ttk import *
master = tk.Tk()
master.title("Gas Calculator")
v = tk.IntVar()
combo = Combobox(master)
def callbackARS(eventObject):
ARDist=(comboARS.get())
if ARDist == "Truncated Normal":
a1 = tk.Entry(master)
a2 = tk.Entry(master)
a3 = tk.Entry(master)
#attempt to create a dummy input box that isnt needed and then delete it at the end of the 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="Area", padx=20, width=10, bg = "light blue").grid(row=2,column=5)
tk.Label(master, text="Thickness", 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)
#attempt to create a dummy input box that isnt needed and then delete it at the end of the 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 == "Discrete":
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)
#Distribution selction
comboARS = Combobox(master)
comboARS['values']= ("Truncated Normal", "Normal", "Discrete")
comboARS.current(0) #set the selected item
comboARS.grid(row=3, column=3)
comboARS.bind("<<ComboboxSelected>>", callbackARS)