如何在tkinter中存储Entry控件的循环值?

2 投票
1 回答
3406 浏览
提问于 2025-04-18 01:43

这个问题应该非常简单。我正在制作一个图形用户界面(GUI),里面有多个输入框……大约有30个,都是一列的。与其一个一个地创建每个输入框,使用循环来生成这些输入框似乎更好。不过,我发现从输入框中获取值并把它们转换成浮点数(小数)非常困难。这是我目前的代码……任何帮助都将非常感激。

class Application(Frame):

def __init__(root,master):
    Frame.__init__(root,master)
    root.grid()
    root.create_widgets()



def calcCR(root):        
    d1 = root.enter.get()
    d1 = float(d1)
    #root.answer.delete(0.0,END)
    a = 'The C/R Alpha is! %lf \n' % (d1)
    root.answer.insert(0.0, a)


def create_widgets(root):
    ### Generate Element List ###
    for i in range(len(elem)):
        Label(root, text=elem[i]).grid(row=i+1, column=0)

    ### Generate entry boxes for element wt% ### 
    for i in range(len(elem)):            
        enter = Entry(root, width = 8)
        enter.grid(row = i+1,column=1)
        enter.insert(0,'0.00')

    root.button = Button(root, text = 'Calculate C/R', command = root.calcCR)
    root.button.grid(row=11, column=2, sticky = W, padx = 10)

    root.answer = Text(root, width = 50, height = 12.5, wrap = WORD)
    root.answer.grid(row=1, column=2, rowspan = 10, sticky = W, padx = 10)    


root = Tk()
root.title('C/R Calculator')
app = Application(root)
root.mainloop()

1 个回答

3

Entry的实例放到一个列表里。

from tkinter import Tk, Frame, Label, Entry, Button

class App(Frame):
    def __init__(root, master):
        Frame.__init__(root, master)
        root.grid()
        root.create_widgets()

    def get_values(root):
        return [float(entry.get()) for entry in root.entries]

    def calc_CR(root):
        answer = sum(root.get_values()) #Replace with your own calculations
        root.answer.config(text=str(answer))

    def create_widgets(root):
        root.entries = []
        for i in range(20):
            label = Label(root, text=str(i))
            label.grid(row=i, column=0)

            entry = Entry(root, width=8)
            entry.grid(row=i, column=1)
            entry.insert(0, '0.00')
            root.entries.append(entry)

        root.calc_button = Button(root, text='Calculate C/R', command=root.calc_CR)
        root.calc_button.grid(row=20, column=0)

        root.answer = Label(root, text='0')
        root.answer.grid(row=20, column=1)

    def run(root):
        root.mainloop()



root = Tk()
root.title('C/R Calculator')

app = App(root)
app.run()

撰写回答