私はスタックをエミュレートするこのプログラムを持っていますが、これを表現するのに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)'と同様に動作します。 ://effbot.org/tkinterbook/listbox.htm、リストボックスの最後に 'END'を追加するとリストボックスに追加されます。 – mhawke
@mhawke:" end "(または定数' END')リストボックスの「終わり」はリストボックスの「ボトム」と同じではありません。オペレータはデータを上から上にではなく下から上にスクロールしたいと考えています –