簡體   English   中英

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM