объект ‘IntVar’ не имеет атрибута ‘translate’

#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__ самого начала.