Доброго всем.
Делаю программку с помощью python tkinter для себя и конечно же я новичок в этом деле.
В БД одна таблица(пока) имеет данные в 5 столбцах(первый id). Необходимо чтобы она выдавала результаты поиска(при нажатии на кнопку) по ним, то есть пользователь вводит к примеру: имя продукта, размеры (длина/ширина/толщина).
Вот сама функция обращения к бд:
def search_records(self, product, lenght, width, thickness):
product = ('%' + product + '%',)
lenght = ('%' + lenght + '%',)
width = ('%' + width + '%',)
thickness = ('%' + thickness + '%',)
self.db.c.execute('''SELECT * FROM massa WHERE product LIKE ? AND lenght LIKE ? AND width LIKE ? AND thickness LIKE ?''', product, lenght, width, thickness)
[self.tree.delete(i) for i in self.tree.get_children()]
[self.tree.insert('', 'end', values=row) for row in self.db.c.fetchall()]
А здесь описана кнопка:
def init_search(self):
self.title('Поиск')
self.geometry ('500x300+400+300')
self.resizable(False, False)
label_search = tk.Label(self, text = 'Поиск по таблице')
label_search.place(x=250,y=20)
label_product_s = tk.Label(self, text='Наименование продукции:')
label_product_s.place(x=50, y=80)
self.entry_product_s = ttk.Entry(self)
self.entry_product_s.place(x=300, y=80)
label_lenght_s = tk.Label(self, text='Длина, мм:')
label_lenght_s.place(x=50, y=110)
self.entry_lenght_s = ttk.Entry(self)
self.entry_lenght_s.place(x=300, y=110)
label_width_s = tk.Label(self, text='Ширина, мм:')
label_width_s.place(x=50, y=140)
self.entry_width_s= ttk.Entry(self)
self.entry_width_s.place(x=300, y=140)
label_thickness_s = tk.Label(self, text='Толщина или высота, мм:')
label_thickness_s.place(x=50, y=170)
self.entry_thickness_s = ttk.Entry(self)
self.entry_thickness_s.place(x=300, y=170)
btn_cansel = ttk.Button(self, text='Закрыть', command=self.destroy)
btn_cansel.place(x=185, y=230)
btn_search = ttk.Button (self, text='Поиск')
btn_search.place(x=105, y=230)
btn_search.bind('<Button-1>', lambda event:self.view.search_records(self.entry_product_s.get(),self.entry_lenght_s.get(), self.entry_width_s.get(), self.entry_thickness_s.get()))
btn_search.bind('<Button-1>', lambda event:self.destroy(), add='+')
А это ошибка, которая выпадает при запуске поиска:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Program Files (x86)\Python38-32\lib\tkinter\__init__.py", line 1883, in __call__
return self.func(*args)
File "D:/Phyton/App_big_project/Main_app.py", line 231, in <lambda>
btn_search.bind('<Button-1>', lambda event:self.view.search_records(self.entry_product_s.get(),self.entry_lenght_s.get(), self.entry_width_s.get(), self.entry_thickness_s.get()))
File "D:/Phyton/App_big_project/Main_app.py", line 80, in search_records
self.db.c.execute('''SELECT * FROM massa WHERE product LIKE ? AND lenght LIKE ? AND width LIKE ? AND thickness LIKE ?''', product, lenght, width, thickness)
TypeError: function takes at most 2 arguments (5 given)
Поэтому вопрос, что мне необходимо исправить в функции поиска или в кнопке, чтобы выходил нужны результат. Или это вообще не реализовать в данных библиотеках?)