Esempio n. 1
0
 def create():
     '''
     Функция
     Получает: -
     Возвращает: -
     Автор: Демидов И.Д.
     '''
     global df, parent, window
     m.mdf = df
     window = tk.Toplevel()
     window.geometry('700x400+400+300')
     frame_report = tk.Frame(window)
     frame_report.pack(side=tk.TOP, fill=tk.BOTH, expand=1)
     bd.Table(frame_report, a.mxls1, a.mxls2, a.mxls3)
     frame_btns = tk.Frame(window)
     frame_btns.pack(fill=tk.X, side=tk.TOP)
     btn_save_csv = ttk.Button(frame_btns,
                               text='Сохранить CSV',
                               command=save_csv)
     btn_save_csv.pack(side=tk.LEFT)
     btn_save_txt = ttk.Button(frame_btns,
                               text='Сохранить TXT',
                               command=save_txt)
     btn_save_txt.pack(side=tk.LEFT)
     window.grab_set()
     window.focus_set()
     self.destroy()
Esempio n. 2
0
 def change_df():
     '''
     Функция изменяет данные выбранного кортежа
     Получает: -
     Возвращает: -
     Автор: Демидов И.Д
     '''
     global parent
     try:
         m.mdf.loc[int(entry_code.get()) - 1] = [
             entry_code.get(),
             change_entry_firm.get(),
             change_entry_country.get(),
             change_entry_model.get(),
             change_combobox.get(),
             int(change_entry_storage.get()),
             float(change_entry_diagonal.get()),
             change_entry_cpu.get(),
             int(change_entry_ram.get()),
             int(change_entry_amount.get())
         ]
         for widget in parent.winfo_children():
             widget.destroy()
         bd.Table(parent, m.mdf)
     except (ValueError):
         mb.showerror(
             "Ошибка",
             "Должны быть введены числа в полях 'Память', 'Оперативная память' и 'Количество'"
         )
Esempio n. 3
0
        def Table_add(firm, country, model, storage, diagonal, cpu,
        ram, amount, os):
            '''
            Функция добавляет новый кортеж в таблицу
            Получает: firm - название фирмы производителя,
                country - страна производителя,
                model - модель телефона, storage - объём памяти,
                diagonal - диагональ экрана, cpu - модель процессора,
                ram - объём оперативной памяти, amount - количество (штук),
                os - операционная система
            Возвращает: -
            Автор: Матвеев В.Е.
            '''
            global count, parent
            try:
                counter = df.loc[len(df)-1]["Product Code"]
            except(KeyError):
                counter = 0

            m.mdf = m.mdf[["Product Code", "Manufacturer", "Country", "Model", "OS", "Storage", "Diagonal", "CPU", "RAM", "Amount"]]
            m.mdf.loc[len(m.mdf)] = [len(m.mdf) + 1, firm, country, str(model), os, int(storage), float(diagonal), cpu, int(ram), int(amount)]

            for widget in parent.winfo_children():
                widget.destroy()
            m.mxls1 = m.mdf[['Manufacturer', 'Country']]
            m.mxls1 = m.mxls1.drop_duplicates(subset='Manufacturer')
            m.mxls2 = m.mdf[["Product Code", "Storage", "CPU", "RAM", "Amount", "Model"]]
            m.mxls2 = m.mxls2.drop_duplicates(subset='Product Code')
            m.mxls3 = m.mdf[["Model", "Diagonal", "OS", "Manufacturer"]]
            m.mxls3 = m.mxls3.drop_duplicates(subset='Model')
            bd.Table(parent, m.mxls1, m.mxls2, m.mxls3)
Esempio n. 4
0
 def Table_add(firm, country, model, storage, diagonal, cpu, ram,
               amount, os):
     '''
     Функция добавляет новый кортеж в таблицу
     Получает: firm - название фирмы производителя,
         country - страна производителя,
         model - модель телефона, storage - объём памяти,
         diagonal - диагональ экрана, cpu - модель процессора,
         ram - объём оперативной памяти, amount - количество (штук),
         os - операционная система
     Возвращает: -
     Автор: Матвеев В.Е.
     '''
     global count, parent
     try:
         counter = m.mdf.loc[len(m.mdf) - 1]["Product Code"]
     except (KeyError):
         counter = 0
     m.mdf.loc[len(m.mdf)] = [
         int(counter) + 1, firm, country,
         str(model), os,
         int(storage),
         float(diagonal), cpu,
         int(ram),
         int(amount)
     ]
     for widget in parent.winfo_children():
         widget.destroy()
     bd.Table(parent, m.mdf)
Esempio n. 5
0
 def change_of_code():
     '''
     Функция изменяет память, CPU, RAM и количество
     Получает: -
     Возвращает: -
     Автор: Демидов И.Д
     '''
     global parent
     try:
         m.mxls2['Storage'][m.mxls2["Product Code"] == int(
             entry_code.get())] = int(change_entry_storage.get())
         m.mxls2['CPU'][m.mxls2["Product Code"] == int(
             entry_code.get())] = change_entry_cpu.get()
         m.mxls2['RAM'][m.mxls2["Product Code"] == int(
             entry_code.get())] = int(change_entry_ram.get())
         m.mxls2['Amount'][m.mxls2["Product Code"] == int(
             entry_code.get())] = int(change_entry_amount.get())
         m.mxls2['Model'][m.mxls2["Product Code"] == int(
             entry_code.get())] = change_entry_model.get()
         for widget in parent.winfo_children():
             widget.destroy()
         bd.Table(parent, m.mxls1, m.mxls2, m.mxls3)
         self.destroy()
     except (ValueError):
         mb.showerror("Ошибка",
                      "Должны быть введены данные во все поля")
Esempio n. 6
0
        def filtr():
            '''
            Функция производит фильтрацию таблицы по заданным значениям
            Получает: -
            Возвращает: -
            Автор: Матвеев В.Е, Будин А.М.
            '''
            global df, parent, xls1, xls2, xls3
            df = m.mdf
            xls1 = m.mxls1
            xls2 = m.mxls2
            xls3 = m.mxls3
            if (filtr_entry_ram.get() != '' and filtr_entry_ram_2.get() != ''):
                Sorttest_int('RAM', int(filtr_entry_ram.get()),
                             int(filtr_entry_ram_2.get()))
            if (filtr_entry_storage.get() != ''
                    and filtr_entry_storage_2.get() != ''):
                Sorttest_int('Storage', int(filtr_entry_storage.get()),
                             int(filtr_entry_storage_2.get()))
            if (filtr_entry_diagonal.get() != ''
                    and filtr_entry_diagonal_2.get() != ''):
                b = []
                c = []
                diagseries = xls3[
                    xls3['Diagonal'] <= float(filtr_entry_diagonal_2.get())]
                diagseries = diagseries[diagseries['Diagonal'] >= float(
                    filtr_entry_diagonal.get())]
                b.append(diagseries['Model'])
                for item in b:
                    for items in item:
                        c.append(items)
                xls2 = xls2[xls2['Model'].isin(c)]

            if (filtr_combo_country.get() != ''):
                xls1 = xls1.loc[xls1['Country'] == filtr_combo_country.get()]
                xls3 = xls3[xls3['Manufacturer'].isin(
                    xls1['Manufacturer'].tolist())]
                xls2 = xls2[xls2['Model'].isin(xls3['Model'].tolist())]

            if (filtr_combo_firm.get() != ''):
                xls3 = xls3.loc[xls3['Manufacturer'] == filtr_combo_firm.get()]
                xls2 = xls2[xls2['Model'].isin(xls3['Model'].tolist())]

            if (filtr_combo_model.get() != ''):
                xls2 = xls2[xls2['Model'] == filtr_combo_model.get()]

            if (filtr_combo_os.get() != ''):
                xls3 = xls3.loc[xls3['OS'] == filtr_combo_os.get()]
                xls2 = xls2[xls2['Model'].isin(xls3['Model'].tolist())]

            if (filtr_combo_cpu.get() != ''):
                xls2 = xls2[xls2['CPU'] == filtr_combo_cpu.get()]
            if (filtr_entry_amount.get() != ''
                    and filtr_entry_amount_2.get() != ''):
                Sorttest_int('Amount', int(filtr_entry_amount.get()),
                             int(filtr_entry_amount_2.get()))
            for widget in parent.winfo_children():
                widget.destroy()
            bd.Table(parent, xls1, xls2, xls3)
Esempio n. 7
0
 def filtr_cancel():
     '''
     Функция отменяет изменения произведенные с помощью применения
     фильтра
     Получает: -
     Возвращает: -
     Автор: Демидов И.Д.
     '''
     global parent
     xls1 = m.mxls1
     xls2 = m.mxls2
     xls3 = m.mxls3
     for widget in parent_.winfo_children():
         widget.destroy()
     bd.Table(parent, xls1, xls2, xls3)
     self.destroy()
Esempio n. 8
0
 def filtr_save():
     '''
     Функция сохраняет изменения произведенные с помощью применения
     фильтра
     Получает: -
     Возвращает: -
     Автор: Демидов И.Д.
     '''
     global df, parent, xls1, xls2, xls3
     m.mdf = df
     m.mxls2 = xls2
     m.mxls1 = xls1
     m.mxls3 = xls3
     for widget in parent.winfo_children():
         widget.destroy()
     bd.Table(parent, m.mxls1, m.mxls2, m.mxls3)
     self.destroy()
Esempio n. 9
0
 def delete_code():
     '''
     Функция удаляет выбранный кортеж
     Получает: -
     Возвращает: -
     Автор: Демидов И.Д
     '''
     global parent
     if(choice.get() == ''):
         mb.showerror("Ошибка", "Введите код продукта")
     elif (m.mdf.loc[len(m.mdf)-1]["Product Code"] < int(choice.get())):
         mb.showerror("Ошибка", "Нет такого продукта")
     else:
         m.mdf = m.mdf.drop(np.where(m.mdf['Product Code'] == int(choice.get()))[0])
         for widget in parent.winfo_children():
             widget.destroy()
         bd.Table(parent, m.mdf)
         self.destroy()
Esempio n. 10
0
 def delete_code():
     '''
     Функция удаляет выбранный кортеж
     Получает: -
     Возвращает: -
     Автор: Демидов И.Д
     '''
     global parent
     if (choice.get() == ''):
         mb.showerror("Ошибка", "Введите код продукта")
     elif not any(m.mxls2['Product Code'] == int(choice.get())):
         mb.showerror("Ошибка", "Нет такого продукта")
     else:
         m.mxls2 = m.mxls2[m.mxls2['Product Code'] != int(choice.get())]
         for widget in parent.winfo_children():
             widget.destroy()
         bd.Table(parent, m.mxls1, m.mxls2, m.mxls3)
         self.destroy()
Esempio n. 11
0
 def change_country():
     '''
     Функция изменяет страну производителя
     Получает: -
     Возвращает: -
     Автор: Демидов И.Д
     '''
     global parent
     try:
         m.mxls1['Country'][
             m.mxls1["Manufacturer"] ==
             change_entry_firm.get()] = change_entry_country.get()
         for widget in parent.winfo_children():
             widget.destroy()
         bd.Table(parent, m.mxls1, m.mxls2, m.mxls3)
         self.destroy()
     except (ValueError):
         mb.showerror("Ошибка",
                      "Должны быть введены данные во все поля")
Esempio n. 12
0
 def change_of_model():
     '''
     Функция изменяет диагональ и ОС
     Получает: -
     Возвращает: -
     Автор: Демидов И.Д
     '''
     global parent
     try:
         m.mxls3['Diagonal'][m.mxls3["Model"] ==
                             change_entry_model.get()] = float(
                                 change_entry_diagonal.get())
         m.mxls3['OS'][m.mxls3["Model"] == change_entry_model.get(
         )] = change_combobox.get()
         m.mxls3['Manufacturer'][
             m.mxls3["Model"] ==
             change_entry_model.get()] = change_entry_firm.get()
         for widget in parent.winfo_children():
             widget.destroy()
         bd.Table(parent, m.mxls1, m.mxls2, m.mxls3)
         self.destroy()
     except (ValueError):
         mb.showerror("Ошибка",
                      "Должны быть введены данные во все поля")
Esempio n. 13
0
 def init_main(self):
     '''
     Функция создает и размещает фреймы с виджетами (таблицу, кнопки) в
     главном окне программы, задает размер, цвета элементов
     Получает: -
     Возвращает: -
     Автор: Будин А.М., Демидов И.Д
     '''
     global mdf, tree
     frame_toolbox = tk.Frame(bd=5, bg="#B0C7E4")
     frame_toolbox.pack(side='top', fill=tk.X)
     frame_table = tk.Frame(bd=5, bg="#B0C7E4")
     tree = frame_table
     # frame with controls
     frame_box2 = tk.Frame(frame_toolbox, bd=5, bg="#B0C7E4")
     frame_box2.pack(side='left', fill=tk.Y, expand=1)
     # photo for button
     #photo = tk.PhotoImage(file = r"../img.png")
     #photo = photo.subsample(25, 25)
     # elemests of toolbox
     button1_box1 = tk.Button(frame_box2,
                              text=u'Добавить',
                              command=self.open_dialog,
                              bg="#5E46E0",
                              fg="white",
                              font="TimesNewRoman 16")
     button2_box1 = tk.Button(frame_box2,
                              text=u'Правка',
                              command=self.change,
                              bg="#5E46E0",
                              fg="white",
                              font="TimesNewRoman 16")
     button3_box1 = tk.Button(frame_box2,
                              text=u'Удалить',
                              command=self.delete,
                              bg="#5E46E0",
                              fg="white",
                              font="TimesNewRoman 16")
     button4_box1 = tk.Button(frame_box2,
                              text=u'Экспорт',
                              command=self.saved,
                              bg="#5E46E0",
                              fg="white",
                              font="TimesNewRoman 16")
     button1_box2 = tk.Button(frame_box2,
                              text=u'Анализ',
                              command=self.analysis,
                              bg="#5E46E0",
                              fg="white",
                              font="TimesNewRoman 16")
     button1_box3 = tk.Button(frame_box2,
                              text=u'Фильтр',
                              command=self.sort,
                              bg="#5E46E0",
                              fg="white",
                              font="TimesNewRoman 16")
     button2_box3 = tk.Button(frame_box2,
                              text=u'Отчет',
                              command=self.report,
                              bg="#5E46E0",
                              fg="white",
                              font="TimesNewRoman 16")
     #button2_box3 = tk.Button(frame_toolbox, bg="#B0C7E4",
     #image=photo, compound=tk.LEFT, relief="flat")
     # pack elemests of toolbox
     button1_box1.pack(side='left', padx=5, ipadx=8, ipady=8)
     button2_box1.pack(side='left', padx=5, ipadx=8, ipady=8)
     button3_box1.pack(side='left', padx=5, ipadx=8, ipady=8)
     button4_box1.pack(side='left', padx=5, ipadx=8, ipady=8)
     button1_box2.pack(side='left', padx=5, ipadx=8, ipady=8)
     button1_box3.pack(side='left', padx=5, ipadx=8, ipady=8)
     button2_box3.pack(side='left', padx=5, ipadx=8, ipady=8)
     #button2_box3.pack(side='right')
     try:
         xls = pd.read_pickle("../Data/smartphones.pkl")
     except (FileNotFoundError, EOFError):
         mb.showerror("Ошибка", "Файл smartphones.pkl не удалось открыть")
         xls = pd.DataFrame(columns=[
             "Product Code", "Manufacturer", "Country", "Model", "OS",
             "Storage", "Diagonal", "CPU", "RAM", "Amount"
         ])
     mdf = pd.DataFrame(xls)
     bd.Table(frame_table, mdf)