この質問に対する答えを長い間探していましたが、まだ何も見つかりませんでした。Tkinter を使用して GUI を作成しています。異なるウィジェットから情報を受け取ることを除いて、ほとんど同じことを行う 2 つのボタンがあります。1 つのボタンは Entry ウィジェット用で、もう 1 つは Listbox ウィジェット用です。これら 2 つのボタンのコールバック関数は長い (約 200 行) ため、ボタンごとに個別の関数を用意したくありません。どのボタンがクリックされたかを確認するために、このコールバック関数の先頭に if ステートメントがあり、コードは対応する値を取得します。しかし、次のコードがこれを行う正しい方法を示しているかどうかはわかりません。明らかに私のプログラムでは完全に機能しないからです。コールバック関数は初回のみ機能します。他のボタンをクリックすると、エラーが発生します。これは、アイデアを説明するために作成したサンプル コードです。ボタンがクリックされたかどうかを確認したいことに注意してください。「値」が存在するかどうかは確認したくありません。助けてください。
from Tkinter import *
root = Tk()
def DoSomething():
# is this the right way to check which button is clicked?
if button1:
value = user_input.get()
elif button2:
value = choice.get(choice.curselection()[0])
# then more codes that take 'value' as input.
button1 = Button(master,text='Search',command=DoSomething)
button1.pack()
button2 = Button(master,text='Search',command=DoSomething)
button2.pack()
user_input = Entry(master)
user_input.pack()
choice = Listbox(master,selectmode=SINGLE)
choice.pack()
#assume there are items in the listbox, I skipped this portion
root.mainloop()