论坛上最近发布了一篇@Clueless_captain的问题;它是由@furas回答的。我是stackoverflow的新手,所以我不能在那个Conversation中发表评论。这是该对话的URL:(Tkinter Entry widget stays empty in larger programs (Python 2))。 furas发布的代码并不是我尝试做的,但我唯一不能做的就是找到一种方法来重用EntryWidget中给出的Input。我修改了由furas编写的代码;我的目标是在GUI终止之前打印输入。为此,我将Return键绑定到一个新的Function,这个Function应该在这个新的Function中得到Textstring,它将被进一步处理。它只会在我单击按钮以获取第二次名称时执行此操作。该代码的顺序是否已关闭?我相信这个问题与String' e.bind
'密切相关。在第十行,但我找不到问题。
最诚挚的问候,G_Lehmann
----------修改后的代码:
from Tkinter import *
def get_input(text, variable):
win = Toplevel()
win.title("Get value")
f = LabelFrame(win, text=text)
f.pack()
e = Entry(win, textvariable=variable)
e.bind("<Return>", do_more(text, variable, e))
e.pack(side="right")
#I tried e.bind here, but This had no Effect.
b = Button(win, text = "Cancel", command=win.destroy)
b.pack()
#do_more is the new Function I want to use to process the Variable 'data' further.
def do_more(text, variable, e):
data = e.get()
print data
print len(data)
print type(data)
def get_value(text, variable):
get_input(text, variable)
# --- main --
root = Tk()
root.title("Ask-name-SUB")
# global variables
var_name = StringVar()
var_address = StringVar()
b = Button(root, text="Enter your name", command=lambda: get_value("Your name:", var_name))
b.pack()
b = Button(root, text="Enter your address", command=lambda: get_value("Your address:", var_address))
b.pack()
b = Button(root, text="Cancel", command=root.destroy)
b.pack()
root.mainloop()
# --- after -- (My Edit: I disabled this as I want to bind the Variables before my GUI gets terminated)
"""
name = var_name.get()
print "Print name, its length, its type"
print name, len(name), type(name)
address = var_address.get()
print "Print address, its length, its type"
print address, len(address), type(address)
"""
答案 0 :(得分:0)
gunicorn --version
gunicorn (version 19.6.0)
需要函数名称(如bind
中所示),因此必须使用command=
为参数赋值函数。除了使用参数lambda
绑定执行函数,所以你必须接收它。
event
您也可以将 e.bind("<Return>", lambda event:do_more(variable))
分配给按钮
do_more
并对b = Button(win, text="OK", command=lambda:do_more(variable))
和Return
执行相同的操作 - 并在对变量执行某些操作后关闭窗口。
关闭窗口后,您也可以在Button
中执行相同操作,但必须使用get_value
,因为通常tkinter创建窗口并且不会等到关闭它。
所以现在你有两种可能有价值的东西 - 在win.wait_window()
或do_more
- 选择一个。两种方法都可以修改 - 即。你可以使用类并创建自己的对话窗口。
get_value