unable to pass information to callback function
我使用的是tkinter、python 2.7,并且是GUI编程的新手。我想给按钮中的回调函数传递一个字符串。我已经尝试了functools和lambda函数的部分。到目前为止还没有运气。所以我一定是做错了什么。
1 2 3 4 5 6 7 8 9 10 | def fetch_urls(name): print name root=Tk() aname=StringVar() E1 = Entry(root, bd =5,textvariable=aname,justify=CENTER,width=20) E1.grid(row=0,column=1,columnspan=3) fetchbutton=Button(root,text ="FETCH",command =fetch_urls) fetchbutton.grid(row=7,column=0) |
我基本上想要的是用一个名称(即条目小部件e1中的文本)将字符串发送到函数fetch_URL。我尝试过以下方法但没有成功
1)使用λ
1 2 3 | anime=aname.get() lambdafetch=lambda: fetch_urls(anime) fetchbutton=Button(root,text ="FETCH",command =lambdafetch) |
2)使用functools的分部
1 2 3 | anime=aname.get() parfetch=partial(fetch_urls,anime) fetchbutton=Button(root,text ="FETCH",command =parfetch) |
在这两种情况下,字符串都不会传递给函数。我想知道我做错了什么,以及如何让它起作用。
1 2 3 | def fetch(): fetch_urls(aname.get()) fetchbutton=Button(root,text ="FETCH",command =fetch) |
这是可行的(在发布问题15分钟后得到了这个想法)。但这肯定不是唯一的办法吗?
问题是,对于
对于
1 2 3 4 | def fetch_urls(aStringVar): print aStringVar.get() parfetch = partial(fetch_urls, aname) |
对于
1 | lambdafetch = lambda: fetch_urls(aname.get()) |
但我倾向于不使用
1 | lambdafetch = lambda s=aname: fetch_urls(s.get()) |