リストをループしてボタンを動的に作成しました。
AuxName = Button(GUI_1, text=List_Aux[x], font=("Arial", 10))
tk_rgb = "#%02x%02x%02x" % (0,0,0)
AuxName["fg"] = tk_rgb
tk_rgb = "#%02x%02x%02x" % (255,255,255)
AuxName["bg"] = tk_rgb
AuxName.place(x=BUTTON_LEFT_AUX1, y=BUTTON_TOP_AUX1 , height=BUTTON_HEIGTH_AUX1, width=BUTTON_WIDTH_AUX1)
AuxName["command"] = ButtonClick
各ボタンには、各ボタンが配置されている列と行である異なるAuxName値(1btn1、1btn2、1btn3など)番号があります。
私が抱えている問題はButtonClick
、クリックされているボタンの名前を関数に取得させたいということです。私が最後に試したのは:
def ButtonClick():
1btn1["text"] = "Goodbye"
しかし、pythonは構文エラーをスローします(そして開き括弧の直前を指します)。
最後にクリックしたボタン名を取得し、関数を使用してそのテキストを変更するにはどうすればよいButtonClick()
ですか?
--------------------最初の答えに編集し、ほぼ完全に機能するようになりました------------
答えてくれてありがとう、とても感謝していて、ほぼ完璧に動作します。2つの欠陥があります。1つは、コマンドButtonClickが引数なしで送信されるためにエラーがスローされることです。これは、ボタンバインドのコマンドを送信するデフォルトの方法であるため、修正方法がわかりません... 2つ目は、提供されたコードを使用した後、指定したとおりにボタンのテキストが変更されますが、ボタンは以前に定義した位置とサイズを尊重しません。
BUTTON_TOP_AUX1 = 20
BUTTON_WIDTH_AUX1 = 400
BUTTON_LEFT_AUX1 = 5
BUTTON_HEIGTH_AUX1 = 20
Buttons_Function = "DesiredFunctionOne"
BUTTON_COLUMN_AUX1 = 1
List_Size_Aux = len(List_Aux)
for x in range ( List_Size_Aux ):
AuxName = str(BUTTON_COLUMN_AUX1)+'btn'+str(x)
AuxName = Button(GUI_1, text=List_Aux[x], font=("Arial", 10))
tk_rgb = "#%02x%02x%02x" % (0,0,0)
AuxName["fg"] = tk_rgb
tk_rgb = "#%02x%02x%02x" % (255,255,255)
AuxName["bg"] = tk_rgb
AuxName.place(x=BUTTON_LEFT_AUX1, y=BUTTON_TOP_AUX1 , height=BUTTON_HEIGTH_AUX1, width=BUTTON_WIDTH_AUX1)
AuxName["command"] = ButtonClick
BUTTON_TOP_AUX1 = BUTTON_HEIGTH_AUX1+BUTTON_TOP_AUX1
AuxName.bind("<Button-1>", ButtonClick)
AuxName.pack()
それらを修正する方法を教えてください。非常に感謝します:)