TypeError: ExcelApp.mark_used() takes 1 positional argument but 2 were given
时间: 2023-09-24 09:02:41 浏览: 156
django报错:add_atr() takes 0 positional arguments but 1 was given
这个错误是因为 `mark_used()` 函数定义时只有一个参数 `button`,而在调用的时候传入了两个参数。这个问题可以通过使用 `lambda` 解决。
将 `child.bind("<Button-1>", lambda event, button=child: mark_used(button))` 改为 `child.bind("<Button-1>", lambda event, button=child: mark_used())`,然后修改 `mark_used()` 函数的定义,使其不需要参数即可:
```python
def mark_used():
button = root.focus_get()
if not button.used:
# 将按钮的标记设置为“已使用”
button.used = True
# 更改按钮的背景颜色
button.configure(bg="green")
# 取消按钮的绑定事件
button.unbind("<Button-1>")
# 绑定鼠标离开事件,使按钮的背景颜色保持不变
button.bind("<Leave>", lambda event, button=button: button.configure(bg="green"))
```
这样修改后,调用 `mark_used()` 函数时,会自动获取当前焦点的按钮作为参数,从而避免了参数数量不匹配的问题。
阅读全文