python tkinter listbox - 插入错误

时间:2016-07-21 20:46:35

标签: python tkinter listbox

我无法插入'一个字符串进入我的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行,致电

返回self.func(* args)

文件" ... / pyGUI_01.py",第10行,在ImportFiles中

listbox1.insert(END,f)

AttributeError:' NoneType'对象没有属性'插入'

我不明白。我设置了对象' listbox1'到TK列表框。我的IDE中没有迹象表明命令“插入”#39;无效(PyCharm)。我做错了什么?

2 个答案:

答案 0 :(得分:1)

您正在设置变量" listbox1"到网格的结果(行= 1,粘性= W,padx = 20,pady = 20)。

尝试两行:

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

现在listbox1实际上是设置为Listbox的一个实例,而不是" grid()的结果。"

答案 1 :(得分:-1)

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