是否可以在按下按钮时更改按钮上的文本,即使有很多按钮使用同一个回调命令?
button1 = Button(self, text="1", command=self.getPressed)
button2 = Button(self, text="2", command=self.getPressed)
button1.grid(row=0, column=0)
button2.grid(row=0, column=1)
def getPressed(self):
button.config(self, text="this has been pressed", state=DISABLED)
我知道这段代码不起作用,因为button不是变量,但这正是我对回调的想法。(我使用的是python 3.7中的tkinter模块)
4条答案
按热度按时间lstz6jyr1#
可以使用lambda将按钮的编号作为参数传递给回调函数:
然后使用if来确定按下了哪个按钮。或者可以将按钮存储在列表中,然后只将索引传递给回调函数。
不使用类表示法的示例:
vcirk6k62#
你必须把小部件引用传递给回调函数,你可以这样做:
yftpprvb3#
我所要做的就是使用lambda将值传递给函数,这样你就可以编写按钮被按下的代码。
如果你这样做。你可以定义一个方法,它将接受该参数并将其转换为字符串。如果该值等于“1”:如果值等于“2”,则执行以下操作:对那个按钮做点什么
如果我把这些知识应用到你的工作中。它会看起来像这样。
我希望你能理解我在这里说的话。如果你理解了,请回复我,告诉我我解释得有多好。
oyxsuwqo4#
我知道这个答案是在这个问题4年后出现的,但也许有人会发现这个解决方案很有用。可以做的是使用
partial
函数和对按钮的引用,并在按钮创建后使用button.update(command=...)
来设置命令。这样我们就避免了用按钮创建一个单独的列表,我发现它更干净。而且,如果需要的话,可以传递额外的参数。