我正在使用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回调中的异常回溯(最近一次调用最后一次):文件“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行,添加参数=(self.name.get(),self.price.get(),self.price . get()* self.quantity.get(),self.quantity.get(),self.date.get())TypeError:不能将序列乘以'str'类型的非int
你可以帮我这个,这个数据存储在sqlite3表中
1 回答
当您使用
get()
时,它将始终返回一个字符串 . 因此,您需要将该字符串转换为数字才能执行任何数学运算 . 我们可以使用int()
或float()
来做到这一点 .Int()
仅适用于整数,其中float()
将对包含小数点或整数的数字起作用 .我们可以处理可能的错误的一种方法是使用
try/except
方法 . 我们首先告诉python尝试进行数学运算,因为我们期待一个数字,但是如果我们得到的数字不是数字,那么我们就会产生错误信息 .请参阅下面的代码示例,将数字乘以自己以获得结果 .
还有其他方法可以处理插补值,例如强制输入字段仅使用验证函数接受数字和小数点 . 在执行任何数学运算之前,我们可以创建一个复杂的函数来检查值是整数还是浮点数 . 这大部分比我们需要的更简单的数学问题 .