如何在动态创建的小部件中按相应的按钮来访问条目内容? 以下是我迄今为止提出的最佳方案。谢谢你的帮助。
from Tkinter import *
class App(object):
def __init__(self, master):
self.master = master
self.mf = Frame(self.master)
self.l = ["white", "red", "blue", "brown"]
self.font = ("Arial", 30)
self.c, self.r = 1, 0
self.cc, self.rr = 0, 0
self.bel = []
for c in self.l:
action = self.print_entry
self.e = Entry(self.mf, bg=c, width=10, font=self.font)
self.e.grid(row=self.r, column=self.c)
self.b = Button(self.mf, bg=c, text=c, font=self.font)
self.b.grid(row=self.rr, column=self.cc)
self.b.config(command=action)
self.bel.append((self.b, self.e))
self.rr += 1
self.r += 1
self.mf.pack()
def print_entry(self): # this function prints the content of the entry
pass
def main():
root = Tk()
display = App(root)
root.mainloop()
if __name__=="__main__":
main()
答案 0 :(得分:1)
您可以使用lambda或functools.partial将对条目窗口小部件的引用传递给命令。例如:
self.b.config(command= lambda entry=self.e: action(entry))
...
def print_entry(self, entry):
print("the entry is '%s'" % entry.get())
顺便说一句,使用self.b
和self.e
是没有意义的,因为这些变量只能保存对最后一个按钮和最后一个条目的引用。您应该使用局部变量,和/或将值附加到列表中。