2010-02-10 2 views
1

Я хочу показать свой вычисленный вывод в окне Gui в python. Я пытаюсь с Tkinter. Но у меня проблемы с отображением вывода на виджетах уровня Tkinter. Я помещаю входные данные в качестве адресной информации в текстовое поле окна Tkinter и хочу, чтобы широта, долгота этого введенного адреса на текстовую метку. Может ли кто-нибудь помочь мне в этом? Я просто совершенно новый для этого Tkinter.AttributeError в программировании tkinter gui

код ниже:

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) 

ответ

3

В строке 94 в F:\JavaWorkspace\Test\src\gui_geo_location.py, вы используете self.entryVariable, но этот объект не имеет entryVariable.

Основано на вашем __init__, кажется, вы еще не определили entryVariable. Попробуйте добавить:

self.entryVariable = Tkinter.StringVar() 

к вашему __init__ метод. См. this page для получения дополнительной информации.

+0

Привет .. Я прикрепил свой метод __init(), но не смог понять, в чем проблема! .. :( –

+0

Спасибо Nick..Its работает! –