Я пытаюсь заставить tkinter очищать поле ввода при каждом нажатии кнопки
Вот как я хочу, чтобы моя программа работала.Всякий раз, когда пользователь выбирает статистическое распределение, справа появляется ряд переменных полей ввода (количество переменных полей ввода зависит от статистического распределения. Я хотел бы, чтобы пользователь мог изменять значения полей ввода несколько раз.Затем переменные передаются в вычисление позже в скрипте.
В настоящее время поле ввода сохраняет и возвращает только первое значение, введенное пользователем. Поэтому я хочу очищать поле ввода каждый раз перед вызовом окончательного вычисленияЯ знаю, что мне нужно использовать команду variablename.delete (0, END), но у меня возникли проблемы с ее реализацией. Я могу успешно очистить поле ввода, но по какой-то причине всякий раз, когда я вставляю этот синтаксис в кодмой синтаксис разметки перестает работать.
Ниже приведен мой текущий код. Я включил 2 отдельных блока кода. Первый показывает мою текущую попытку исправить проблему с помощью метода variablename.delete (0, END). Метод удаления работает нормально, но fили по какой-то причине
import tkinter as tk
from tkinter.ttk import *
from scipy.stats import *
import numpy as np
import pandas as pd
master = tk.Tk()
master.title("Gas Calculator")
v = tk.IntVar()
combo = Combobox(master)
#possible entry boxes depending on the statistic distribution chosen
f1 = tk.Entry(master)
f2 = tk.Entry(master)
f3 = tk.Entry(master)
f4 = tk.Entry(master)
f5 = tk.Entry(master)
f6 = tk.Entry(master)
f7 = tk.Entry(master)
f8 = tk.Entry(master)
f1.grid(row=3, column=5)
f2.grid(row=3, column=6)
f3.grid(row=3, column=7)
f4.grid(row=3, column=8)
f5.grid(row=3, column=9)
f6.grid(row=3, column=10)
#calls the users distribution selection and then is supposed to format the boxes accordinly
def callbackARS(eventObject):
ARDist=(comboARS.get())
try:
if ARDist == "Truncated Normal":
f1.delete(0,tk.END)
f1 = tk.Entry(master)
f2 = tk.Entry(master)
f3 = tk.Entry(master)
f4 = tk.Entry(master)
f5 = tk.Entry(master,state='disabled')
f6 = tk.Entry(master,state='disabled')
f1.grid(row=3, column=5)
f2.grid(row=3, column=6)
f3.grid(row=3, column=7)
f4.grid(row=3, column=8)
f5.grid(row=3, column=9)
f6.grid(row=3, column=10)
tk.Label(master, text="Mean Value", padx=20, width=10, bg = "light blue").grid(row=2,column=5)
tk.Label(master, text="Standard Deviation", padx=20, width=10, bg = "light blue").grid(row=2,column=6)
tk.Label(master, text="Low Limit", padx=20, width=10, bg = "light blue").grid(row=2,column=7)
tk.Label(master, text="High Limit", padx=20, width=10, bg = "light blue").grid(row=2,column=8)
tk.Label(master, text="", padx=20, width=10).grid(row=2,column=9)
tk.Label(master, text="", padx=20, width=10).grid(row=2,column=10)
return test
return test2
except:
pass
#function to allow users to select what distribution they want
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)
#testing function to check and make sure the input boxes are being cleared. needs to be used in cuncjuntion with the button coded below.
def testing():
test1 = float(f1.get())
test2 = float(f2.get())
testsum = test1 * test2
print (testsum)
tk.Button(master, text='Calculate', command=testing, width=20).grid(row=35, column=1, sticky=tk.W, pady=4)
Пожалуйста, дайте мне знать, если я смогу что-то уточнить.