получение ошибки AttributeError: у объекта '_tkinter.tkapp' нет атрибута 'getitems' - PullRequest
2 голосов
/ 05 июля 2019

я продолжаю получать сообщение об ошибкеЯ пытался присвоить get_items как глобальную переменную безрезультатно.я пытаюсь сделать кнопку, которая собирает записи в GUI, вводит их в базу данных с Sql Lite для системы инвентаризации для автосалона.

from tkinter import* 
import sqlite3
conn = sqlite3.connect("E:\computing project\database of cars.db")
c=conn.cursor()



class Database:
    def __init__ ( kwargs , self, master=None ,*args):
        self.master = master
        self.heading = Label(master , text = "add to the database ", font=("ariel 35 bold") )
        self.heading.place (x=250 , y=0)

        self.name= Label(master, text= "enter product name", font=("arial 18 bold"))
        self.name.place(x=0,y=50)



        self.make_1=  Label(master , text = "enter car make ", font=("ariel 18 bold"))
        self.make_1.place(x=0,y=100)

        self.model_1=  Label(master , text = "enter car model ", font=("ariel 18 bold"),)
        self.model_1.place(x=0,y=150)

        self.regi_1=  Label(master , text = "enter registration plate", font=("ariel 18 bold"))
        self.regi_1.place(x=0,y=200)

        self.colour_1=  Label(master , text = "enter car colour ", font=("ariel 18 bold"))
        self.colour_1.place(x=0,y=250)


        self.cost_1=  Label(master , text = "enter cost price ", font=("ariel 18 bold"))
        self.cost_1.place(x=0,y=300)

        self.tcost_1=  Label(master , text = "enter total cost price ", font=("ariel 18 bold"))
        self.tcost_1.place(x=0,y=350)

        self.sell_1=  Label(master , text = "selling price ", font=("ariel 18 bold"))
        self.sell_1.place(x=0,y=400)

        self.tsell_1=  Label(master , text = "enter total selling price", font=("ariel 18 bold"))
        self.tsell_1.place(x=0,y=450)

        self.assprof_1=  Label(master , text = "enter total selling price", font=("ariel 18 bold"))
        self.assprof_1.place(x=0,y=500)




                #button to add to db

      #  b = Button( command=self.get)
       # b.place(x=0,y=0)

                #entry boxes

        self.name_e = Entry(master, width=25, font=("arial 18 bold"))
        self.name_e.place(x=300, y=50)

        self.name_e = Entry(master, width=25, font=("arial 18 bold"))
        self.name_e.place(x=300, y=100)

        self.name_e = Entry(master, width=25, font=("arial 18 bold"))
        self.name_e.place(x=300, y=150)

        self.name_e = Entry(master, width=25, font=("arial 18 bold"))
        self.name_e.place(x=300, y=200)

        self.name_e = Entry(master, width=25, font=("arial 18 bold"))
        self.name_e.place(x=300, y=250)

        self.name_e = Entry(master, width=25, font=("arial 18 bold"))
        self.name_e.place(x=300, y=300)

        self.name_e = Entry(master, width=25, font=("arial 18 bold"))
        self.name_e.place(x=300, y=350)

        self.name_e = Entry(master, width=25, font=("arial 18 bold"))
        self.name_e.place(x=300, y=400)

        self.name_e = Entry(master, width=25, font=("arial 18 bold",))
        self.name_e.place(x=300, y=450)

        self.name_e = Entry(master, width=25, font=("arial 18 bold"))
        self.name_e.place(x=300, y=500)

        self.b = Button(command=self.getitems)
        self.b.place(x=0,y=0)


    def get_items(self,*args,**kwargs):  #this function gets the items from the entry boxes

        self.carmake=self.carmake_e.get()
        self.carmodel=self.carmodel_e.get()
        self.registrationplate=self.registrationplate_e.get()
        self.carcolour=self.carcolour_e.get()
        self.costprice=self.costprice_e.get()
        self.totalprice=self.totalprice_e.get()
        self.sellingprice=self.sellingprice_e.get()
        self.assumedprofit=self.assumedprofit_e.get()


        if self.carmake == '' or self.carmodel == '' == self.carcolour == '':
            print ("WRONG")

        else:
            print("solid m8 ")




root = Tk()
b = Database(root)
frame = Frame(root,width=1920,height=1080)
root.geometry("1920x1080")
root.title("add to database")
root.configure(background="#b7b7e5")
root.mainloop()

1 Ответ

1 голос
/ 05 июля 2019

Я вижу две ошибки:

Первое: вы определяете метод get_items_ в имени), но вы используете command=self.getitems (без _ в имени)

 self.b = Button(command=self.get_items)

Секунда: у вас есть аргументы в неправильном порядке

__init__(kwargs, self, master=None, *args)

, поэтому он присваивает экземпляр класса переменной kwargs вместо self иприсваивает root self, и позже возникает проблема с поиском self.get_items, поскольку это означает, что root.get_items

kwargs должно быть в конце, а self в начале

__init__(self, master=None, *args, **kwargs)
...