0

我正在尝试为每个 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()
4

3 回答 3

12

Bryan 的回答可能无法完全解决这个问题,特别是,他的解决方案只有在按钮的文本在创建后从未更改的情况下才有效。

button.config('text')[-1]

返回实际按钮的文本。

于 2013-01-11T22:53:09.660 回答
7

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

newbuttonname = username 
newbuttonname = Tkinter.Button(win, text = newbuttonname, 
    command = lambda name=username:click_one(name))

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

于 2012-10-12T15:56:23.450 回答
0

当您标记按钮时,它应该用引号引起来:

newbuttonname = tk.Button(win, text="NewButtonName")
于 2020-10-25T14:24:58.677 回答