在函数中更改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()
这里建议的所有方法都出现了同样的错误:在tkinter中改变按钮颜色
谢谢
2 个回答
1
- 你在声明的时候需要给
self.button1
。 - 如果你查看网格布局,你会发现 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(...)