Python tkinter:改变最近点击按钮的颜色
Python tkinter: changing color for a recently clicked button
我正在尝试制作一个程序,该程序将具有 8x8 按钮的网格,单击这些按钮会更改其颜色
我的代码如下所示:
def Function(self):
for i in range(8):
for j in range(8):
a=Button(self,width=2,height=1,command=lambda widget="button"+str(i)+str(j):Click1(self,widget))
a.grid(row=i,column=j)
def Click1(self):
a["bg"]="blue"
我遇到的问题是我不断收到一条错误消息:
NameError: name 'Click1' is not defined
有什么解决办法吗?
您没有保存对按钮的引用,因此以后无法更改它们。您应该做的是保存对按钮的引用,例如在列表列表(如网格)中,以便您可以使用行号和列号访问它们。
这是一个工作示例:
from Tkinter import *
class App():
def __init__(self, root):
self.root = root
def Function(self):
self.grid = []
for i in range(8):
row = []
for j in range(8):
row.append(Button(self.root,width=2,height=1,command=lambda i=i, j=j: self.Click1(i, j)))
row[-1].grid(row=i,column=j)
self.grid.append(row)
def Click1(self, i, j):
self.grid[i][j]["bg"]="blue"
root = Tk()
app = App(root)
app.Function()
root.mainloop()
我正在尝试制作一个程序,该程序将具有 8x8 按钮的网格,单击这些按钮会更改其颜色 我的代码如下所示:
def Function(self):
for i in range(8):
for j in range(8):
a=Button(self,width=2,height=1,command=lambda widget="button"+str(i)+str(j):Click1(self,widget))
a.grid(row=i,column=j)
def Click1(self):
a["bg"]="blue"
我遇到的问题是我不断收到一条错误消息:
NameError: name 'Click1' is not defined
有什么解决办法吗?
您没有保存对按钮的引用,因此以后无法更改它们。您应该做的是保存对按钮的引用,例如在列表列表(如网格)中,以便您可以使用行号和列号访问它们。
这是一个工作示例:
from Tkinter import *
class App():
def __init__(self, root):
self.root = root
def Function(self):
self.grid = []
for i in range(8):
row = []
for j in range(8):
row.append(Button(self.root,width=2,height=1,command=lambda i=i, j=j: self.Click1(i, j)))
row[-1].grid(row=i,column=j)
self.grid.append(row)
def Click1(self, i, j):
self.grid[i][j]["bg"]="blue"
root = Tk()
app = App(root)
app.Function()
root.mainloop()