Python 您可以在动态创建小部件后对其进行配置吗?
所以我一直在寻找答案,但找不到任何例子 我想知道您是否可以在tkinter中创建几个按钮、标签或任何具有相同变量名的小部件,然后能够在创建该小部件后直接将其作为目标 下面是一个代码示例,它将创建5个具有相同变量名的按钮,如果您按下按钮,它将在所述按钮上打印文本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
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添加更多的变量。谢谢你的回答,我相信这会满足我的需要。