【问题标题】:How can I access a button name if it was created in a for loop in python?如果按钮名称是在 python 的 for 循环中创建的,我如何访问它?
【发布时间】:2023-04-02 07:27:01
【问题描述】:

我目前正在尝试创建一个与 .txt 文件中的行交互的 GUI,以便对某些冷冻箱的内容进行排序。但是,当我使用这样的 for 循环创建大量按钮时,我很难与特定行进行交互:

def create_boxes(self):
    for r in range(0,10):
        for c in range(0,10):
            self.button = Button(root, text='%s.%s'%(r,c),borderwidth=1 ,command= lambda: self.replace_line("Freezercontent.txt", r*10+c , input("What would you like in this slot"))).grid(row=r,column=c+5)

在替换行函数中,第二个参数是特定按钮需要更改的行号。我的解决方案不起作用,因为当使用命令调用 lambda 函数时,for 循环已完成。这意味着我单击的每个按钮只会更改最后一行...

如何访问由text="somename" 参数给出的按钮名称?还是有更聪明的方法?

感谢 Emil H。

【问题讨论】:

  • 您可能需要在循环之外保留对它的引用
  • 为什么需要访问各个按钮?
  • @Tim Castelijns、Ben 和 Peter Wood,跟踪按钮似乎只提供了部分解决方案,因为它仍然只是我单击它时调用的最后一个按钮的命令功能......似乎与我(很可能是错误地)使用 lambda 函数有关,因为 Flipvargas 类定义已经解决了我问题的最后一部分。不过谢谢大家!我是新来的,但到目前为止,它确实是一个很棒的论坛!

标签:
python
user-interface
button