Python 您可以在动态创建小部件后对其进行配置吗?

Python 您可以在动态创建小部件后对其进行配置吗?,python,tkinter,Python,Tkinter,所以我一直在寻找答案,但找不到任何例子 我想知道您是否可以在tkinter中创建几个按钮、标签或任何具有相同变量名的小部件,然后能够在创建该小部件后直接将其作为目标 下面是一个代码示例,它将创建5个具有相同变量名的按钮,如果您按下按钮,它将在所述按钮上打印文本 import tkinter as tk btn_names = ["1st Button", "2nd Button", "3rd Button", "4th Button", "5th Button"] class MyButto

所以我一直在寻找答案,但找不到任何例子

我想知道您是否可以在tkinter中创建几个按钮、标签或任何具有相同变量名的小部件,然后能够在创建该小部件后直接将其作为目标

下面是一个代码示例,它将创建5个具有相同变量名的按钮,如果您按下按钮,它将在所述按钮上打印文本

import tkinter as tk

btn_names = ["1st Button", "2nd Button", "3rd Button", "4th Button", "5th Button"]

class MyButton(tk.Frame):
    def __init__(self, parent, *args, **kwargs):
        tk.Frame.__init__(self, parent, *args, **kwargs)
        self.parent = parent
        self.createButtons()

    def createButtons(self):

        row_count = 0

        for n in range(5):
            someButton = tk.Button(self.parent, text=btn_names[n], command= lambda t=btn_names[n]: self.getText(t))
            someButton.grid(row = row_count, column = 0)
            row_count += 1

    def getText(self, text):
        print(text)


if __name__ == "__main__":
    root = tk.Tk()
    myApp = MyButton(root)


    root.mainloop()
现在我搞不清楚的是,是否有可能对上述按钮进行更改。就像我现在想要改变按钮的背景色和前景色,但是我没有办法确定我想要编辑的按钮的目标

我不能这么做:

someButton.config(background=“black”,foreground=“white”)

因为所有按钮都命名为
someButton


那么,在这个庄园中创建的小部件创建之后,是否可以编辑它呢?

我不确定这是最好的方法,但这是可能的

不要在最初创建按钮时将命令传递给按钮,而是在lambda函数中添加一行配置命令,并将someButton作为参数传递。然后在回调函数中,确保配置传递的按钮以更改其背景颜色

import tkinter as tk

btn_names = ["1st Button", "2nd Button", "3rd Button", "4th Button", "5th 
Button"]

class MyButton(tk.Frame):
    def __init__(self, parent, *args, **kwargs):
        tk.Frame.__init__(self, parent, *args, **kwargs)
        self.parent = parent
        self.createButtons()

    def createButtons(self):

        row_count = 0

        for n in range(5):
            someButton = tk.Button(self.parent, text=btn_names[n])
            someButton.configure(command=lambda t=btn_names[n], btn = someButton: self.getText(t, btn))
            someButton.grid(row = row_count, column = 0)
            row_count += 1

    def getText(self, text, btn):
        print(text)
        btn.configure(background = 'black')


if __name__ == "__main__":
    root = tk.Tk()
    myApp = MyButton(root)


    root.mainloop()

哦,那很有用。我不知道你可以像那样给lambda添加更多的变量。谢谢你的回答,我相信这会满足我的需要。