我有这个程序模拟一个堆栈,我用listbox
来表示这个,唯一的问题是当我添加第一个元素时,它添加到顶部的listbox
而不是底端。添加到列表框的底部
这是我的计划是什么样子:
的红色是被添加的元素,其中,该绿色是其中的要素应加
我需要改变的功能是Add()
,我已经添加了整个代码,因为没有很多,任何人都可以复制它。
对于这个问题,我已经试过stack.insert("end", data)
,我已经试过stack.insert(END, data)
,但它仍然添加到列表框中
这里的顶部是代码
from tkinter import *
Window = Tk() # window
Window.geometry("400x200+50+50") # heightxwidth+x+y
Window.title("Stack Emulator")
mainPanel = Canvas(Window, width = 400, height = 200) # :)
mainPanel.pack() # :)
global stack
stack = Listbox(height = 8)
# methods
def Add(data):
data = data.get()
stack.insert(0, data)
stack.see(0)
def Remove():
stack.delete(0)
stack.see(0)
# buttons
data = StringVar()
enter = Entry(width = 10, textvariable = data)
add = Button(text = "Push", command = lambda *args: Add(data))
remove = Button(text = "Pop", command = lambda *args: Remove())
# stack
mainPanel.create_text(100, 20, text = "Stack", font = ("Purisa", 14, "bold"))
mainPanel.create_window(100, 35, window = stack, anchor = "n")
mainPanel.create_rectangle(37, 34, 162, 167)
# methods
mainPanel.create_text(180, 40, text = "Element:", font = ("Purisa", 12), anchor = "nw")
mainPanel.create_window(250, 40, window = enter, anchor = "nw")
mainPanel.create_window(180, 60, window = add, anchor = "nw")
mainPanel.create_window(180, 90, window = remove, anchor = "nw")
这是一个耻辱:(这不是我的倒票btw –
除了'insert(END,data)'实际上工作,就像'delete(END)'一样,有一些文档支持up,http ://effbot.org/tkinterbook/listbox.htm,其中声明使用'END'附加到列表框中。 – mhawke
@mhawke:是,“end”(或常量'END')附加到列表框的末尾。列表框的“结尾”与列表框的“底部”不一样,OP希望数据从底部向上滚动,而不是从顶部向下滚动。 –