添加到列表框的底部

时间:2016-12-03 10:53:20

标签: python tkinter listbox

我有这个模拟堆栈的程序,我使用listbox来表示这个,唯一的问题是当我添加第一个元素时,它会添加到{{1}的顶部而不是底部。

  

这就是我的程序:

enter image description here

红色是添加元素的位置,绿色是应添加元素的位置

我需要更改的功能是listbox,我还是添加了整个代码,因为不是很多,任何人都可以复制它。

至于问题,我已尝试Add(),我已尝试过stack.insert("end", data)但它仍然会添加到列表框的顶部

  

这是代码

stack.insert(END, data)

2 个答案:

答案 0 :(得分:1)

正如@BryanOakley在his answer中指出的那样,列表框通常不允许在列表框小部件的底部添加行。虽然有一个解决办法,那就是首先使用空字符串填充框,然后使用END添加/删除结尾:

#global stack
stack = Listbox(height=8)
stack.count = 0
# fill the listbox with empty lines
for i in range(stack.cget('height')-1):
    stack.insert(END, '')

# methods
def Add(data):
    stack.insert(END, data.get())
    stack.see(END)
    stack.count += 1

def Remove():
    if stack.count > 0:
        stack.delete(END)
        stack.see(END)
        stack.count -= 1

此代码使用足够的空行初始化列表框,以便附加到其上的字符串将显示在底部。在列表框对象上创建属性count以跟踪堆栈上的项目数。这样弹出一个空堆栈就不会删除填充行。

答案 1 :(得分:0)

列表框不会以这种方式工作。您只能从上到下添加项目。