在TKInter中,为什么我会得到一个错误,取1个位置参数,但取2个位置参数

2024-09-30 01:31:43 发布

您现在位置:Python中文网/ 问答频道 /正文

在学习Python和TKInter时,我在代码中遇到了这个错误。不知道我错过了什么,希望有人能帮助我。我已经包括了按钮代码和功能,向您展示了我所拥有的

def change_font(self):
    self.label_name['font'] = "Sawasdee"

self.button1 = Button(self.myframe2, text="Change font")
self.button1.bind("<Button-1>", self.change_font)

Tags: 代码nameself功能tkinterdef错误button
1条回答
网友
1楼 · 发布于 2024-09-30 01:31:43

将函数绑定到事件时,tkinter将使用表示触发要调用函数的事件的参数调用该函数。这就是为什么错误说它期望一个参数(self),但得到了两个参数(self,event)

即使不需要,也需要考虑该事件参数。最简单的方法是使其成为可选的命名参数:

def change_font(self, event=None):
    self.label_name["font"] = "Sawasdee"

在按钮上使用bind通常是不正确的。Button小部件接受名为command的属性,该属性可用于将按钮绑定到函数。在这种情况下,函数将而不是获取事件参数:

def change_font(self):
    self.label_name["font"] = "Sawasdee"
self.button1 = Button(self.myframe2, text="ChangeFont", command=change_font)

使用command的优点是,它不仅自动支持用鼠标单击,而且还支持用键盘与按钮交互

相关问题 更多 >

    热门问题