python - 使用 python tkinter 出现错误: int() 以 10 为基数的无效文字:''
问题描述
我正在使用 tkinter 并使用 get() 方法来获取用户输入的金额值。我有总成本,所以我必须通过简单的减法来计算变化,但是当我这样做时,错误就来了。请帮忙。这是我从中获取值的代码部分:
amount_entry = Entry(n, font=("arial", 15), width=20, bg="white", textvariable=input_text)
amount_entry.grid(row=1, column=1, padx=5, pady=10)
amount = input_text.get()
以下是之后产生错误的代码: change = int(amount) - tcost 只需保留上述代码部分即可。这是我的整个程序。
from tkinter import *
tcost = 0
change = -1
m = Tk()
m.title("Restaurant POS System")
def next():
code = int(input_text1.get())
qty = int(input_text2.get())
global tcost
global change
if code == 1:
tcost = tcost + (qty * 220)
elif code == 2:
tcost = tcost + (qty * 240)
elif code == 3:
tcost = tcost + (qty * 180)
elif code == 4:
tcost = tcost + (qty * 130)
elif code == 5:
tcost = tcost + (qty * 150)
elif code == 6:
tcost = tcost + (qty * 180)
elif code == 7:
tcost = tcost + (qty * 150)
elif code == 8:
tcost = tcost + (qty * 60)
elif code == 9:
tcost = tcost + (qty * 200)
elif code == 10:
tcost = tcost + (qty * 60)
elif code == 11:
tcost = tcost + (qty * 12)
input_text1.set("")
input_text2.set("")
def final():
global amount
change = int(amount) - tcost
l = Tk()
a = Label(l, text=("Amount paid:", amount), fg="black", bg="#eee", font=("calibri", 15)).grid(row=0, column=0, padx=5, pady=10)
cost = Label(l, text=("Total Cost:", tcost), fg="black", bg="#eee", font=("calibri", 15)).grid(row=1, column=0, padx=5, pady=10)
c = Label(l, text=("Change:", change), fg="black", bg="#eee", font=("calibri", 15)).grid(row=2, column=0, padx=5, pady=10)
l.mainloop()
def calculate():
global amount
m.destroy()
n = Tk()
total = Label(n, text=str("Total Bill:" + str(tcost)), fg="black", bg="#eee", font=("calibri", 15)).grid(row=0, column=0, padx=5, pady=10)
Amount = Label(n, text="Enter amount paid:", fg="black", bg="#eee", font=("calibri", 15)).grid(row=1, column=0, padx=5, pady=10)
amount_entry = Entry(n, font=("arial", 15), width=20, bg="white", textvariable=input_text)
amount_entry.grid(row=1, column=1, padx=5, pady=10)
amount = amount_entry.get()
process = Button(n, text="Process", fg="white", bg="black", font=("calibri", 15), width=10, height=2, cursor="hand2", command=final).grid(row=2, column=1, padx=5, pady=10)
n.mainloop()
input_text1 = StringVar()
input_text2 = StringVar()
input_text = StringVar()
menu_frame = Frame(m, width=400, height=400,highlightbackground="black", highlightthickness=2)
menu_frame.pack(side=TOP)
input_frame = Frame(m, width=400, height=150, bg="silver")
input_frame.pack()
name = Label(menu_frame, text="WAH WAH RESTAURANT", font=("bebas neue", 26, "italic", "underline"), fg="indigo", justify=CENTER).grid(row=0, column=0, pady=10)
menu = Label(menu_frame, text="MENU", font=("arial black", 14), fg="black", justify=CENTER).grid(row=1, column=0, pady=5)
item1 = Label(menu_frame, text="1. Nihari -----------------------------------------------------------Rs.220/plate", fg="black", font=("arial", 12)).grid(row=2, column=0)
item2 = Label(menu_frame, text="2. Paaye ---------------------------------------------------------Rs.240/plate", fg="black", font=("arial", 12)).grid(row=3, column=0)
item3 = Label(menu_frame, text="3. Haleem ---------------------------------------------------------Rs.180/plate", fg="black", font=("arial", 12)).grid(row=4, column=0)
item4 = Label(menu_frame, text="4. Chicken Tikka -----------------------------------------------Rs.130/plate", fg="black", font=("arial", 12)).grid(row=5, column=0)
item5 = Label(menu_frame, text="5. Achar Gosht --------------------------------------------------Rs.150/plate", fg="black", font=("arial", 12)).grid(row=6, column=0)
item6 = Label(menu_frame, text="6. Beef Pulao ----------------------------------------------------Rs.180/plate", fg="black", font=("arial", 12)).grid(row=7, column=0)
item7 = Label(menu_frame, text="7. Chicken Biryani ----------------------------------------------Rs.150/plate", fg="black", font=("arial", 12)).grid(row=8, column=0)
item8 = Label(menu_frame, text="8. Shaami Kabaab -------------------------------------------Rs.60/kabaab", fg="black", font=("arial", 12)).grid(row=9, column=0)
item9 = Label(menu_frame, text="9. Palla Fish -----------------------------------------------------Rs.200/piece", fg="black", font=("arial", 12)).grid(row=10, column=0)
item10 = Label(menu_frame, text="10. Cold Drink(250ml) ------------------------------------------------Rs.60/-", fg="black", font=("arial", 12)).grid(row=11, column=0)
item11 = Label(menu_frame, text="11. Naan ------------------------------------------------------------------Rs.12/-", fg="black", font=("arial", 12)).grid(row=12, column=0)
code = Label(input_frame, text="Dish Code:", fg="black", bg="silver", font=("calibri", 15), justify=LEFT).grid(row=0, column=0,padx=5, pady=10)
dish_entry = Entry(input_frame, font=("arial", 15), width=20, bg="white", justify=RIGHT, textvariable=input_text1)
dish_entry.grid(row=0, column=1, padx=5, pady=10)
quantity = Label(input_frame, text="Quantity:", fg="black", bg="silver", font=("calibri", 15), justify=LEFT).grid(row=1, column=0,padx=5, pady=10)
qty_entry = Entry(input_frame, font=("arial", 15), width=20, bg="white", justify=RIGHT, textvariable=input_text2)
qty_entry.grid(row=1, column=1,padx=5, pady=10)
another = Button(input_frame, text="Order other item", width=12, height=2, bd=2, bg="black", fg="white", font=("arial", 10), cursor="hand2", command=next).grid(row=2, column=0, padx=10)
calc = Button(input_frame, text="Calculate", width=10, height=2, bd=2, bg="black", fg="white", font=("arial", 10), cursor="hand2", command=calculate).grid(row=2, column=1, padx=10)
m.mainloop()
解决方案
我通过定义input_text = StringVar()
第二个 tkinter 循环而不是第一个循环来解决这个问题。
from tkinter import *
tcost = 0
change = -1
m = Tk()
m.title("Restaurant POS System")
def next():
code = int(input_text1.get().strip())
qty = int(input_text2.get().strip())
global tcost
global change
if code == 1:
tcost = tcost + (qty * 220)
elif code == 2:
tcost = tcost + (qty * 240)
elif code == 3:
tcost = tcost + (qty * 180)
elif code == 4:
tcost = tcost + (qty * 130)
elif code == 5:
tcost = tcost + (qty * 150)
elif code == 6:
tcost = tcost + (qty * 180)
elif code == 7:
tcost = tcost + (qty * 150)
elif code == 8:
tcost = tcost + (qty * 60)
elif code == 9:
tcost = tcost + (qty * 200)
elif code == 10:
tcost = tcost + (qty * 60)
elif code == 11:
tcost = tcost + (qty * 12)
input_text1.set("")
input_text2.set("")
def final():
amount = input_text.get().strip()
change = int(amount) - tcost
l = Tk()
a = Label(l, text=("Amount paid:", amount), fg="black", bg="#eee", font=("calibri", 15)).grid(row=0, column=0, padx=5, pady=10)
cost = Label(l, text=("Total Cost:", tcost), fg="black", bg="#eee", font=("calibri", 15)).grid(row=1, column=0, padx=5, pady=10)
c = Label(l, text=("Change:", change), fg="black", bg="#eee", font=("calibri", 15)).grid(row=2, column=0, padx=5, pady=10)
l.mainloop()
def calculate():
global input_text
m.destroy()
n = Tk()
input_text = StringVar() # definde There are the IntVar() too for integer values only maybe try them
total = Label(n, text=str("Total Bill:" + str(tcost)), fg="black", bg="#eee", font=("calibri", 15)).grid(row=0, column=0, padx=5, pady=10)
Amount = Label(n, text="Enter amount paid:", fg="black", bg="#eee", font=("calibri", 15)).grid(row=1, column=0, padx=5, pady=10)
amount_entry = Entry(n, font=("arial", 15), width=20, bg="white", textvariable=input_text)
amount_entry.grid(row=1, column=1, padx=5, pady=10)
process = Button(n, text="Process", fg="white", bg="black", font=("calibri", 15), width=10, height=2, cursor="hand2", command=final).grid(row=2, column=1, padx=5, pady=10)
n.mainloop()
input_text1 = StringVar()
input_text2 = StringVar()
input_text = None # i define it in the calculate function
menu_frame = Frame(m, width=400, height=400,highlightbackground="black", highlightthickness=2)
menu_frame.pack(side=TOP)
input_frame = Frame(m, width=400, height=150, bg="silver")
input_frame.pack()
name = Label(menu_frame, text="WAH WAH RESTAURANT", font=("bebas neue", 26, "italic", "underline"), fg="indigo", justify=CENTER).grid(row=0, column=0, pady=10)
menu = Label(menu_frame, text="MENU", font=("arial black", 14), fg="black", justify=CENTER).grid(row=1, column=0, pady=5)
item1 = Label(menu_frame, text="1. Nihari -----------------------------------------------------------Rs.220/plate", fg="black", font=("arial", 12)).grid(row=2, column=0)
item2 = Label(menu_frame, text="2. Paaye ---------------------------------------------------------Rs.240/plate", fg="black", font=("arial", 12)).grid(row=3, column=0)
item3 = Label(menu_frame, text="3. Haleem ---------------------------------------------------------Rs.180/plate", fg="black", font=("arial", 12)).grid(row=4, column=0)
item4 = Label(menu_frame, text="4. Chicken Tikka -----------------------------------------------Rs.130/plate", fg="black", font=("arial", 12)).grid(row=5, column=0)
item5 = Label(menu_frame, text="5. Achar Gosht --------------------------------------------------Rs.150/plate", fg="black", font=("arial", 12)).grid(row=6, column=0)
item6 = Label(menu_frame, text="6. Beef Pulao ----------------------------------------------------Rs.180/plate", fg="black", font=("arial", 12)).grid(row=7, column=0)
item7 = Label(menu_frame, text="7. Chicken Biryani ----------------------------------------------Rs.150/plate", fg="black", font=("arial", 12)).grid(row=8, column=0)
item8 = Label(menu_frame, text="8. Shaami Kabaab -------------------------------------------Rs.60/kabaab", fg="black", font=("arial", 12)).grid(row=9, column=0)
item9 = Label(menu_frame, text="9. Palla Fish -----------------------------------------------------Rs.200/piece", fg="black", font=("arial", 12)).grid(row=10, column=0)
item10 = Label(menu_frame, text="10. Cold Drink(250ml) ------------------------------------------------Rs.60/-", fg="black", font=("arial", 12)).grid(row=11, column=0)
item11 = Label(menu_frame, text="11. Naan ------------------------------------------------------------------Rs.12/-", fg="black", font=("arial", 12)).grid(row=12, column=0)
code = Label(input_frame, text="Dish Code:", fg="black", bg="silver", font=("calibri", 15), justify=LEFT).grid(row=0, column=0,padx=5, pady=10)
dish_entry = Entry(input_frame, font=("arial", 15), width=20, bg="white", justify=RIGHT, textvariable=input_text1)
dish_entry.grid(row=0, column=1, padx=5, pady=10)
quantity = Label(input_frame, text="Quantity:", fg="black", bg="silver", font=("calibri", 15), justify=LEFT).grid(row=1, column=0,padx=5, pady=10)
qty_entry = Entry(input_frame, font=("arial", 15), width=20, bg="white", justify=RIGHT, textvariable=input_text2)
qty_entry.grid(row=1, column=1,padx=5, pady=10)
another = Button(input_frame, text="Order other item", width=12, height=2, bd=2, bg="black", fg="white", font=("arial", 10), cursor="hand2", command=next).grid(row=2, column=0, padx=10)
calc = Button(input_frame, text="Calculate", width=10, height=2, bd=2, bg="black", fg="white", font=("arial", 10), cursor="hand2", command=calculate).grid(row=2, column=1, padx=10)
m.mainloop()
推荐阅读
- php - Laravel 跳过查询未获取有效数据
- bash - 附加到有 X 但没有 Y 的行
- c - 在传递给函数和访问存储在 C 中的值时有效地使用结构的结构
- r - R 中的硒错误。无法读取未定义的属性“长度”
- solr - 使用 Solr,“添加提升”而不是使用“最大”提升的正确方法是什么
- xamarin - 框架点击手势 xamarin
- android - Kotlin - 接口中的只读属性
- numpy - 重复 numpy 向量-矩阵-向量乘法
- javascript - WKWebView 无法识别 JavaScript 返回的文本
- java - 带有光标选项的 Java MongoDB 3.6 聚合