首页 文章

用TKinter计算字段

提问于
浏览
-1

我正在使用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 回答

  • 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()
    

    还有其他方法可以处理插补值,例如强制输入字段仅使用验证函数接受数字和小数点 . 在执行任何数学运算之前,我们可以创建一个复杂的函数来检查值是整数还是浮点数 . 这大部分比我们需要的更简单的数学问题 .

相关问题