首页 文章

python tkinter listbox - 插入错误[重复]

提问于
浏览
-1

这个问题在这里已有答案:

我无法在我的tkinter列表框中“插入”一个字符串 . 我的代码是:

from Tkinter import *
from tkFileDialog import askopenfilenames

def ImportFiles():
    Tk().withdraw()
    filenames = askopenfilenames()
    for f in filenames:
        listbox1.insert(END, f)
    return

root = Tk()
root.geometry("500x800")

listbox1 = Listbox(root).grid(row=1, sticky=W, padx=20, pady=20)
button1 = Button(root, text='Import', command=ImportFiles).grid(row=2, sticky=W, padx=20)

root.mainloop()

当我运行这段代码时,GUI弹出正常 . 我按下按钮,然后按预期打开文件对话框 . 然后,当我选择一些文件并按“确定”代码炸弹 . 我收到以下错误:

档案"C:\Python27\lib\lib-tk\Tkinter.py",第1536行, call

return self.func(* args)

在ImportFiles中输入第10行的文件“... / pyGUI_01.py”

listbox1.insert(END,f)

AttributeError:'NoneType'对象没有属性'insert'

我不明白 . 我将对象'listbox1'设置为TK Listbox . 我的IDE中没有迹象表明命令'insert'无效(PyCharm) . 我究竟做错了什么?

2 回答

  • -1

    您将变量“listbox1”设置为grid的结果(row = 1,sticky = W,padx = 20,pady = 20) .

    尝试两行:

    listbox1 = Listbox(root)
    listbox1.grid(row=1, sticky=W, padx=20, pady=20)
    

    现在listbox1实际上设置为Listbox的实例,而不是“grid()”的结果 .

  • 1

    Fhaab是正确的,但你为什么要创建一个新的Tk实例,然后使用Tk()销毁它 . 撤回()?

相关问题