我通过循环列表动态创建了一个按钮:
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()
你能告诉我如何解决这些问题吗?非常感激 :)