无法从条目python tkinter获取更新的值

时间:2014-07-08 16:57:32

标签: python function get tkinter

我是python GUI的新手。我试图从'abc'输入框中获取值。但是,它只能获取默认值(现在为58)。如果我更改了值,则无法获取更改的(或当前)值。您的意见将受到高度赞赏。

fields = ('abc', 'def', 'ghi','jkl')
def outputdata(master, fields):
    entries = {}
    helpLf = LabelFrame(master, text="2. Bill of Materials:")
    helpLf.grid(row=0, column=9, columnspan=5, rowspan=8, \
            sticky='NS', padx=5, pady=5)
for n in range(len(fields)):
    lab = Label(helpLf, text= fields[n]+": ", anchor='w')
    lab.grid(row=n, column=5, padx=5, pady=5)
    ent = Entry(helpLf, bg="yellow")
    ent.insert(0,"58")
    ent.grid(row=n, column=7, padx=5, pady=5)
    entries[fields[n]] = ent
return entries

if __name__ == '__main__':
master = Tk()
ents = outputdata(master, fields)
t = outputdata(master, fields)['abc'].get()
Button(master, text='Show me the BoM', command = (lambda e=ents:clamp_number(e))).grid(row=10, column=0, sticky=W, pady=4)

1 个答案:

答案 0 :(得分:1)

在不知道clamp_number是什么的情况下,我无法评论您的代码。 但是,如果您想知道如何获取Entry小部件的“当前”值,则必须使用StringVar变量。

>>> from tkinter import Tk, StringVar, Entry
>>> root = Tk()
>>> sv = StringVar(root)
>>> entry = Entry(root, textvariable=sv)
>>> sv.get()
''
>>> entry.insert('insert', 'hello')
>>> sv.get()
'hello'
>>> 

这里发生的是,您将Entry窗口小部件绑定到StringVar。您可以根据需要调用StringVar的{​​{1}}和get()方法。