类型错误:'NoneType'对象不支持项目赋值?
我创建了一个主界面,上面有一个“选择文件”的按钮和一个“开始”的按钮。最开始“开始”按钮是不能点击的,我想在选择了文件之后让它变成可以点击的状态。当我选择文件后,“开始”按钮应该变成可用的,但却出现了一个错误:“TypeError: 'NoneType' object does not support item assignment”。下面是一些示例代码。
import Tkinter
import tkFileDialog
def chooseDir():
dir1=tkFileDialog.askopenfilename(parent=root, title='choose file path')
go['state']=Tkinter.ACTIVE
root=Tkinter.Tk()
global go
go=Tkinter.Button(text='file location',command=chooseDir,state=Tkinter.DISABLED).pack()
root.mainloop()
2 个回答
1
(更新关于新错误的信息)
在这个范围内找不到go
,你需要以某种方式获取它,或者在chooseDir
方法中使用全局范围的go
,可以试试用global go
。
Tkinter.Button
的行为和字典不一样,你可以通过config()
方法来改变它们的状态。
试试:
go.config(state=Tkinter.ACTIVE)
10
这一行:
go=Tkinter.Button(text='file location',command=chooseDir,state=Tkinter.DISABLED).pack()
是在创建一个临时对象,然后对它调用了 pack() 方法。这个 pack 方法返回的是 None,所以 go
被赋值为 None。
如果去掉 .pack(),那么 go
就会是这个按钮对象。然后再调用 go.pack()
。