2015-04-05 42 views
0

我试图为文本编辑器运行以下代码。缺少tkinter文本输入小部件的.get方法的参数错误

def newfile(): 
current = None 
def create_file(entry): 
    nonlocal current 
    current = open(entry.get(),'w') 
    e.master.destroy() 
chdir(askdirectory()) 
name=Tk() 
name.title("Name the File?") 
prompt=Label(name, text="Enter name for new file:") 
prompt.grid(row=0) 
e=Entry(name) 
e.grid(row=1) 
e.insert(0, "Untitled") 
create=Button(name, text="Create", command = lambda: create_file(e)) 
create.grid(row=2, column=3) 
name.mainloop() 
return current 

但我得到这个错误:

Exception in Tkinter callback 
Traceback (most recent call last): 
    File "/usr/lib/python3.2/tkinter/__init__.py", line 1402, in __call__ 
    return self.func(*args) 
    File "<pyshell#1>", line 15, in <lambda> 
    create=Button(name, text="Create", command = lambda: create_file(e)) 
    File "<pyshell#1>", line 5, in create_file 
    current = open(entry.get(),'w') 
TypeError: an integer is required 

它要一个整型参数。 有谁知道那是什么?

回答

1

Entry小部件的一个实例不需要get方法的任何参数。你正确地调用它。标准open命令也不需要一个整数。我的猜测是,entryopen之一不是你认为的。也许你有一个方法或另一个对象与这些名称之一?

我建议把调用get和单独行上开放,以确保您知道哪些该声明部分抛出的错误:

text = entry.get() 
current = open(text, 'w') 
+0

谢谢,这应该有助于追查。 – 2015-04-06 00:12:55

+0

事实证明,它希望open函数有一个整数,而不是entry.get()。 – 2015-04-06 00:17:05