在 Tkinter 中引用组合框值
Referencing Combo Box Values in Tkinter
我正在尝试编写一个 Python 代码来基本上根据项目 selected 和该项目的数量 selected 执行求和函数。
我的代码如下。我在引用组合框值时遇到问题。计算函数是我出错的地方。如何引用我输入到 'NewWindow' 的组合框?我根据项目数 selected 将组合框添加到页面,并且所有组合框都具有相同的值等
例如,如果我 select 2 'pizzas' 和 1 'CocaCola' 那么代码应该打印 33。 ((2*$15)+(1*$3))
这是我的错误:
文件 "C:\Users\aaaaa\Documents\pizzamenu.py",第 41 行,在计算中
成本=食品[x]
键错误:0
>
fooditems = {'pizza' : [15] , 'breadsticks' : [5] ,'wings' : [10],'CocaCola' : [3] ,'brownie' : [2]}
fooditems2 = []
quantity = ['1','2','3','4']
import tkinter as tk
from tkinter import *
from tkinter import ttk
menu = Tk()
menu.geometry('500x300')
check_boxes = {item:tk.IntVar() for item in fooditems}
for item in fooditems:
cb = tk.Checkbutton(menu, text=item, variable=check_boxes[item], anchor='w', onvalue=1, offvalue=0, width=50)
cb.pack()
combobox = ttk.Combobox(menu, values=quantity)
def Open():
New_Window = Toplevel(menu)
New_Window.geometry('500x300')
calculateButton = tk.Button(New_Window, text = 'calculate', command=calculate)
calculateButton.place(x=250,y=250)
for key, item in check_boxes.items():
if item.get() == 1:
fooditems2.append(key)
for x in range(len(fooditems2)):
b = Label(New_Window, text=fooditems2[x])
b.pack()
combobox = ttk.Combobox(New_Window, values=quantity)
combobox.pack()
New_Window.mainloop()
def calculate():
for x in range(len(fooditems2)):
#cost = fooditems2[x] * combobox.get()
cost = fooditems[x]
print(cost)
confirmButton = tk.Button(menu, text = 'Confirm', command=Open)
confirmButton.place(x=250,y=250)
menu.mainloop()
错误是因为fooditems
是字典。为了完成这件事,您需要找到一种方法 calculate()
可以参考所选商品的价格和商品的数量(combobox
)。我的建议是将这些信息放入 fooditems2
列表:
def Open():
New_Window = Toplevel(menu)
New_Window.geometry('500x300')
calculateButton = tk.Button(New_Window, text = 'calculate', command=calculate)
calculateButton.place(x=250,y=250)
fooditems2.clear()
for key, item in check_boxes.items():
if item.get() == 1:
Label(New_Window, text=key).pack()
combobox = ttk.Combobox(New_Window, values=quantity)
combobox.pack()
# save the price and the combobox
fooditems2.append([fooditems[key][0], combobox])
# make window modal
New_Window.grab_set()
New_Window.wait_window(New_Window)
def calculate():
total = 0
for price, cb in fooditems2:
cost = price * int(cb.get())
print(cost)
total += cost
print('total:', total)
我正在尝试编写一个 Python 代码来基本上根据项目 selected 和该项目的数量 selected 执行求和函数。
我的代码如下。我在引用组合框值时遇到问题。计算函数是我出错的地方。如何引用我输入到 'NewWindow' 的组合框?我根据项目数 selected 将组合框添加到页面,并且所有组合框都具有相同的值等
例如,如果我 select 2 'pizzas' 和 1 'CocaCola' 那么代码应该打印 33。 ((2*$15)+(1*$3))
这是我的错误:
文件 "C:\Users\aaaaa\Documents\pizzamenu.py",第 41 行,在计算中 成本=食品[x] 键错误:0
>
fooditems = {'pizza' : [15] , 'breadsticks' : [5] ,'wings' : [10],'CocaCola' : [3] ,'brownie' : [2]}
fooditems2 = []
quantity = ['1','2','3','4']
import tkinter as tk
from tkinter import *
from tkinter import ttk
menu = Tk()
menu.geometry('500x300')
check_boxes = {item:tk.IntVar() for item in fooditems}
for item in fooditems:
cb = tk.Checkbutton(menu, text=item, variable=check_boxes[item], anchor='w', onvalue=1, offvalue=0, width=50)
cb.pack()
combobox = ttk.Combobox(menu, values=quantity)
def Open():
New_Window = Toplevel(menu)
New_Window.geometry('500x300')
calculateButton = tk.Button(New_Window, text = 'calculate', command=calculate)
calculateButton.place(x=250,y=250)
for key, item in check_boxes.items():
if item.get() == 1:
fooditems2.append(key)
for x in range(len(fooditems2)):
b = Label(New_Window, text=fooditems2[x])
b.pack()
combobox = ttk.Combobox(New_Window, values=quantity)
combobox.pack()
New_Window.mainloop()
def calculate():
for x in range(len(fooditems2)):
#cost = fooditems2[x] * combobox.get()
cost = fooditems[x]
print(cost)
confirmButton = tk.Button(menu, text = 'Confirm', command=Open)
confirmButton.place(x=250,y=250)
menu.mainloop()
错误是因为fooditems
是字典。为了完成这件事,您需要找到一种方法 calculate()
可以参考所选商品的价格和商品的数量(combobox
)。我的建议是将这些信息放入 fooditems2
列表:
def Open():
New_Window = Toplevel(menu)
New_Window.geometry('500x300')
calculateButton = tk.Button(New_Window, text = 'calculate', command=calculate)
calculateButton.place(x=250,y=250)
fooditems2.clear()
for key, item in check_boxes.items():
if item.get() == 1:
Label(New_Window, text=key).pack()
combobox = ttk.Combobox(New_Window, values=quantity)
combobox.pack()
# save the price and the combobox
fooditems2.append([fooditems[key][0], combobox])
# make window modal
New_Window.grab_set()
New_Window.wait_window(New_Window)
def calculate():
total = 0
for price, cb in fooditems2:
cost = price * int(cb.get())
print(cost)
total += cost
print('total:', total)