我是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)
答案 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()
方法。