Python Tkinter 入口 get()

Posted

技术标签:

【中文标题】Python Tkinter 入口 get()【英文标题】:Python Tkinter Entry get() 【发布时间】:2016-06-10 07:48:32 【问题描述】:

我正在尝试使用 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()

然后返回所需的值。

【问题讨论】:

get() 在输入任何文本之前被调用。所以entry 是一个空字符串(在最后一行将entry 更改为repr(entry),你会看到)。如果你想在输入一些文本时调用get()(你可能会这样做),你需要将get()绑定到一个事件。 print 不会发生,因为它前面有一个无限循环(root.mainloop())。 【参考方案1】:

您的第一个问题是在entry = E1.get() 中对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()

【讨论】:

谢谢,这帮助我解决了问题。由于字符串为空,您不能将 e.get() 放入程序中,这似乎是一个 catch-22,因为程序已被破坏,所以将其放在外面会破坏脚本。意识到这一点,我添加了一个包含 e.get() 的命令来关闭入口窗口。我将使用完整的工作代码编辑我的问题。【参考方案2】:
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()

【讨论】:

非常感谢,为此郁闷了一天

以上是关于Python Tkinter 入口 get()的主要内容,如果未能解决你的问题,请参考以下文章

在 Tkinter Python 中的条目小部件内设置默认插入符号位置

python-模块-tkinter

python之tkinter使用-滚动条

python tkinter 如何获取文本框中的内容?

python语法root=Tkinter.Tk()

python [Python:Tkinter桌面开发] #python #tkinter #tk #desktop