Я хочу вызвать другой класс в tkinter. у меня есть 2 класса, и я не могу вызвать класс базы данных ниже моего класса window

#python #sqlite #user-interface #tkinter #tk

#python #sqlite #пользовательский интерфейс #tkinter #тз

Вопрос:

Я новичок в tkinter, и я только начал работать над Tkinter, и у меня есть 2 класса, я пытаюсь вызвать класс, который я сделал прямо под моим классом window. он выдает мне ошибку типа database_basket , имя класса невозможно вызвать. может кто-нибудь дать мне подсказку?

Это проблема, с которой я сталкиваюсь

 class Window3:

    def __init__(self, master):
        self.master = master
        self.master.title("Payment")
        self.master.geometry("1500x800")
        self.frame = Frame(self.master)
        self.frame.pack()

        self.customer_basket = Database_Basket() # Calling the class below
        self.customer_basket.connection()


    def insert_data(self):
        if len(self.prod_id_var.get()) != 0:
            self.customer_basket(self.prod_id_var.get(), self.prod_name_var.get(), self.prod_qty_var.get(),self.prod_price_var.get())
            self.basket_listbox.delete(0, END)
            self.basket_listbox.insert(END, self.prod_id_var.get(), self.prod_name_var.get(), self.prod_qty_var.get(),self.prod_price_var.get())


class Database_Basket:

    def connection(self):
        print("Database is now connected")
        db_conn = sqlite3.connect("basketinfo.db")
        cursor = db_conn.cursor()
        my_query = "create table if not exists tblbasket(product_id integer primary key, prod_name text, quantity text, price text) "
        cursor.execute(my_query)
        db_conn.commit()
        db_conn.close()
        print("Database connection is finished")

    def data_entry(self, prod_id, prod_name, quantity, price):
        print("Data Entry Method is called")
        connection = sqlite3.connect("basketinfo.db")
        cursor = connection.cursor()
        insert_query = "insert into tblbasket value(?,?,?,?)"
        cursor.execute(insert_query, (prod_id, prod_name, quantity, price))
        connection.commit()
        connection.close()
        print("Data Entry Method is finished")
 

Комментарии:

1. Пожалуйста, не публикуйте изображения ошибок. Изображения недоступны для поиска, а слабовидящие вообще не могут их видеть. Кроме того, ваш код выглядит неправильно отформатированным.

2. Это не говорит вам, что вы не можете вызвать класс , это говорит вам, что вы не можете вызвать экземпляр класса.

3. Извините, я впервые задаю вопрос. В следующий раз я обязательно добавлю более понятную картинку. Спасибо за разъяснение.

Ответ №1:

Вы хотели вызвать data_entry:

 self.customer_basket.data_entry(self.prod_id_var.get(), self.prod_name_var.get(), self.prod_qty_var.get(),self.prod_price_var.get())
 

Ответ №2:

Я думаю, что эта строка :

 self.customer_basket(....)
 

должно быть :

 self.customer_basket.data_entry(.....)
 

Вы пытаетесь вызвать экземпляр, где, как вы должны вызывать метод data_entry .