#python #tkinter
#python #tkinter
Вопрос:
—-Общая информация —- Здесь, когда я запускаю этот код и нажимаю кнопку добавить, чтобы добавить продукт, возникает ошибка с именем AttributeError У IntVar нет объекта ‘translate’ кто-нибудь может мне помочь в этом?? Я использовал python с XAMPP (MySQL). Add_pr — это функция, в которой я получаю значения и вставляю их в базу данных при нажатии на кнопку добавления.
codes
class Products:
def add_pr(self):
self.iid = p_id.get()
self.nm = p_n.get()
self.sp = p_sp.get()
self.cp = p_cp.get()
query = "INSERT INTO product_details (Product_Id,Product_Name,Selling Price,Cost
Price)VALUES(%d,%s,%d,%d)"
cursor.execute(query,(iid,nm,sp,cp))
mydb.commit()
def __init__(self,root):
self.root = root
btn_add = Button(F1,text="Add",bd=2,bg="cadetblue",fg="white",command=self.add_pr,width=8,padx=15,pady=15,font="Arial 15 bold")
btn_add.grid(row=4,column=0,padx=20,pady=20)
mydb =pymysql.connect(host="localhost",user="root",password ="",database="product")
cursor = mydb.cursor()
root = Tk()
p_n = StringVar()
p_id = IntVar()
p_sp = IntVar()
p_cp = IntVar()
iid = IntVar()
nm = StringVar()
sp = IntVar()
cp = IntVar()
obj = Products(root)
root.mainloop()
**Error**:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:PythonPython38libtkinter__init__.py", line 1883, in __call__
return self.func(*args)
File "d:Billing Software(K)product.py", line 16, in add_pr
cursor.execute(query,(iid,nm,sp,cp))
File "C:PythonPython38libsite-packagespymysqlcursors.py", line 161, in execute
query = self.mogrify(query, args)
File "C:PythonPython38libsite-packagespymysqlcursors.py", line 140, in mogrify
query = query % self._escape_args(args, conn)
File "C:PythonPython38libsite-packagespymysqlcursors.py", line 115, in _escape_args
return tuple(conn.literal(arg) for arg in args)
File "C:PythonPython38libsite-packagespymysqlcursors.py", line 115, in <genexpr>
return tuple(conn.literal(arg) for arg in args)
File "C:PythonPython38libsite-packagespymysqlconnections.py", line 469, in literal
return self.escape(obj, self.encoders)
File "C:PythonPython38libsite-packagespymysqlconnections.py", line 462, in escape
return converters.escape_item(obj, self.charset, mapping=mapping)
File "C:PythonPython38libsite-packagespymysqlconverters.py", line 27, in escape_item
val = encoder(val, mapping)
File "C:PythonPython38libsite-packagespymysqlconverters.py", line 123, in escape_unicode
return u"'%s'" % _escape_unicode(value)
File "C:PythonPython38libsite-packagespymysqlconverters.py", line 78, in _escape_unicode
return value.translate(_escape_table)
AttributeError: 'IntVar' object has no attribute 'translate'
Комментарии:
1. Вы сохранили полученные значения IntVar (которые, я полагаю, были получены из записей) в
self.iid
и т. Д. — Но Затем вы использовали несвязанные переменныеiid
и т. Д. В запросе.2. Добавьте
self.
перед каждой переменной во втором аргументе вашегоexecute
вызова. Кроме того, ваша вложенность испорчена с__init__
самого начала.