更改函数中Tkinter按钮的颜色

时间:2014-09-12 11:29:54

标签: python python-2.7 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 个答案:

答案 0 :(得分:2)

问题的根源在于您没有定义self.button。您需要为该变量赋值:

self.button = Tkinter.Button(...)

答案 1 :(得分:1)

  1. 您需要在self.button1
  2. 时提供declaring
  3. 如果您看到网格,则为button2和按钮3指定了相同的列名,以便它们相互重叠
  4. 试试这个

    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()