类型错误:'NoneType'对象不支持项目赋值?

3 投票
2 回答
29479 浏览
提问于 2025-04-16 11:40

我创建了一个主界面,上面有一个“选择文件”的按钮和一个“开始”的按钮。最开始“开始”按钮是不能点击的,我想在选择了文件之后让它变成可以点击的状态。当我选择文件后,“开始”按钮应该变成可用的,但却出现了一个错误:“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()

撰写回答