Python Tkinter入门get()

时间:2016-02-26 22:22:40

标签: python tkinter tkinter-entry

我正在尝试使用Tkinter的Entry小部件。我不能让它做一些非常基本的事情:返回输入的值。
有谁知道为什么这么简单的脚本不会返回任何东西?我尝试了很多种组合,并研究了不同的想法 此脚本运行但不打印条目:

from Tkinter import *
root = Tk()
E1 = Entry(root)
E1.pack()
entry = E1.get()
root.mainloop()
print "Entered text:", entry

似乎很简单。

修改 如果其他人遇到这个问题并且不理解,那么最终为我工作的是什么。我在输入窗口添加了一个按钮。按钮的命令关闭窗口并执行get()函数:

from Tkinter import *
def close_window():
    global entry
    entry = E.get()
    root.destroy()

root = Tk()
E = tk.Entry(root)
E.pack(anchor = CENTER)
B = Button(root, text = "OK", command = close_window)
B.pack(anchor = S)
root.mainloop()

并且返回了所需的值。

2 个答案:

答案 0 :(得分:3)

您的第一个问题是,getentry = E1.get()的调用甚至在您的程序启动之前就已发生,因此entry显然会指向一些空字符串。

最终的第二个问题是,无论如何只有在主循环结束后才能打印文本,即关闭tkinter应用程序。

如果要在程序运行时打印Entry窗口小部件的内容,则需要安排回调。例如,您可以按下<Return>键来按下

import Tkinter as tk


def on_change(e):
    print e.widget.get()

root = tk.Tk()

e = tk.Entry(root)
e.pack()    
# Calling on_change when you press the return key
e.bind("<Return>", on_change)  

root.mainloop()

答案 1 :(得分:1)

from tkinter import *
import tkinter as tk
root =tk.Tk()
mystring =tk.StringVar(root)
def getvalue():
    print(mystring.get())
e1 = Entry(root,textvariable = mystring,width=100,fg="blue",bd=3,selectbackground='violet').pack()
button1 = tk.Button(root, 
                text='Submit', 
                fg='White', 
                bg= 'dark green',height = 1, width = 10,command=getvalue).pack()

root.mainloop()