2014-09-12 107 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