在函数中更改Tkinter按钮颜色

0 投票
2 回答
4101 浏览
提问于 2025-04-21 07:15

我想在按下一个按钮时改变另一个按钮的颜色。下面的代码出现了属性错误。

理想情况下,解决方案应该能够改变按钮的所有属性(看看我尝试的状态变化),但我没有把这个放在标题里,因为我不知道“属性”这个词是否合适。

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

这里建议的所有方法都出现了同样的错误:在tkinter中改变按钮颜色

谢谢

2 个回答

1
  1. 你在声明的时候需要给 self.button1
  2. 如果你查看网格布局,你会发现 button2 和 button3 使用了相同的列名,所以它们会重叠在一起。

试试这个

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

你遇到的问题的根本原因是你没有定义 self.button 这个变量。你需要给这个变量赋一个值:

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

撰写回答