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-在输入框中输入后未返回用户输入的主要内容,如果未能解决你的问题,请参考以下文章

tkinter基础-输入框文本框

Tkinter 文本输入的返回值,关闭 GUI

暂停执行,直到从 tkinter 窗口收到用户输入

如何将腌制数据保存到/从 tkinter 输入框重新加载?

Python怎么将tkinter 输入框中输入的字符串内容转换为 整数类型?

easyui中combobox 验证输入的值必须为选项框中的数据