tkinter - 获取按钮名称?

Don*_*ied 0 python label tkinter button

我正在尝试为每个tkinter按钮执行不同的代码 - 直到从列表中调用之后才知道其名称.gtk有标签(不幸的是我不能使用gtk).

我怎么能用tkinter实现类似的呢?

def click_one(newbuttonname):
        try:
                writethisdown = open("participantsmovedlog.txt", 'a')
        except:
                pass
        rotatee = newbuttonname
        thispersonwasrotated(rotatee)
        writethisdown.close()
Run Code Online (Sandbox Code Playgroud)

....同时在makebutton函数中:

for someuser in listofusers:
            username = someuser
            newbuttonname = username 
            newbuttonname = Tkinter.Button(win, text = newbuttonname, command = lambda:click_one(username))
            newbuttonname.pack()
Run Code Online (Sandbox Code Playgroud)

eal*_*nso 10

布莱恩的答案可能并不完全解决这个问题,特别是,只有当按钮的文本在创建后永远不会改变时,他的解决方案才有效.

button.config('text')[-1]
Run Code Online (Sandbox Code Playgroud)

返回实际按钮的文本.


Bry*_*ley 6

你快到了.您只需要通过lambda或functools.partial传递名称:

newbuttonname = username 
newbuttonname = Tkinter.Button(win, text = newbuttonname, 
    command = lambda name=username:click_one(name))
Run Code Online (Sandbox Code Playgroud)

您可以使用相同的技术传递实际的wodget或任何其他数据.