私はTkinter、python 2.7を使用しており、GUIプログラミングは初めてです。ボタンのコールバック関数に文字列を渡したいのですが、functoolsからの部分関数とラムダ関数の両方を試しました。これまでのところ運がありません。だから私は何か間違ったことをしているに違いない。
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_urlsに送信することです。私は次のことを試みましたが成功しませんでした
1)ラムダを使用する
anime=aname.get()
lambdafetch=lambda: fetch_urls(anime)
fetchbutton=Button(root,text ="FETCH",command =lambdafetch)
2)functoolsから部分的に使用する
anime=aname.get()
parfetch=partial(fetch_urls,anime)
fetchbutton=Button(root,text ="FETCH",command =parfetch)
どちらの場合も、文字列は関数に渡されません。私が間違っていることとそれを機能させる方法を知りたいです。
def fetch():
fetch_urls(aname.get())
fetchbutton=Button(root,text ="FETCH",command =fetch)
これは機能します(質問を投稿してから15分後にアイデアを得ました)。しかし、確かにこれが唯一の方法ではありませんか?