2015-10-25 80 views
-1

与附加的代码,我尝试访问自己的widget对象的StringVar对象。Python,Tkinter,无法访问StringVar()对象

但不幸的是它说'AttributeError:'str'对象没有属性'set'' 任何想法为什么?在此先感谢..

import Tkinter as tk 

class mainWindow: 
    def __init__(self, master): 
     self.master = master 

     self.fieldList = {} 

     f = tk.Entry(self.master, text='', width = 7) 
     f.grid(column=0, row=0) 
     self.addToFieldList(f, 'MyFieldA') 

    def addToFieldList(self, fieldObj, fieldId): 
     fieldObj.bind('<Return>', lambda event, temp=fieldObj :self.commitField(event, temp)) 

     t = tk.StringVar() 
     fieldObj['textvariable'] = t 
     setattr(fieldObj, 'fieldId', fieldId) 
     self.fieldList[fieldId] = fieldObj 


    def commitField(self, event, sender): 
     newValue = sender.get() 
     t = sender['textvariable'] 
     t.set('newValue') # here comes the error 

def main(): 
    root = tk.Tk() 
    app = mainWindow(root) 

    root.wm_geometry("500x180") 
    root.mainloop() 

if __name__ == '__main__': 
    main() 
+0

请在这里询问之前做你自己的研究。 –

回答

0

把自己放在StringVar的前面,它可以让你调用它没有错误。这是因为它不是全局变量,所以函数无法访问它。还将t = sender['textvariable']更改为sender['textvariable'] = t