如何修复仅将数组中的最后一项添加到列表框的功能

时间:2019-02-07 13:09:55

标签: python oop tkinter

对于我的程序,我将项目存储在数据库中。我使用名为find_all()的函数来获取所有这些项,并将它们添加到名为“ items_to_display”的列表/数组中。然后,我使用for循环运行列表items_to_display的长度来创建按钮。按钮的文本是位置索引处的items_to_display。该按钮的命令将一个项目添加到列表框中。该项目应与位置索引处的items_to_display相同,但是添加的项目始终是items_to_display的最后一个位置的项目。函数all_items()在类内部,而add_to_listbox不是。

我尝试在不同的for循环中创建按钮,但这没什么区别。我已经在位置索引处显示了items_to_display,以确保最后一个位置的项目不是唯一显示的项目。

def all_items(self, display_frame, order):
        items_to_display = mdb.find_all()
        for i in range(len(items_to_display)):
            Button(display_frame, text = items_to_display[i],command = lambda: add_to_listbox(items_to_display[i], order, i)).grid(row = i, column = 0)

def add_to_listbox(data, order, i):
        print(data)
        order.insert(i, data)
        order.pack()

我希望在按下按钮时将其中显示的文本添加到列表框中。

0 个答案:

没有答案