class Search_by_dates_window_output(Tk): # Класс вывода резултатов поиска по диапазону дат def __init__(self, date_one, date_two): Toplevel.__init__(self) # Инициализация self.title('aybdb - Результаты поиска') units_list = get_units_from_db_by_date(date_one, date_two) total_units = len(units_list)*2 unit_i = 1 sep_i = 2 i = 0 # Заголовки self.name_label_title = Label(self, text='Наименование товара', font=('Trebuchet ms', 16)) self.expire_date_label_title = Label(self, text='Срок годности', font=('Trebuchet ms', 16)) self.quantity_label_title = Label(self, text='Кол-во', font=('Trebuchet ms', 16)) self.control_functions_label = Label(self, text='Управление', font=('Trebuchet ms', 16)) self.name_label_title.grid(row=0, column=0, padx=5, pady=5) self.expire_date_label_title.grid(row=0, column=1, padx=5, pady=5) self.quantity_label_title.grid(row=0, column=2, padx=5, pady=5) self.control_functions_label.grid(row=0, columnspan=2, column=3, padx=5, pady=5) # Цикл формирования результатов while unit_i <= total_units: self.name = StringVar() self.expire_date = StringVar() units_set = units_list[i] self.name.set(units_set[0]) self.expire_date.set(units_set[2]) quantity = units_set[1] self.name_label = Label(self, textvariable=self.name, font=('Trebuchet ms', 16)) self.expire_date_label = Label(self, textvariable=self.expire_date, font=('Trebuchet ms', 16)) self.quantity_label = Entry(self, width=2) self.quantity_label.insert(END,quantity) self.edit_button = ttk.Button(self, text='Редактировать', command=self.edit_button_function) self.delete_button = ttk.Button(self, text='Удалить') self.separator = ttk.Separator(self, orient=HORIZONTAL) self.name_label.grid(row=unit_i, column=0, padx=3, pady=3) self.expire_date_label.grid(row=unit_i, column=1, padx=3, pady=3) self.quantity_label.grid(row=unit_i, column=2, padx=3, pady=3) self.edit_button.grid(row=unit_i, column=3, padx=3, pady=3) self.delete_button.grid(row=unit_i, column=4, padx=3, pady=3) self.separator.grid(row=sep_i, columnspan=5, sticky=EW, padx=3, pady=3) unit_i = unit_i + 2 sep_i = sep_i + 2 i = i + 1 def edit_button_function(self): update_unit(self.name_label.cget('text'),self.expire_date_label.cget('text'),self.quantity_label.get()) confirmation_window = Confirmation_window(self.name) confirmation_window.mainloop()
Смысл в том, что генерируется список вида - название / срок годности / кол-во и возле каждой позиции кнопки удалить и редактировать. К кнопке редактировать привязана функция. Как заставить эту функцию брать аргументы из нужного поля. В текущем виде данная функция берет аргументы из последнего поля.