2013-04-25 97 views
1

我正在为使用Python的当前项目创建一个新的应用程序。这是我第一次使用它,它一直是一种学习体验......Python - Tkinter - GUI

我的应用程序中有一个按钮,它调用Python中的askcolor()函数。一切工作正常,但在此之后,它给了我以下错误。

AttributeError: 'str' object has no attribute 'set' 

这是我在我的应用程序有工作顺序:

  1. Select Color按钮,用户点击:

    self.bc_bttn=Button(self, text='Select Color', command=lambda: self.callback()) 
    
  2. 的函数调用callback功能和我选择合适的颜色

    def callback(self): 
        (triple, hexstr) = askcolor() 
        if triple: 
         triple_string = str(triple) 
         triple_string2 = re.findall('[0-9, ]',triple_string); 
         triple_bkgColor = ''.join(triple_string2) 
         print triple_bkgColor 
         self.overlayColorValue.set(triple_bkgColor) 
    
  3. self.overlayColorValue.set(triple_bkgColor)更改文本字段项的值,因此用户将看到应用程序的正确值

  4. 我按下Save按钮

    self.overlayColorValue = self.bc_ent.get() 
    body.set('overlay-color', self.overlayColorValue) 
    
  5. 我的更改写入到XML文件

    tree.write(CONFIG_XML) 
    
  6. 这一次一切正常,但如果我想再次做同样的事情改变颜色。然后,我有以下错误,当我点击Select Color按钮

    AttributeError: 'str' object has no attribute 'set' 
    
+1

我试图修正格式。您应该验证代码中的缩进并根据需要进行修复。另外,试着想出一个更具描述性的标题。目前的更像是一个标签列表,我添加了真正的标签。按[编辑]改善您的问题。 – 2013-04-25 19:08:14

回答

1

您与self.bc_ent.get()的返回值,这是一个str更换您的self.overlayColorValue属性。

据推测,在此之前,它是一个标签,你想叫.set()它来代替:

self.overlayColorValue.set(self.bc_ent.get()) 
body.set('overlay-color', self.overlayColorValue.get())