我正在尝试一个程序,该程序将具有一个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

有什么解决办法吗?

#1楼 票数:3 已采纳

您不会保存对按钮的引用,因此以后无法更改它们。 您应该做的是保存对按钮的引用,例如在列表列表中(例如网格),这样您就可以使用行号和列号访问它们。

这是一个工作示例:

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

  ask by dachaver translate from so

未解决问题?本站智能推荐:

1回复

Tkinter:在列表中添加和自删除按钮|添加作品,删除不

我正在为一个程序创建一个条目表单,似乎我已经陷入了这个逻辑的困境。 基本上我想设计一个 dropdwon-list,它将单词添加到一个数组中,并将这些单词显示为它下面的小按钮。 当您单击按钮时,它们会再次消失并从数组中移除。 很简单,我想。 到目前为止,添加工作正常。 但删除不是那么多......按
1回复

TkInter:销毁多个按钮,然后重新创建(可能不同)许多按钮

我是Tkinter的新手,并且正在编写一个简单的图块翻转游戏以学习基础知识。 这个想法是,当我启动应用程序时,我得到一个“开始新游戏”按钮,退出按钮和一个网格大小滑块。 然后,我可以选择一个网格大小并单击开始,这会弹出一个* n的红色或绿色按钮(平铺)网格。 通过单击一个,我可以更改图块和
1回复

调用按钮中的功能

我在以下主题中获得了帮助: 逐行比较python中不同数据帧中的值 我在我的tk inter程序中有一个代码: DF1 = pd.DataFrame({"X":[1,2,3,4,5,6],"Y":[1,2,3,4,5,6],"C":[12,22,33,45,13,56]}) DF2 =
1回复

从Tkinter中的Entry小部件将参数传递给动态创建的Button

我正在寻找一种方法,如何将条目小部件的内容传递给按钮。 对我而言,最复杂的部分是从给定的XML结构动态创建的按钮和输入小部件(请参见“ xmlString”),其中描述了具有按钮和参数的GUI,按钮和参数的数量是可变的。 我简化了XML并制作了演示代码。 我知道lambda函数,但是我不
1回复

PythonTkInter按钮命令返回

我无法从TkInter按钮命令返回变量。 这是我的代码: 我只想返回TXT文件的文件路径。 TkInter窗口打开,我可以浏览并选择文件,但是它不返回路径。 我疯了! 有任何想法吗? 谢谢一群!
3回复

如何编写按钮回调?

下面是我用来制作按钮的棋盘的代码。 我知道如何为单个按钮创建一个回调函数,但我不知道如何为这64个按钮中的每个按钮实现一个回调函数,这样当按下它们时,它们将返回它们在网格中的位置。
1回复

pythontkinter)如何命令按钮回调类?

我希望圣诞老人按钮在单击d_day类时回调我的d_day类,但我不确定该怎么做。 以下是到目前为止我得到的源代码! 我已经运行了,但是什么也没有发生..没有运行,没有任何错误。 谁能告诉我问题出在哪里? 非常感谢!
4回复

PythonTkinter按钮回调

当我单击由for循环创建的每个按钮时,我正在尝试打印出按钮编号。 以下是我的尝试。 但不是打印出每个按钮编号,而是每次都给我最后一个按钮编号。 有什么我可以这样做,当我点击按钮1,它将打印1,2为2,依此类推?