Очистка значений поля ввода при ошибке tkinter - PullRequest
0 голосов
/ 25 мая 2018

Я пытаюсь заставить 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)

Пожалуйста, дайте мне знать, если я смогу что-то уточнить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...