TypeError:'NoneType'对象不支持项目分配?

时间:2011-02-11 23:15:48

标签: python tkinter

所以我用“文件选择”和“开始”按钮启动根屏幕。 go按钮被禁用,我想在选择文件后使其处于活动状态。当我选择文件时,go应该变为活动状态但是这个错误“TypeError:'NoneType'对象不支持项目赋值”这里有一些示例代码

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 个答案:

答案 0 :(得分:6)

这一行:

go=Tkinter.Button(text='file location',command=chooseDir,state=Tkinter.DISABLED).pack()

正在创建一个临时对象,然后在其上调用pack()。 pack方法返回None,因此go被指定为None。

删除.pack()然后go将成为Button对象。然后拨打go.pack()

答案 1 :(得分:1)

(更新新错误) go在该范围内不存在,您需要以某种方式访问​​它,或者使用global go方法中的chooseDir使用全局范围中的那个

Tkinter.Button的行为与词典不同,您可以通过config()方法更改其状态。

尝试:

go.config(state=Tkinter.ACTIVE)