我无法插入'一个字符串进入我的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)。我做错了什么?
答案 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()销毁它。撤回()?