我有這個程序模擬一個堆棧,我用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希望數據從底部向上滾動,而不是從頂部向下滾動。 –