[英]AttributeError in tkinter gui programming
我想在python的Gui窗口中显示我的计算输出。 我正在尝试Tkinter。 但是我在Tkinter级窗口小部件上显示输出时遇到问题。 我将输入数据作为地址信息放在Tkinter窗口的文本字段中,并希望将输入地址的纬度,经度添加到文本标签。 有人可以帮我吗? 我对这个Tkinter很陌生。
代码如下:
def initialize(self):
self.grid()
self.entry = Tkinter.Entry(self)
self.entry.grid(column=0,row=0,sticky='EW')
button = Tkinter.Button(self,text=u"Get Geo information !",command=self.OnButtonClick)
button.grid(column=1,row=0)
self.labelVariable = Tkinter.StringVar()
label = Tkinter.Label(self,textvariable=self.labelVariable,
anchor="w",fg="black",bg="white")
label.grid(column=0,row=1,columnspan=2,sticky='EW')
self.grid_columnconfigure(0,weight=1)
self.resizable(True,False)
def OnButtonClick(self):
outf = open(out_file,'w')
outf_failed = open(out_file_failed,'w')
#inf = open(addr_file,'r')
inf = codecs.open(addr_file, 'r', 'iso-8859-1')
for address in inf:
#get latitude and longitude of address
data = geocode(address)
#output results and log to file
if len(data)>1:
self.labelVariable.set( self.entryVariable.get()+" (Latitude )", data['lat'] )
self.labelVariable.set( self.entryVariable.get()+" (Longitude )", data['lng'] )
outf.write(address.strip()+data['lat']+','+data['lng']+'\n')
outf.flush()
else:
self.labelVariable.set( self.entryVariable.get()+" Geocoding of '"+addr_file+"' failed with error code "+data['code'] )
outf_failed.write(address)
outf_failed.flush()
time.sleep(sleep_time)
#clean up
inf.close()
outf.close()
outf_failed.close()
if __name__ == "__main__":
app = simpleapp_tk(None)
app.title('Your Location')
app.mainloop()
我得到了错误:
File "F:\JavaWorkspace\Test\src\gui_geo_location.py", line 94, in OnButtonClick
self.labelVariable.set( self.entryVariable.get()+" (Latitude )", data['lat'] )
File "C:\Python25\lib\lib-tk\Tkinter.py", line 1721, in __getattr__
return getattr(self.tk, attr)
AttributeError: entryVariable
这是我的__init__
方法:
def __init__(self,parent):
Tkinter.Tk.__init__(self,parent)
self.parent = parent
self.initialize()
def initialize(self):
self.grid()
self.entry = Tkinter.Entry(self)
self.entry.grid(column=0,row=0,sticky='EW')
self.entry.bind("<Return>", self.OnPressEnter)
button = Tkinter.Button(self,text=u"Get Geo information !",command=self.OnButtonClick)
button.grid(column=1,row=0)
self.labelVariable = Tkinter.StringVar()
label = Tkinter.Label(self,textvariable=self.labelVariable,
anchor="w",fg="black",bg="white")
label.grid(column=0,row=1,columnspan=2,sticky='EW')
self.grid_columnconfigure(0,weight=1)
self.resizable(True,False)
在F:\\JavaWorkspace\\Test\\src\\gui_geo_location.py
第94行,您使用的是self.entryVariable
但是该对象没有entryVariable
属性。
根据您的__init__
,您似乎没有在任何地方定义entryVariable
。 尝试添加:
self.entryVariable = Tkinter.StringVar()
到您的__init__
方法。 有关更多信息,请参见此页面 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.