我正在尝试为每个tkinter按钮执行不同的代码 - 直到从列表调用之后才知道其名称。 gtk有标签(不幸的是我不能使用gtk)。
我如何实现与tkinter类似?
def click_one(newbuttonname):
try:
writethisdown = open("participantsmovedlog.txt", 'a')
except:
pass
rotatee = newbuttonname
thispersonwasrotated(rotatee)
writethisdown.close()
....同时在makebutton函数中:
for someuser in listofusers:
username = someuser
newbuttonname = username
newbuttonname = Tkinter.Button(win, text = newbuttonname, command = lambda:click_one(username))
newbuttonname.pack()
答案 0 :(得分:10)
布莱恩的回答可能并不能完全解决这个问题,特别是,只有当按钮的文本在创建之后永远不会改变时,他的解决方案才有效。
button.config('text')[-1]
返回实际按钮的文字。
答案 1 :(得分:5)
你快到了。您只需要通过lambda或functools.partial传递名称:
newbuttonname = username
newbuttonname = Tkinter.Button(win, text = newbuttonname,
command = lambda name=username:click_one(name))
您可以使用相同的技术传递实际的wodget或任何其他数据。
答案 2 :(得分:0)
在标记按钮时,它应该用引号引起来:
newbuttonname = tk.Button(win, text="NewButtonName")