def ask_table_row(table_id, root, account): table_name = INTERFACE_TABLE_NAMES[table_id].upper() window = Toplevel(root) window.title('Выбор записи в таблице ' + table_name + ' [' + account.get_rights() + ']') window.resizable(width=True, height=True) window.state('zoomed') toolbar = Frame(window) toolbar.pack(side=BOTTOM, expand=NO, fill=X) column_names = INTERFACE_TABLE_COLUMN_NAMES[table_id] table_data = db_helper.select_all_from(DATABASE_TABLE_NAMES[table_id]) constraint = db_viewer.get_table_constraint(table_id, account) grid_viewer = db_viewer.ScrolledGridViewer(window, column_names, table_data, constraint) grid_viewer.pack(expand=YES, fill=BOTH) table_name_label = Label(toolbar) table_name_label.config(text='Выберите запись в таблице ' + table_name, font=TOOLBAR_BUTTON_FONT) table_name_label.pack(side=LEFT, expand=NO, fill=Y) def cancel(): nonlocal cancel_button_pressed, window cancel_button_pressed = True window.destroy() cancel_button = main_window.ToolbarButton(toolbar, text='Отмена') cancel_button.config(width=20) cancel_button.config(font=TOOLBAR_BUTTON_FONT, bg='#F55', fg='#000') cancel_button.config(command=cancel) cancel_button.pack(side=RIGHT, expand=NO, fill=X, padx=10, pady=10) def confirm(): return not (grid_viewer.selected_item is None) # and len(grid_viewer.selected_item['values']) > 0 confirm_button = main_window.ToolbarButton(toolbar, text='ОК') confirm_button.config(width=20) confirm_button.config(font=TOOLBAR_BUTTON_FONT, bg='#0F0', fg='#000') confirm_button.config(command=(lambda: confirm() and window.destroy())) confirm_button.pack(side=RIGHT, expand=NO, fill=Y, padx=10, pady=10) cancel_button_pressed = False window.protocol('WM_DELETE_WINDOW', lambda: cancel()) window.focus_set() window.grab_set() window.wait_window() if not cancel_button_pressed: return grid_viewer.selected_item['values'] return None
def year_profit_statistics(report_name, root, account): """статистика доходов предприятия по годам за все время(ResultCursor OUTPUT)""" print('Формируется отчет "' + report_name + '"') main_window.status_label['text'] = 'Отчет : ' + report_name global report_frame clear_report_frame() report_data = db_helper.year_profit_statistics() column_names = [ 'Год', 'Прибыль', 'Абсолютный рост', 'Относительный рост, %' ] grid = db_viewer.ScrolledGridViewer(report_frame, column_names, report_data) grid.pack(expand=YES, fill=BOTH)
def get_number_of_kilometers_traveled(report_name, root, account): print('Report getting window 0') # main.root.title() main_window.status_label['text'] = 'Отчет : ' + report_name # window = Toplevel() # window.title(report_name + ' [' + account.get_rights() + ']') # window.focus_set() driver_table_id = 4 selected_item = dialogs.ask_table_row(driver_table_id, root, account) if selected_item is None: print('Ничего не выбрано') return global report_frame clear_report_frame() # begin, end = (12, 1, 2015), (12, 4, 2015) driver_id = selected_item[0] report_data = db_helper.get_number_of_kilometers_traveled(driver_id) column_names = ['Результат'] grid = db_viewer.ScrolledGridViewer(report_frame, column_names, report_data) grid.pack(expand=YES, fill=BOTH) # print(selected_items) # report_arguments_frame = Frame(report_frame) # report_frame.pack() # report_viewer_frame = Frame(report_frame) # report_frame.pack() # lframe = tix.LabelFrame(report_frame) return paned_window = PanedWindow(report_frame) paned_window.pack(fill=BOTH, expand=YES, side=LEFT) paned_window.config(orient=VERTICAL) paned_window.config(sashrelief=GROOVE, sashwidth=10)
def count_costs_on_company_development(report_name, root, account): """процедура расчета затрат на развитие предприятия за период(begin, end, Cost OUTPUT)""" print('Формируется отчет "' + report_name + '"') main_window.status_label['text'] = 'Отчет : ' + report_name begin, end = dialogs.ask_date_period() if begin is None: return global report_frame clear_report_frame() # begin, end = (12, 1, 2015), (12, 4, 2015) report_data = db_helper.count_costs_on_company_development(begin, end) column_names = ['Результат'] grid = db_viewer.ScrolledGridViewer(report_frame, column_names, report_data) grid.pack(expand=YES, fill=BOTH)
def get_driver_path_lengths(report_name, root, account): print("""Запушена процедура, возвращающая множество четверок 'id водителя, имя водителя, фамилия водителя, количество проезженных километров'""" ) main_window.status_label['text'] = 'Отчет : ' + report_name # window = Toplevel() # window.title(report_name + ' [' + account.get_rights() + ']') # window.focus_set() global report_frame clear_report_frame() global report_viewer_frame report_data = db_helper.get_driver_path_lengths() column_names = ['Идентификатор', 'Имя', 'Фамилия', 'Длина пути'] # print(report_data) constraint = [True] * 4 if account.is_user(): constraint[0] = False grid = db_viewer.ScrolledGridViewer(report_frame, column_names, report_data, constraint) grid.pack(expand=YES, fill=BOTH) # report_viewer_frame = ScrolledFrame(report_frame) # report_viewer_frame.pack(expand=YES, fill=BOTH) # scrolled_canvas = ScrolledCanvas(report_frame) # scrolled_canvas.pack(expand=YES, fill=BOTH) # report_viewer_frame = Frame(scrolled_canvas) # scrolled_canvas.create_window((0, 0), window=report_viewer_frame, anchor=NW) # report_viewer_frame.config(bg='red') # report_viewer_frame.config(width=500, height=2000) # import tkinter.tix as tix # bln = tix.Balloon(report_viewer_frame) # b = Button(report_viewer_frame, text='ASD:AKD') # tix.Tli import Pmw.Pmw_2_0_1.demos.Balloon return report_data = db_helper.get_driver_path_lengths() # canvas = ScrolledCanvas(report_viewer_frame) # , bg='green')#, width=200, height=300, bg='green') # canvas.pack(expand=YES, fill=BOTH) column_names = ['Идентификатор', 'Имя', 'Фамилия', 'Длина пути'] column_count = len(column_names) for j in range(len(column_names)): label = Label(report_viewer_frame) label.grid(row=0, column=j, sticky=NSEW) label.config(text=column_names[j]) label.config(relief=GROOVE) # SUNKEN FLAT RIDGE RAISED GROOVE SOLID report_viewer_frame.columnconfigure(j, weight=1) print(len(report_data)) for i in range(30): for j in range(column_count): entry = Entry(report_viewer_frame) entry.grid(row=i + 1, column=j, sticky=NSEW) entry.insert(END, report_data[i][j]) entry.config(justify=CENTER) report_viewer_frame.columnconfigure(j, weight=1) report_viewer_frame.rowconfigure(i, weight=1)