Tkinter-在输入框中输入后未返回用户输入
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tkinter-在输入框中输入后未返回用户输入相关的知识,希望对你有一定的参考价值。
下午好,
这里是Noob编码器。
我搜寻了这些论坛并发现了一些类似的问题,但我一直在努力将其推论到我的特定示例中。
尽管点击“绘图”按钮后,我无法从每个输入框中获取输入值以进行打印,但我仍可以填充输入框。如果输入任何内容,则输出如下:
.!frame.!entry
.!frame2.!entry
.!frame3.!entry
.!frame4.!entry
.!frame5.!entry
.!frame6.!entry
到目前为止是我的代码:
import tkinter as tk
fields = ('Input panel major length',
'Input panel intermediate length', 'Input drillhole average length',
'Input Conversion rate', 'Geostats Interpolation Parameters: Major (Z)',
'Geostats Interpolation Parameters: Intermediate (Y)')
def calcs(values):
for value in values:
print(values[value])
def makelines(root, fields):
entries = {}
for field in fields:
row = tk.Frame(root)
lab = tk.Label(row, width=50, text=field+": ", anchor='w')
ent = tk.Entry(row)
row.pack(side=tk.TOP,
fill=tk.X,
padx=5,
pady=5)
lab.pack(side=tk.LEFT)
ent.pack(side=tk.RIGHT,
expand=tk.YES,
fill=tk.X)
entries[field] = ent
return entries
if __name__ == '__main__':
root = tk.Tk()
root.title('Plot')
root.geometry('800x400')
ents = makelines(root, fields)
b2 = tk.Button(root, text='Quit', command=root.quit)
b2.pack(side=tk.RIGHT, padx=5, pady=5)
b1 = tk.Button(root, text='Plot',
command=(lambda e=ents: calcs(e)))
b1.pack(side=tk.LEFT, padx=5, pady=5)
root.mainloop()
答案
[您正在使用包含由字符串索引的calcs
小部件的字典来调用Entry
。因此,当您这样做时
for value in values:
print(values[value])
您正在打印窗口小部件本身,而不是它们的内容。
相反,请尝试使用get()
方法:
for value in values:
print(values[value].get())
您也可以使用字典的values()
方法:
def calcs(wdict):
for w in wdict.values():
print(w.get())
以上是关于Tkinter-在输入框中输入后未返回用户输入的主要内容,如果未能解决你的问题,请参考以下文章