【问题标题】:Python resturant management system how to add inventory recieptPython餐厅管理系统如何添加库存收据
【发布时间】:2018-06-10 17:06:35
【问题描述】:

下面给出的代码旨在计算收银员在输入小部件 order_raw 中输入的项目清单,为此我在定义之前放置了 sum=0一个函数,然后对总和进行增量,但我的程序仍然没有计算总账单。它一直给我零。目前我的代码没有错误。

from tkinter import *
order=[]
window=Tk()
order_raw=Entry(window)
order_raw.pack()
global bill
bill=0
def totalbill():
    global bill
    global billvar
    order.append(order_raw.get())
    if order_raw.get()=="burger":
        bill=bill+200
    if order_raw.get()=="fries":
        bill=bill+200
    print(bill)
billvar=StringVar(value=bill)
checkout=Button(window, text="total", command=totalbill)
checkout.pack()
total=Entry(window, textvariable=billvar)
total.pack()
window.mainloop()

然后我将 StringVar 移到了修改可变总和的函数中。但是它给了我一个错误,下面是代码及其错误。

from tkinter import *
order=[]
window=Tk()
order_raw=Entry(window)
order_raw.pack()
global bill
bill=0
def totalbill():
    global bill
    global billvar
    order.append(order_raw.get())
    if order_raw.get()=="burger":
        bill=bill+200
    if order_raw.get()=="fries":
        bill=bill+200
    print(bill)
    billvar=StringVar(value=bill)
checkout=Button(window, text="total", command=totalbill)
checkout.pack()
total=Entry(window, textvariable=billvar)
total.pack()
window.mainloop()

错误

"Traceback (most recent call last):
  File "C:/Users/umerk/.PyCharmCE2017.2/config/scratches/scratch_7.py", line 20, in <module>
    total=Entry(window, textvariable=billvar)
NameError: name 'billvar' is not defined

【问题讨论】:

  • 小心! list 是 Python 中的内置类型。你正在遮蔽它。给这个变量另一个名字
  • 但它不会解决主要问题
  • 不,这无关紧要。实际上,从你的问题很难理解你想要达到什么,你遇到了什么问题。您的代码不会引发任何错误。而且不相关的信息太多了。见How to create a Minimal, Complete, and Verifiable example
  • @UmerNaeem 如果是这样,那将是一个答案而不是评论。
  • 现在怎么样???你现在明白了吗??

标签: python layout tkinter


【解决方案1】:

如果要更新第一个代码sn -p中的底部条目,只需添加:

billvar.set(bill)

作为totalbill 的最后一行。请参阅下面的示例。


variable classesEntry 为例:

import tkinter as tk

def sum_cb():
    global item, sum_var

    if item.get() == "burger":
        sum_var.set(sum_var.get() + 30)

    elif item.get() == "fries":
        sum_var.set(sum_var.get() + 10)

root = tk.Tk()
item = tk.Entry(root)
sum_var = tk.IntVar(value=0)
sum_entry = tk.Entry(root, textvariable=sum_var)
sum_btn = tk.Button(root, text="Sum", command=sum_cb)

item.pack()
sum_btn.pack()
sum_entry.pack()

root.mainloop()

这是一个 GUI 的最小示例,它计算输入数字的总和并将它们显示为按钮文本:

import tkinter as tk

def sum_cb():
    global sum_btn, item

    if item.get() == "burger":
        sum_btn['text'] = int(sum_btn['text']) + 30

    elif item.get() == "fries":
        sum_btn['text'] = int(sum_btn['text']) + 10

root = tk.Tk()
item = tk.Entry(root)
sum_btn = tk.Button(root, text=0, command=sum_cb)

item.pack()
sum_btn.pack()

root.mainloop()

显示一个额外的Entry 而不是Button 文本:

import tkinter as tk

def sum_cb():
    global item, sum_entry

    cur_sum = int(sum_entry.get())
    sum_entry.delete(0, 'end')

    if item.get() == "burger":
        sum_entry.insert(0, cur_sum + 30)

    elif item.get() == "fries":
        sum_entry.insert(0, cur_sum + 10)

root = tk.Tk()
item = tk.Entry(root)
sum_entry = tk.Entry(root)
sum_entry.insert(0, 0)
sum_btn = tk.Button(root, text="Sum", command=sum_cb)

item.pack()
sum_btn.pack()
sum_entry.pack()

root.mainloop()

【讨论】:

  • 是的,它计算数字的总和,但实际上我试图在条目小部件中输入一个字符串,假设为“汉堡”,现在我希望程序将汉堡理解为 30 美元,所以这样当我输入“薯条”时,它会增加 10 美元,我希望你能理解
  • 谢谢兄弟,爱你,现在只是最后一件事,现在对于入口小部件,你将如何使用它,我的意思是,而不是按钮,你将如何使用入口小部件
  • @UmerNaeem 添加了带有变量类和条目的示例。
猜你喜欢
  • 2017-12-23
  • 2010-09-30
  • 1970-01-01
  • 1970-01-01
  • 2021-07-17
  • 2018-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多