我正在使用Tkinter。我想从价格和数量计算总价,但它不起作用。
def adding(self):
if self.validation():
query = 'INSERT INTO products VALUES (?,?,?,?,?)'
parameters = (self.name.get(), self.price.get(), self.price.get() * self.quantity.get() ,self.quantity.get(),self.date.get())
self.run_query(query,parameters)
self.message['text']= 'Record {} added'.format (self.name.get())
self.message['text'] = 'Record {} added'.format(self.price.get())
self.message['text'] = 'Record {} added'.format(self.quantity.get())
self.message['text'] = 'Record {} added'.format(self.quantity.get() * self.price.get())
self.message['text'] = 'Record {} added'.format(self.date.get())
self.name.delete(0, END)
self.price.delete(0, END)
self.quantity.delete(0, END)
self.date.delete(0, END)
else:
self.message['text'] = 'name field or price is empty'
self.viewing_records()
我得到了同样的错误:
Tkinter回调中的异常 Traceback(最近一次调用最后一次): 文件" C:\ Users \ me \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ tkinter__init __。py",第1550行,调用 return self.func(* args) 文件" C:/Users/me/PycharmProjects/crawler/db.py",第78行,添加 parameters =(self.name.get(),self.price.get(),self.price.get()* self.quantity.get(),self.quantity.get(),self.date.get() ) TypeError:不能将序列乘以类型' str'
的非int
你可以帮我吗,这个数据存储在sqlite3表中
答案 0 :(得分:0)
当您使用get()
时,它将始终返回一个字符串。因此,您需要将该字符串转换为数字才能执行任何数学运算。我们可以使用int()
或float()
来完成此操作。 Int()
仅适用于float()
将对包含小数点或整数的数字起作用的整数。
我们可以处理可能的错误的一种方法是使用try/except
方法。
我们首先告诉python尝试进行数学计算,因为我们期待一个数字但是如果我们得到的数字不是数字,那么我们就会产生错误信息。
请参阅下面的代码示例,将数字乘以一个数字以获得结果。
import tkinter as tk
root = tk.Tk()
my_entry = tk.Entry(root)
my_entry.pack()
my_label = tk.Label(root, text="Results:")
my_label.pack()
def do_math():
try:
x = int(my_entry.get())
my_label.config(text="Results: {}".format(x * x))
except:
my_label.config(text="Results: Error: Blank or non int provided")
btn = tk.Button(root, text="Submit", command=do_math)
btn.pack()
root.mainloop()
还有其他方法可以处理插补值,例如强制输入字段仅使用验证功能接受数字和小数点。在执行任何数学运算之前,我们可以创建一个复杂的函数来检查值是整数还是浮点数。这大部分比我们需要的更简单的数学问题。