我正在制作这个程序,它应该接受用户输入并在按下按钮后将其显示在左侧,但没有任何效果:)。
例如,如果您输入苹果,它会显示在左侧,如果您输入香蕉,它会显示在其下方。应该是之前所有输入的总计。
import tkinter as tk
from tkinter import ttk
class shoppingcart():
def __init__(self):
self.items = []
self.window = tk.Tk()
self.window.title("tk Examples")
self.cart = tk.StringVar()
self.cart.set("fudge you")
def additem(self, itemname):
x = f'{itemname} 1'
print(x)
self.items.append(x)
print(self.items)
for i in self.items:
self.cart.set(f"{self.cart} \n {i}")
print(self.cart.get())
def create_widgets(self):
self.window['padx'] = 5
self.window['pady'] = 5
entry_frame = ttk.LabelFrame(self.window, text="Data Entry",
relief=tk.RIDGE)
entry_frame.grid(row=1, column=2, sticky=tk.E + tk.W + tk.N + tk.S)
text_label = ttk.Label(entry_frame, text="List item to add to cart")
text_label.grid(row=2, column=1, sticky=tk.W + tk.N)
my_text = tk.Text(entry_frame, height=2, width=30)
my_text.grid(row=2, column=2)
my_text.insert(tk.END, "asdf")
cmd_frame = ttk.LabelFrame(self.window, text="Shopping cart", relief=tk.RIDGE)
cmd_frame.grid(row=1, column=1, sticky=tk.E + tk.W + tk.N + tk.S)
button_label = ttk.Label(cmd_frame, text = self.cart)
button_label.grid(row=2, column=1, sticky=tk.W, pady=3)
add_item = ttk.Button(self.window, text="Add item",command =lambda: self.additem(my_text.get("1.0","end-1c")))
add_item.grid(row=1, column=4)
program = shoppingcart()
program.additem("------------------You Currently Have------------------\n")
program.create_widgets()
program.window.mainloop()
import tkinter as tk
from tkinter import ttk
class shoppingcart():
def __init__(self):
self.items = []
self.window = tk.Tk()
self.window.title("My shopping cart")
self.cart = tk.StringVar()
self.cart.set("Fudge")
def additem(self, itemname):
x = f'{itemname}'
print("Adding: ",x)
self.items.append(x)
self.cart.set("\n".join(self.items)) # Update the cart StringVar
def create_widgets(self):
self.window['padx'] = 5
self.window['pady'] = 5
entry_frame = ttk.LabelFrame(self.window, text="My shopping list",
relief=tk.RIDGE)
entry_frame.grid(row=1, column=2, sticky=tk.E + tk.W + tk.N + tk.S)
text_label = ttk.Label(entry_frame, text="List item to add to cart")
text_label.grid(row=2, column=1, sticky=tk.W + tk.N)
my_text = tk.Text(entry_frame, height=2, width=30)
my_text.grid(row=2, column=2)
my_text.insert(tk.END, "Enter text here...")
cmd_frame = ttk.LabelFrame(self.window, text="Shopping cart", relief=tk.RIDGE)
cmd_frame.grid(row=1, column=1, sticky=tk.E + tk.W + tk.N + tk.S)
button_label = ttk.Label(cmd_frame, textvariable = self.cart)# Use textvariable instead of text
button_label.grid(row=2, column=1, sticky=tk.W, pady=3)
add_item = ttk.Button(self.window, text="Add item",command =lambda: self.additem(my_text.get("1.0","end-1c")))
add_item.grid(row=1, column=4)
program = shoppingcart()
program.additem("------------------You Currently Have------------------\n")
program.create_widgets()
program.window.mainloop()