2014-09-12 65 views
0

我想在按下不同的按钮时更改按钮的颜色。下面的代码重新创建Attribrute错误。更改功能中的Tkinter按钮的颜色

理想情况下,解决方案应该能够更改按钮的所有属性(请参阅尝试的状态更改),但我没有把它放在标题中,因为我不知道'属性'是否是正确的单词。

import Tkinter 

def tester(): 

    class window(Tkinter.Tk): 
     def __init__(self,parent): 
      Tkinter.Tk.__init__(self,parent) 
      self.parent = parent 
      self.initialize() 

     def initialize(self): 
      self.grid() 
      button1 = Tkinter.Button(self,text=u"Button") 
      button1.grid(padx=5,pady=5) 

      button2 = Tkinter.Button(self,text=u"Change",command=self.colourer) 
      button2.grid(column=1,row=0,pady=5) 

      button3 = Tkinter.Button(self,text=u"Disabled",state='disabled') 
      button3.grid(column=1,row=0,pady=5)      

     def colourer(self): 
      self.button1.configure(bg='red') 
#   self.button1.config(bg='red') -- this gives same error 
#   self.button3.configure(state='normal') -- as does this 
    if __name__ == "__main__": 
     app = window(None) 
     app.title('Tester') 
     app.mainloop() 

tester() 

所有的方式这里建议给予同样的错误:Changing colour of buttons in tkinter

感谢

回答

2

你的问题的根源是,你没有定义self.button。您需要为该变量指定一个值:

self.button = Tkinter.Button(...) 
1
  1. 你需要给self.button1declaring
  2. 如果你看到网格您BUTTON2给相同的列名和按钮3使它们彼此重叠

试试这个

import Tkinter 

def tester(): 

    class window(Tkinter.Tk): 
     def __init__(self,parent): 
      Tkinter.Tk.__init__(self,parent) 
      self.parent = parent 
      self.initialize() 

     def initialize(self): 
      print self.grid() 
      self.button1 = Tkinter.Button(self,text=u"Button") 
      self.button1.grid(padx=5,pady=5) 

      self.button2 = Tkinter.Button(self,text=u"Change",command=self.colourer) 
      self.button2.grid(column=1,row=0,pady=5) 

      self.button3 = Tkinter.Button(self,text=u"Disabled",state='disabled') 
      self.button3.grid(column=2,row=0,pady=5) 



     def colourer(self): 
      self.button1.configure(bg='red') 
#   self.button1.config(bg='red') -- this gives same error 
#   self.button3.configure(state='normal') -- as does this 
    if __name__ == "__main__": 
     app = window(None) 
     app.title('Tester') 
     app.mainloop() 

tester() 
+0

谢谢。为什么这个工作?我不太了解课堂和自我。 – 2014-09-12 11:40:58

+0

@ElConfuso只是添加了这个如果你添加self.variable它将可以通过类的方法访问,如果你不给它。它认为只是局部变量该方法 – 2014-09-12 11:42:25

+0

重新:“哟未定在给出self.button一个”。 “一”是指什么 - 一种颜色? – 2014-09-12 11:58:13