def dest(event): print(name_entry.get()) string_dish.append(name_entry.get()) prog.insert_type_string_excel(string_dish) # Ввод типа в таблицу Excel trees.insert_type_string( ) # Вывод типа в treeview (в типы и в полную таблицы) print("KILL") ins_enter.destroy() # Удаление окна
def dest_type(event): print(name_entry.get()) string_dish.append(name_entry.get()) index_type = trees.changing_string(note_tree, string_dish) prog.change_type_string_excel( string_dish, index_type) # Ввод типа в таблицу Excel print("KILL") ins_enter.destroy() # Удаление окна
def save_table(): """ Автор: Исмаилов Асад, Гамидов Шамсудин Цель: Вызывается кнопкой "Сохранить", сохранение данных treeview (в исходный файл) Вход: Нет входных данных Выход: Обновленные данные исходного файла """ prog.save_table_name()
def insert_orders_string(): """ Автор: Исмаилов Асад Цель: Вызов функции и передача данных дерева заказов Вход: Нет выходных данных Выход: Нет выходных данных """ prog.insert_orders_string_tree(tree_orders, tree_full)
def insert_menu_string(): """ Автор: Исмаилов Асад Цель: Вызов функции и передача данных дерева меню Вход: Нет входных данных Выход: Нет выходных данных """ prog.insert_menu_string_tree(tree_menu, tree_full)
def insert_type_string(): """ Автор: Исмаилов Асад Цель: Вызов функции и передача данных дерева типов Вход: Нет входных данных Выход: Нет выходных данных """ prog.insert_type_string_tree(tree_type)
def dest_dish(event): print(name_entry.get()) string_dish.append(name_entry.get()) string_dish.append(price_entry.get()) string_dish.append(size_entry.get()) string_dish.append(typed_entry.get()) print(string_dish) index_dish = trees.changing_string(note_tree, string_dish) prog.change_dish_string_excel( string_dish, index_dish) # Ввод типа в таблицу Excel print("KILL") ins_enter.destroy() # Удаление окна
def dest(event): print(name_entry.get()) string_dish.append(name_entry.get()) string_dish.append(price_entry.get()) string_dish.append(size_entry.get()) string_dish.append(typed_entry.get()) print(string_dish) prog.insert_menu_string_excel( string_dish) # Ввод блюда в таблицу Excel trees.insert_menu_string( ) # Вывод блюда в treeview (в Меню и в полную таблицы) print("KILL") ins_enter.destroy() # Удаление окна
def export_table(): """ Автор: Исмаилов Асад, Гамидов Шамсудин Цель: Вызывается кнопкой "Экспорт", экспорт данных treeview (директорию выбирает пользователь) Вход: Нет входных данных Выход: Файл с данными с treeview """ fname = filedialog.asksaveasfilename(filetypes=[ ("Excel files", "*.xlsx") ]) # Получение директории папки, куда сохранять print(fname) prog.export_table_name(fname)
def open_table(): """ Автор: Исмаилов Асад, Гамидов Шамсудин Цель: Вызывается кнопкой "Открыть", открытие вводимой пользователем таблицы и вывод ее данных в treeview Вход: Нет входных данных Выход: Обновленный treeview """ file_name = filedialog.askopenfilename( ) # Получение директории папки с данными print(file_name) prog.open_table_name(file_name) trees.open_tables()
def dest(event): string_dish.append(0) string_dish.append(data_entry.get()) string_dish.append(time_entry.get()) string_dish.append(code_dish_entry.get()) string_dish.append(kolvo_entry.get()) print(string_dish) prog.insert_orders_string_excel( string_dish) # Ввод заказа в таблицу Excel trees.insert_orders_string( ) # Вывод заказа в treeview (в Заказы и в полную таблицу под блюдо из заказа) print("KILL") ins_enter.destroy() # Удаление окна
def open_tables(): """ Автор: Исмаилов Асад Цель: Вывод данных таблицы в treeview Вход: Нет входных данных Выход: Обновленный treeview (с добавленными из таблицы данными) """ prog.insert_type(tree_type) # Вывод данных из Excel в treeview prog.insert_orders(tree_orders) # Вывод данных из Excel в treeview prog.insert_menu(tree_menu) # Вывод данных из Excel в treeview prog.insert_full(tree_full) # Вывод данных из Excel в treeview
def deleting_string(note_tree): """ Автор: Исмаилов Асад Цель: Удаление выделенной строки и элементов, зависящих от данной строки, как в treeview, так и в Excel Вход: note_tree (виджет для управления коллекцией окон и отображения только 1 окна за раз) Выход: Обновленные treeview и Excel (после удаления) """ global tree_type global tree_menu global tree_orders global tree_full print("Current tree is number ", note_tree.index("current")) id_tree = note_tree.index( "current") # Номер открытой пользователем таблицы [0, 1, 2, 3] if id_tree == 0: # Если открыта таблица типов selected_item = tree_type.selection( )[0] # Id выделенной строки "type0", где 0 - номер типа в таблице типов values = tree_type.item(selected_item, option="values") # Данные выделенной строки print(values) tree_type.delete( selected_item) # Удаление строки в treeview (в таблице типов) dish_child = tree_menu.get_children() for id_dish in range( len(dish_child) - 1, -1, -1): # С конца, иначе удаляется через 1 из-за сдвига item_menu = dish_child[id_dish] values_dish = tree_menu.item(item_menu, option="values") if int(float(values_dish[3])) == int(selected_item[4:]): print(id_dish) tree_menu.delete( item_menu) # Удаление блюда в treeview (в таблице Меню) try: prog.deleting_string(id_dish, 2) # Удаление блюда в Excel except: print("Gi") full_child = tree_full.get_children( "full%d" % (int(item_menu[4:])) ) # "Дети" данного блюда в полной таблице, т.е. подстроки, заказы с этим блюдом for id_orders in range( len(full_child) ): # id_orders - id заказов с данным блюдом - "subAB", где A - номер блюда в Меню, B - номер заказа среди "детей" tree_orders.delete( "order%d" % (int( ((tree_full.item(full_child[id_orders], option="values"))[4])[1:])) ) # Удаление заказов в treeview (в таблице заказов) prog.deleting_string( int(((tree_full.item(full_child[id_orders], option="values"))[4])[1:]) - 1, 1) # Удаление заказа в Excel tree_full.delete( "full%d" % (int(item_menu[4:])) ) # Удаление блюда в treeview (в полной таблице с его подстроками) print(selected_item) prog.deleting_string(int(selected_item[4:]) - 1, id_tree) # Удаление типа в Excel if id_tree == 1: # Если открыта таблица заказов selected_item = tree_orders.selection( )[0] # Id выделенной строки "order0", где 0 - номер заказа в таблице заказов values = tree_orders.item(selected_item, option="values") # Данные выделенной строки print(values) k = prog.num_sub(int( selected_item[5:])) # Номер данного заказа в полной таблице tree_full.delete("sub%d%d" % (int(float( values[2])), k)) # Удаление заказа в treeview (в полной таблице) tree_orders.delete( selected_item) # Удаление заказа в treeview (в таблице заказов) print(selected_item) prog.deleting_string(int(selected_item[5:]) - 1, id_tree) # Удаление заказа в Excel if id_tree == 2: # Если открыта таблица Меню selected_item = tree_menu.selection( )[0] # Id выделенной строки "menu0", где 0 - номер блюда в таблице Меню values = tree_menu.item(selected_item, option="values") # Данные выделенной строки print(values) tree_menu.delete( selected_item) # Удаление блюда в treeview (в таблице Меню) full_child = tree_full.get_children( "full%d" % (int(selected_item[4:])) ) # "Дети" данного блюда в полной таблице, т.е. подстроки, заказы с этим блюдом print(full_child) # Вывод массива из "детей" блюда for id_orders in range( len(full_child) - 1, -1, -1 ): # id_orders - id заказов с данным блюдом - "subAB", где A - номер блюда в Меню, B - номер заказа среди "детей" tree_orders.delete("order%d" % (int( ((tree_full.item(full_child[id_orders], option="values"))[4] )[1:]))) # Удаление заказов в treeview (в таблице заказов) try: prog.deleting_string( int(((tree_full.item(full_child[id_orders], option="values"))[4])[1:]) - 1, 1) # Удаление заказа в Excel except: print("Gi") tree_full.delete( "full%d" % (int(selected_item[4:])) ) # Удаление блюда в treeview (в полной таблице с его подстроками) print(selected_item) prog.deleting_string(int(selected_item[4:]) - 1, id_tree) # Удаление блюда в Excel if id_tree == 3: # Если открыта полная таблица # Id выделенной строки: # "full0", если это блюдо в полной таблице, где 0 - номер блюда в таблице # "subAB", если это заказ в полной таблице, где A - номер блюда в таблице, B - номер заказа среди "детей" блюда6 selected_item = tree_full.selection()[0] values = tree_full.item(selected_item, option="values") # Данные выделенной строки print(values) if selected_item[0] == 'f': # Если это блюдо ("full0"[0] = 'f') tree_menu.delete("menu%d" % (int(selected_item[4:])) ) # Удаление блюда в treeview (в таблице Меню) full_child = tree_full.get_children( selected_item ) # "Дети" данного блюда в полной таблице, т.е. подстроки, заказы с этим блюдом print(full_child) # Вывод массива из "детей" блюда for id_orders in range( len(full_child) - 1, -1, -1 ): # id_orders - id заказов с данным блюдом - "subAB", где A - номер блюда в Меню, B - номер заказа среди "детей" tree_orders.delete("order%d" % (int(( (tree_full.item(full_child[id_orders], option="values"))[4] )[1:]))) # Удаление заказов в treeview (в таблице заказов) prog.deleting_string( int(((tree_full.item(full_child[id_orders], option="values"))[4])[1:]) - 1, 1) # Удаление заказа в Excel try: prog.deleting_string(int(selected_item[4:]) - 1, 2) # Удаление блюда в Excel except: print('Gi') tree_full.delete( selected_item) # Удаление строки в treeview (в полной таблице) elif selected_item[0] == 's': # Если это заказ ("subAB"[0] = 's') tree_orders.delete( "order%d" % (int((values[4])[1:])) ) # Удаление заказа в treeview (в таблице заказов) full_child = tree_full.get_children( "full%d" % (int(selected_item[3:-1])) ) # "Дети" данного блюда в полной таблице, т.е. подстроки, заказы с этим блюдом prog.deleting_string( int(((tree_full.item(full_child[int(selected_item[-1]) - 1], option="values"))[4])[1:]) - 1, 1) # Удаление заказа в Excel tree_full.delete( selected_item) # Удаление строки в treeview (в полной таблице) print(selected_item)
def changing_string(note_tree, string_dish): """ Автор: Исмаилов Асад Цель: Изменение выделенной строки и элементов, зависящих от данной строки, как в treeview, так и в Excel Вход: note_tree (виджет для управления коллекцией окон и отображения только 1 окна за раз), string_dish (массив из данных новой строки) Выход: номер выделенной типа/блюда в таблице Excel """ global tree_type global tree_menu global tree_orders global tree_full print("Current tree is number ", note_tree.index("current")) id_tree = note_tree.index( "current") # Номер открытой пользователем таблицы [0, 1, 2, 3] if id_tree == 0: # Если открыта таблица типов selected_item = tree_type.selection( )[0] # Id выделенной строки "type0", где 0 - номер типа в таблице типов values = tree_type.item(selected_item, option="values") # Данные выделенной строки tree_type.item(selected_item, values=(string_dish[0])) print(values) dish_child = tree_menu.get_children() for id_dish in range(len(dish_child)): item_menu = dish_child[id_dish] values_dish = tree_menu.item(item_menu, option="values") if int(float(values_dish[3])) == int(selected_item[4:]): tree_full.item("full%d" % (int(item_menu[4:])), values=(values_dish[0], values_dish[1], values_dish[2], string_dish[0])) return (int(selected_item[4:]) - 1) if id_tree == 2: # Если открыта таблица Меню selected_item = tree_menu.selection( )[0] # Id выделенной строки "menu0", где 0 - номер блюда в таблице Меню values = tree_menu.item(selected_item, option="values") # Данные выделенной строки price_dish = int(string_dish[1]) if int(string_dish[1]) != int(values[1]): for id_orders in range(len(tree_orders.get_children())): values_orders = tree_orders.item("order%d" % (id_orders + 1), option="values") if int(float(values_orders[2])) == int(selected_item[4:]): tree_orders.item( "order%d" % (id_orders + 1), values=(values_orders[0], values_orders[1], values_orders[2], values_orders[3], price_dish * int(float(values_orders[3])))) prog.change_order_string_excel([ 0, values_orders[0], values_orders[1], values_orders[2], values_orders[3], price_dish * int(float(values_orders[3])) ], id_orders) k = prog.num_sub( id_orders + 1) # Номер данного заказа в полной таблице values_sub = tree_full.item("sub%d%d" % (int(selected_item[4:]), k), option="values") tree_full.item( "sub%d%d" % (int(selected_item[4:]), k), values=('', '', '', '', '', values_sub[5], values_sub[6], values_sub[7], price_dish * int(float(values_orders[3])))) tree_menu.item(selected_item, values=(string_dish[0], string_dish[1], string_dish[2], string_dish[3])) values_type = tree_type.item( "type%d" % (int(string_dish[3])), option="values") # Данные выделенной строки tree_full.item("full%d" % (int(selected_item[4:])), values=(string_dish[0], string_dish[1], string_dish[2], values_type[0])) print(values) return (int(selected_item[4:]) - 1)