Python:使用按钮获取Tkinter的Entry值时出错

时间:2014-05-27 08:42:48

标签: python tkinter

好吧,因为这是我学习Python的第一天,我希望人们不介意新手问题

我有一个像这样的GUI布局的Tkinter:

Label(base, text="Site URL: ",width=15).grid(row=0,column=0,sticky=STICKY,pady=5)
entry1 = Entry(base, width=40).grid(row=0,column=1,sticky=STICKY,pady=5)
mybtn = Button(base, text="Run",command=s.initiate(entry1.get())).grid(row=0,column=2,sticky=STICKY,padx=10,pady=5)
对于网格布局,

STICKYN+S+E+W,来自s的{​​{1}}是我导入的模块(位于我的主文件顶部):

s.initiate

import spider as s 模块内容是这样的:

spider

当我尝试编译我的代码时出现这个错误:

import tkMessageBox

def initiate(url):
    tkMessageBox.showinfo("Spider", url)

任何人都可以解释一下我在点击按钮时从File "index.py", line 18, in <module> mybtn = Button(base, text="Run",command=s.initiate(entry1.get())).grid(row=0,column=2,sticky=STICKY,padx=10,pady=5) AttributeError: 'NoneType' object has no attribute 'get' 获取价值的错误吗?

我的猜测是在编译代码时运行Entry,但是get()尚未通过Python注册到Tkinter gui。如果这是真的,那么有人可以向我展示一个解决方法吗?

1 个答案:

答案 0 :(得分:1)

尝试做这样的事情:

entry1=Entry(base, width=40)
entry1.grid(row=0,column=1,sticky=STICKY,pady=5)

问题是您使用的值为None&amp;当你None.get()时,你会收到错误。其值为None,因为entry1具有调用的最后一个函数的值,grid()始终返回None

编辑:

自动调用函数是因为调用它。 如果要向函数发送一些参数,请执行以下操作:

command=lambda:myfunc(myargs)

另外,如果您不想发送任何参数,那么简单command=myfunc就足够了(注意没有括号