Tkinter GUI 项目

问题描述 投票:0回答:1

我正在制作这个程序,它应该接受用户输入并在按下按钮后将其显示在左侧,但没有任何效果:)。

例如,如果您输入苹果,它会显示在左侧,如果您输入香蕉,它会显示在其下方。应该是之前所有输入的总计。

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()
python-3.x tkinter
1个回答
0
投票
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()
© www.soinside.com 2019 - 2024. All rights reserved.