属性错误: 'str'对象没有属性'disable'



我目前正在学习 guizero,我很快就遇到了一个问题,即制作一个在单击时禁用按钮的功能。整个代码有点多,所以下面是适用于这种情况的代码。

buttons = ["button0", "button1"]
def disable(n):
buttons[n].disable()
menu = Box(app, layout="grid", grid=[1,0])
button0 = PushButton(menu, command=lambda: disable(0), text="x", grid=[0,0])
button1 = PushButton(menu, command=lambda: disable(1), text="x", grid=[1,0])

不幸的是,此代码返回以下

错误,该错误很难弄清楚
Exception in Tkinter callback
Traceback (most recent call last):
File "/Users/oliver/.conda/envs/py37/lib/python3.7/tkinter/__init__.py", line 1702, in __call__
return self.func(*args)
File "/Users/oliver/.conda/envs/py37/lib/python3.7/site-packages/guizero/PushButton.py", line 197, in _command_callback
self._command()
File "guizero_test.py", line 84, in <lambda>
button0 = PushButton(menu, command=lambda: disable(0), text="0", grid=[0,0])
File "guizero_text.py", line 14, in disable
buttons[n].disable()
AttributeError: 'str' object has no attribute 'disable'

任何帮助解决这个问题,不胜感激!

def disable(n):
buttons[n].disable()

disable(( 这是它调用自己的方法 disable(( 如果分配像那个按钮[n]这样的禁用属性.config(state="disabled"(

替换为第 14 行

button[n].config(state="disabled")

您的列表只包含字符串,您无法对字符串执行.config(),请尝试

buttons = [PushButton(menu, command=lambda: disable(0), text="x", grid=[0,0])]
buttons += (PushButton(menu, command=lambda: disable(1), text="x", grid=[1,0]))

创建按钮时,使列表包含实际的按钮对象

最新更新