我已經動態通過列表循環創造了一個按鈕:如何改變最後點擊的按鈕文本Tkinter的蟒蛇
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()
更改其文本?
--------------------編輯於第一答案,現在幾乎可以正常使用------------
謝謝你的回答,我非常感謝,並使其工作幾乎完美。 有兩個缺陷,首先它會拋出一個錯誤,因爲命令ButtonClick被髮送時沒有參數,這是發送按鈕綁定命令的默認方式,所以我真的不知道如何解決這個問題。 第二個是,在使用您提供給我的代碼之後,按鈕文本將隨着您的指定而改變,但它們不會尊重先前由我定義的位置和大小。
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()
你能告訴我如何解決這些問題嗎? 非常感謝:)
編輯當前狀態的問題,謝謝 – 2013-03-16 12:09:00
我已經更新了答案有更詳細的解決方案 – 2013-03-16 13:09:13