好吧,因为这是我学习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)
对于网格布局, STICKY
为N+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。如果这是真的,那么有人可以向我展示一个解决方法吗?
答案 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
就足够了(注意没有括号)