Beispiel #1
0
    def __init__(self, user):
        self.wn = tk.ThemedTk()
        self.wn.configure(bg="#6262ED")
        self.wn.title("Rent a car")
        self.wn.geometry("650x450+200+50")

        self.item_index = ""
        self.my_index = 1

        self.user = user

        self.wn.get_themes()
        self.wn.set_theme('plastik')

        self.item = Admn.Admin()
        self.order = Orders.Order()

        #==========================Frame1==============================#
        self.frame1 = Frame(self.wn)
        self.frame1.place(x=10, y=10)
        self.frame1.configure(bg="#6262ED")

        self.lbl_add = Label(self.frame1,
                             font=("Calibri", 14, "bold"),
                             text="Address:",
                             bg="#6262ED")
        self.lbl_add.grid(row=0, column=0)

        self.combo_tbl1 = ttk.Combobox(self.frame1, state='readonly', width=20)
        self.combo_tbl1.grid(row=0, column=1, padx=5)
        self.combo_tbl1['values'] = self.order.all_address()

        self.btn1 = Button(self.frame1,
                           text='Search',
                           font=('Calibri', 11, "bold"),
                           fg="white",
                           background='#6262ED',
                           width=12,
                           bd=1,
                           command=self.search)
        self.btn1.grid(row=0, column=2, padx=10)

        #==========================Frame2==============================#
        self.frame2 = Frame(self.wn, bg="#6262ED")
        self.frame2.place(x=10, y=50)

        self.cars_tree = ttk.Treeview(self.frame2,
                                      columns=('Brand', 'Model', 'Price',
                                               'Address'))
        self.cars_tree.grid(row=0, column=0)
        self.cars_tree['show'] = 'headings'
        self.cars_tree.column('Brand', width=150, anchor='center')
        self.cars_tree.column('Model', width=150, anchor='center')
        self.cars_tree.column('Price', width=150, anchor='center')
        self.cars_tree.column('Address', width=155, anchor='center')
        self.cars_tree.heading('Brand', text="Brand")
        self.cars_tree.heading('Model', text="Model")
        self.cars_tree.heading('Price', text="Price")
        self.cars_tree.heading('Address', text="Address")
        self.cars_tree.bind("<Double-1>", self.select_item)

        self.vsb = ttk.Scrollbar(self.frame2,
                                 orient="vertical",
                                 command=self.cars_tree.yview)
        self.vsb.place(x=591, y=2, height=225)

        self.cars_tree.configure(yscrollcommand=self.vsb.set)

        #==========================Frame3==============================#
        self.frame3 = Frame(self.wn, bg="#6262ED")
        self.frame3.place(x=10, y=300)

        self.lbl_brand = Label(self.frame3,
                               font=("Calibri", 14, "bold"),
                               text="Brand:",
                               bg="#6262ED")
        self.lbl_brand.grid(row=0, column=0)

        self.lbl_model = Label(self.frame3,
                               font=("Calibri", 14, "bold"),
                               text="Model:",
                               bg="#6262ED")
        self.lbl_model.grid(row=1, column=0)

        self.ent_cbrand = ttk.Entry(self.frame3,
                                    font=("Verdana", 12),
                                    state="readonly")
        self.ent_cbrand.grid(row=0, column=1, padx=10)

        self.ent_cmodel = ttk.Entry(self.frame3,
                                    font=("Verdana", 12),
                                    state="readonly")
        self.ent_cmodel.grid(row=1, column=1, padx=10)

        self.lbl_price = Label(self.frame3,
                               font=("Calibri", 14, "bold"),
                               text="Price:",
                               bg="#6262ED")
        self.lbl_price.grid(row=2, column=0)

        self.ent_cprice = ttk.Entry(self.frame3,
                                    font=("Verdana", 12),
                                    state="readonly")
        self.ent_cprice.grid(row=2, column=1, padx=10)

        self.lbl_date = Label(self.frame3,
                              font=("Calibri", 14, "bold"),
                              text="Pick up Date:",
                              bg="#6262ED")
        self.lbl_date.grid(row=0, column=3)

        self.cal = DateEntry(self.frame3,
                             width=12,
                             background='darkblue',
                             foreground='white',
                             borderwidth=2,
                             state="readonly")
        self.cal.grid(row=0, column=4)

        self.lbl_days = Label(self.frame3,
                              font=("Calibri", 14, "bold"),
                              text="Days:",
                              bg="#6262ED")
        self.lbl_days.grid(row=1, column=3)

        self.combo_tbl2 = ttk.Combobox(self.frame3, state='readonly', width=11)
        self.combo_tbl2.grid(row=1, column=4, padx=5)
        self.combo_tbl2['values'] = [
            '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12',
            '13', '14', '15'
        ]

        self.btn1 = Button(self.wn,
                           text="Order",
                           font=('Calibri', 11, "bold"),
                           fg="white",
                           background='#6262ED',
                           borderwidth=0.5,
                           width=15,
                           command=self.submitOrder)
        self.btn1.place(x=260, y=400)

        self.show_menu()

        self.wn.mainloop()
Beispiel #2
0
    def __init__(self, root):
        self.root = root
        self.root.title(
            "Student Management System".center(420))  # title for Window
        self.root.configure(background="black")  # background color for window
        self.root.geometry("1360x768+0+0")

        bg_color = "black"

        #-----------F1----------------------------------------------------------------------------------------------------

        self.clock_icon = ImageTk.PhotoImage(file="Clock_Dark.png")
        self.student_icon = ImageTk.PhotoImage(file="images (1).jpg")

        self.icon1 = ImageTk.PhotoImage(file="download.jpg")
        self.icon2 = ImageTk.PhotoImage(file="download (1).png")
        self.icon3 = ImageTk.PhotoImage(file="download.png")
        self.icon4 = ImageTk.PhotoImage(file="images.jpg")
        self.icon5 = ImageTk.PhotoImage(file="linked_in.png")

        self.home_icon = ImageTk.PhotoImage(file="Home_dark.png")
        self.mangEmp_icon = ImageTk.PhotoImage(file="Manage_Emp_dark.png")
        self.mangStd_icon = ImageTk.PhotoImage(file="Manage_Student_dark.png")
        self.ViewStd_icon = ImageTk.PhotoImage(file="View_Std_dark.png")
        self.viewall_icon = ImageTk.PhotoImage(file="View_All_dark.png")

        self.change_pasw_icon = ImageTk.PhotoImage(file="Reset_dark.png")
        self.exit_icon = ImageTk.PhotoImage(file="Exit_dark.png")

        self.CPwin_icon = ImageTk.PhotoImage(file="C_pasw_dark.png")

        self.val = IntVar()
        self.val.set("2")

        F1 = LabelFrame(self.root, bd=10, relief=GROOVE, bg=bg_color)
        F1.place(x=0, relwidth=1, height=100)
        lbl = Label(F1,
                    text="Student Management System",
                    fg="white",
                    bg=bg_color,
                    font=("times new roman", 25, "bold")).place(x=120, y=15)

        R1 = Radiobutton(F1,
                         fg="white",
                         text="Light Mode",
                         bg="black",
                         value=1,
                         variable=self.val,
                         command=self.light)
        R1.place(x=700, y=20)
        R2 = Radiobutton(F1,
                         text="Dark Mode",
                         bg="black",
                         variable=self.val,
                         value=2,
                         command=self.dark)
        R2.place(x=700, y=40)
        R3 = Label(F1, fg="white", text="Dark Mode", bg="black")
        R3.place(x=720, y=42)
        self.font = ("times new roman", 20, "bold")
        self.calendar = []

        self.calendar.append(
            DateEntry(F1,
                      font=("times new roman", 15, "bold"),
                      bg="black",
                      locale='en_GB',
                      state="readonly",
                      width=10))
        self.calendar[-1].place(x=855, y=20, anchor="w")
        #print (self.calendar)

        self.time_string = time.strftime('(%H:%M:%S:%p)')
        time1 = Label(F1,
                      text=self.time_string,
                      font=("times new roman", 15, "bold"),
                      bg="black",
                      fg="white")
        time1.place(x=850, y=40)
        time2 = Label(F1, image=self.clock_icon, bg=bg_color)
        time2.place(x=820, y=40)

        lbl2 = Label(F1,
                     text="CodewithAJ_GKG@",
                     font=("times new roman", 15),
                     fg="white",
                     bg=bg_color)
        lbl2.place(x=1050, y=0)

        btn_logout = Button(F1,
                            text="Logout",
                            relief=RAISED,
                            width=15,
                            height=1,
                            font=("times new roman", 14, "bold"),
                            bg="light green",
                            foreground="black",
                            command=self.logout).place(x=1145,
                                                       y=50,
                                                       anchor="w")

        lbl2 = Label(F1, image=self.student_icon, bg=bg_color)
        lbl2.place(x=25, y=0)

        #---------------------------------------------------------------------------------F2-------------------------------------------------------------------------------------------
        #---------------------------------------------------------------------------------F2-------------------------------------------------------------------------------------------
        #---------------------------------------------------------------------------------F2-------------------------------------------------------------------------------------------
        #---------------------------------------------------------------------------------F2-------------------------------------------------------------------------------------------
        #---------------------------------------------------------------------------------F2-------------------------------------------------------------------------------------------
        #---------------------------------------------------------------------------------F2-------------------------------------------------------------------------------------------
        #---------------------------------------------------------------------------------F2-------------------------------------------------------------------------------------------
        #---------------------------------------------------------------------------------F2-------------------------------------------------------------------------------------------
        #---------------------------------------------------------------------------------F2-------------------------------------------------------------------------------------------

        F2 = LabelFrame(self.root, bd=10, relief=GROOVE, bg=bg_color)
        F2.place(x=0, y=100, width=150, height=640)

        F21 = LabelFrame(F2, bd=5, relief=GROOVE, bg=bg_color)
        F21.place(x=0, y=0, width=130, height=90)

        F22 = LabelFrame(F2, bd=5, relief=GROOVE, bg=bg_color)
        F22.place(x=0, y=90, width=130, height=90)

        F23 = LabelFrame(F2, bd=5, relief=GROOVE, bg=bg_color)
        F23.place(x=0, y=180, width=130, height=90)

        F24 = LabelFrame(F2, bd=5, relief=GROOVE, bg=bg_color)
        F24.place(x=0, y=270, width=130, height=90)

        F25 = LabelFrame(F2, bd=5, relief=GROOVE, bg=bg_color)
        F25.place(x=0, y=360, width=130, height=90)

        F26 = LabelFrame(F2, bd=5, relief=GROOVE, bg=bg_color)
        F26.place(x=0, y=450, width=130, height=90)

        F27 = LabelFrame(F2, bd=5, relief=GROOVE, bg=bg_color)
        F27.place(x=0, y=540, width=130, height=90)

        btn_home = Button(F21,
                          image=self.home_icon,
                          relief=RAISED,
                          bg="black",
                          width=115,
                          height=77,
                          command=self.home).place(x=0, y=37, anchor="w")
        btn_mangEmp = Button(F22,
                             image=self.mangEmp_icon,
                             relief=RAISED,
                             width=115,
                             height=77,
                             bg="black",
                             command=self.Emp_Manag).place(x=0,
                                                           y=37,
                                                           anchor="w")
        btn_lmandStd = Button(F23,
                              relief=RAISED,
                              image=self.mangStd_icon,
                              bg="black",
                              width=115,
                              height=77,
                              command=self.Std_Manag).place(x=0,
                                                            y=37,
                                                            anchor="w")
        btn_viewstd = Button(F24,
                             relief=RAISED,
                             width=115,
                             height=77,
                             bg="black",
                             image=self.ViewStd_icon,
                             command=self.Stdview).place(x=0, y=37, anchor="w")
        btn_viewall = Button(F25,
                             relief=RAISED,
                             width=115,
                             height=77,
                             bg="black",
                             image=self.viewall_icon,
                             command=self.view_all).place(x=0,
                                                          y=37,
                                                          anchor="w")
        btn_changepas = Button(F26,
                               relief=RAISED,
                               width=115,
                               height=77,
                               bg="black",
                               image=self.change_pasw_icon,
                               command=self.change_pasw).place(x=0,
                                                               y=37,
                                                               anchor="w")
        btn_Exit = Button(F27,
                          relief=RAISED,
                          width=115,
                          height=77,
                          bg="black",
                          image=self.exit_icon,
                          command=self.Exit).place(x=0, y=37, anchor="w")

        #---------------------------------------------------------------------------------F3------------------------------------------------------------------------------------------
        #---------------------------------------------------------------------------------F3------------------------------------------------------------------------------------------
        #---------------------------------------------------------------------------------F3------------------------------------------------------------------------------------------
        #---------------------------------------------------------------------------------F3------------------------------------------------------------------------------------------
        #---------------------------------------------------------------------------------F3------------------------------------------------------------------------------------------
        #---------------------------------------------------------------------------------F3------------------------------------------------------------------------------------------

        F3 = Frame(self.root, bd=5, relief=GROOVE, bg="black")
        F3.place(x=150, y=100, relwidth=1, height=60)
        lbl_1 = Label(F3,
                      text="Dashboard / Employee",
                      fg="white",
                      font=("comic sans", 25, "italic"),
                      bg="black")
        lbl_1.place(x=0, y=5)

        #-----------------Main Screen Frames---------------------------------
        F4 = LabelFrame(self.root, bd=5, relief=FLAT, bg="grey")
        F4.place(x=390, y=230, width=700, height=400)
        lbl_4 = Label(F4,
                      image=self.CPwin_icon,
                      font=("comic sans", 15, "italic"))
        lbl_4.place(x=265, y=20)

        #--------------------Variable---------------------------
        self.contact = StringVar()
        self.opasw = StringVar()
        self.npasw = StringVar()
        #self.contact.set("Contact Number")

        lbl6 = Label(F4,
                     text="Contact No.",
                     bg="grey",
                     font=("times new roman", 20, "bold")).place(x=115,
                                                                 y=180,
                                                                 anchor="w")
        txtu = Entry(F4,
                     bd=5,
                     textvariable=self.contact,
                     relief=GROOVE,
                     font=("", 15)).place(x=300, y=180, anchor="w")

        lbl7 = Label(F4,
                     text="Old Password",
                     bg="grey",
                     font=("times new roman", 20, "bold")).place(x=115,
                                                                 y=230,
                                                                 anchor="w")
        txtp = Entry(F4,
                     bd=5,
                     textvariable=self.opasw,
                     show="*",
                     relief=GROOVE,
                     font=("", 15)).place(x=300, y=230, anchor="w")

        lbl7 = Label(F4,
                     text="New Password",
                     bg="grey",
                     font=("times new roman", 20, "bold")).place(x=115,
                                                                 y=280,
                                                                 anchor="w")
        txtp = Entry(F4,
                     bd=5,
                     textvariable=self.npasw,
                     show="*",
                     relief=GROOVE,
                     font=("", 15)).place(x=300, y=280, anchor="w")

        btn_update = Button(F4,
                            relief=RAISED,
                            bg="#000080",
                            text="Change",
                            font=("", 15, "bold"),
                            fg="yellow",
                            height=1,
                            width=14,
                            command=self.Update).place(x=350,
                                                       y=330,
                                                       anchor="w")
class ViewPurchaseForm(MainForm):
    def __init__(self):
        super().__init__()

        self.window.title("SS Fashion Tuty - View Purchase")

        # variables
        self.selected_row = list()
        self.garment_list = list()
        self.product_name_list = list()
        self.product_type_list = list()
        self.product_size_list = list()
        self.product_sell_price_list = list()

        # widgets
        self.from_date = None
        self.to_date = None
        self.ety_filter_product_code_1 = None
        self.ety_filter_product_code_2 = None
        self.ety_filter_product_code_3 = None
        self.ety_filter_product_code_4 = None
        self.ety_filter_garment_name = None
        self.ety_filter_product_name = None
        self.ety_filter_product_type = None
        self.ety_filter_product_size = None
        self.ety_filter_product_sell_price = None
        self.purchase_tree = None
        self.summary_tree = None

        # widget variables
        self.var_purchase_date = tk.StringVar()
        self.var_garment_name = tk.StringVar()
        self.var_product_code = tk.StringVar()
        self.var_product_name = tk.StringVar()
        self.var_product_type = tk.StringVar()
        self.var_product_size = tk.StringVar()
        self.var_selling_price = tk.DoubleVar()
        self.var_quantity = tk.IntVar()
        self.var_amount = tk.DoubleVar()

        self.var_include_date = tk.IntVar()
        self.var_search_product_code_1 = tk.StringVar()
        self.var_search_product_code_2 = tk.StringVar()
        self.var_search_product_code_3 = tk.StringVar()
        self.var_search_product_code_4 = tk.StringVar()
        self.var_total_quantity = tk.IntVar()
        self.var_total_amount = tk.StringVar()

        self.load_view_purchase_form()

    def load_view_purchase_form(self):
        for index in range(1, 9):
            self.menubar.entryconfig(index, state=tk.DISABLED)

        self.show_menu(MainForm.is_admin_user)
        self.update_username()

        self.reload_lookup()

        # ********** Sub Containers *********
        top_container = tk.Frame(self.content_container, padx=2, pady=1, relief=tk.RIDGE, bg=self.clr_yellow)
        top_container.pack(fill='both', expand=True, side=tk.TOP)

        bottom_container = tk.Frame(self.content_container, padx=2, pady=1, relief=tk.RIDGE, bg=self.clr_yellow)
        bottom_container.pack(fill='both', expand=True, side=tk.TOP)

        # top_container elements
        top_button_container = tk.Frame(top_container, bd=2, relief=tk.RIDGE, bg=self.clr_yellow)
        top_button_container.pack(fill='both', expand=True, side=tk.TOP)

        purchase_tree_container = tk.Frame(top_container, bd=2, pady=3, bg=self.clr_yellow, relief=tk.RIDGE)
        purchase_tree_container.pack(fill='both', expand=True, side=tk.TOP)

        # bottom_container elements
        purchase_details_container = tk.Frame(bottom_container, bd=2, relief=tk.RIDGE, bg=self.clr_yellow)
        purchase_details_container.pack(fill='both', expand=True, side=tk.LEFT)

        purchase_summary_container = tk.Frame(bottom_container, bd=2, relief=tk.RIDGE, bg=self.clr_yellow)
        purchase_summary_container.pack(fill='both', expand=True, anchor='w', side=tk.RIGHT)

        purchase_summary_tree_container = tk.Frame(bottom_container, bd=2, relief=tk.RIDGE, bg=self.clr_yellow)
        purchase_summary_tree_container.pack(fill='both', expand=True, side=tk.RIGHT)

        # ********** top_button_container elements *********
        lbl_from_date = tk.Label(top_button_container, text='From Date:', bg=self.clr_yellow)
        lbl_from_date.grid(row=0, column=0, sticky="nw", padx=1, pady=1)
        self.from_date = DateEntry(top_button_container, date_pattern='yyyy-mm-dd', background='yellow',
                                   foreground='black', borderwidth=2, width=10)
        self.from_date.grid(row=1, column=0, sticky="sw", padx=2, pady=1, ipady=3)

        lbl_to_date = tk.Label(top_button_container, text='To Date:', bg=self.clr_yellow)
        lbl_to_date.grid(row=0, column=1, sticky="nw", padx=1, pady=1)
        self.to_date = DateEntry(top_button_container, date_pattern='yyyy-mm-dd', background='yellow',
                                 foreground='black', borderwidth=2, width=10)
        self.to_date.grid(row=1, column=1, sticky="sw", padx=2, pady=1, ipady=3)

        lbl_search_product_code = tk.Label(top_button_container, text="Product Code:", bg=self.clr_yellow)
        lbl_search_product_code.grid(row=0, column=2, columnspan=3, sticky="nw", padx=1, pady=1)

        self.ety_filter_product_code_1 = MaxLengthEntry(top_button_container, maxlength=3, width=4,
                                                        textvariable=self.var_search_product_code_1)
        self.ety_filter_product_code_1.grid(row=1, column=2, sticky="nw", padx=2, pady=2, ipady=5)
        self.ety_filter_product_code_1.bind('<Return>', lambda event: self.validate_entry(event, 3))

        self.ety_filter_product_code_2 = MaxLengthEntry(top_button_container, maxlength=3, width=4,
                                                        textvariable=self.var_search_product_code_2)
        self.ety_filter_product_code_2.grid(row=1, column=3, sticky="nw", padx=2, pady=2, ipady=5)
        self.ety_filter_product_code_2.bind('<Return>', lambda event: self.validate_entry(event, 3))

        self.ety_filter_product_code_3 = MaxLengthEntry(top_button_container, maxlength=2, width=3,
                                                        textvariable=self.var_search_product_code_3)
        self.ety_filter_product_code_3.grid(row=1, column=4, sticky="nw", padx=2, pady=2, ipady=5)
        self.ety_filter_product_code_3.bind('<Return>', lambda event: self.validate_entry(event, 2))

        self.ety_filter_product_code_4 = MaxLengthEntry(top_button_container, maxlength=4, width=5,
                                                        textvariable=self.var_search_product_code_4)
        self.ety_filter_product_code_4.grid(row=1, column=5, sticky="nw", padx=2, pady=2, ipady=5)
        self.ety_filter_product_code_4.bind('<Return>', lambda event: self.validate_entry(event, 4))

        filter_lbl_garment_name = tk.Label(top_button_container, text="Garment Name:", bg=self.clr_yellow)
        filter_lbl_garment_name.grid(row=0, column=6, sticky="nw", padx=1, pady=1)
        self.ety_filter_garment_name = AutocompleteEntry(top_button_container, width=15,
                                                         completevalues=self.garment_list)
        self.ety_filter_garment_name.grid(row=1, column=6, sticky="nw", padx=2, pady=1, ipady=6)
        self.ety_filter_garment_name.bind("<Return>", lambda event: self.filter_purchase(event))

        filter_lbl_product_name = tk.Label(top_button_container, text="Name:", bg=self.clr_yellow)
        filter_lbl_product_name.grid(row=0, column=7, sticky="nw", padx=1, pady=1)
        self.ety_filter_product_name = AutocompleteEntry(top_button_container, width=18,
                                                         completevalues=self.product_name_list)
        self.ety_filter_product_name.grid(row=1, column=7, sticky="nw", padx=2, pady=1, ipady=6)
        self.ety_filter_product_name.bind("<Return>", lambda event: self.filter_purchase(event))

        filter_lbl_product_type = tk.Label(top_button_container, text="Type:", bg=self.clr_yellow)
        filter_lbl_product_type.grid(row=0, column=8, sticky="nw", padx=1, pady=1)
        self.ety_filter_product_type = AutocompleteEntry(top_button_container, width=20,
                                                         completevalues=self.product_type_list)
        self.ety_filter_product_type.grid(row=1, column=8, sticky="nw", padx=2, pady=1, ipady=6)
        self.ety_filter_product_type.bind("<Return>", lambda event: self.filter_purchase(event))

        filter_lbl_product_size = tk.Label(top_button_container, text="Size:", bg=self.clr_yellow)
        filter_lbl_product_size.grid(row=0, column=9, sticky="nw", padx=1, pady=1)
        self.ety_filter_product_size = AutocompleteEntry(top_button_container, width=12,
                                                         completevalues=self.product_size_list)
        self.ety_filter_product_size.grid(row=1, column=9, sticky="nw", padx=2, pady=1, ipady=6)
        self.ety_filter_product_size.bind("<Return>", lambda event: self.filter_purchase(event))

        filter_lbl_product_price = tk.Label(top_button_container, text="Price:", bg=self.clr_yellow)
        filter_lbl_product_price.grid(row=0, column=10, sticky="nw", padx=1, pady=1)
        self.ety_filter_product_sell_price = AutocompleteEntry(top_button_container, width=10,
                                                               completevalues=self.product_sell_price_list)
        self.ety_filter_product_sell_price.grid(row=1, column=10, sticky="nw", padx=2, pady=1, ipady=6)
        self.ety_filter_product_sell_price.bind("<Return>", lambda event: self.filter_purchase(event))

        chk_include_date = tk.Checkbutton(top_button_container, text='Include Date', variable=self.var_include_date,
                                          onvalue=1, offvalue=0, bg=self.clr_yellow)
        chk_include_date.grid(row=0, column=11, columnspan=2, sticky="sw", padx=2, pady=1)

        btn_filter = tk.Button(top_button_container, text="Apply Filter", bg=self.clr_fuchsia, fg='white',
                               command=self.filter_purchase)
        btn_filter.grid(row=1, column=11, sticky="sw", padx=2, pady=1)

        btn_clear_filter = tk.Button(top_button_container, text="Clear", command=self.reload_purchase)
        btn_clear_filter.grid(row=1, column=12, sticky="news", padx=2, pady=1)

        # ********** tree_containers elements *********
        header = ('#', 'PURCHASE_DATE', 'GARMENT_NAME', 'PRODUCT_CODE', 'PRODUCT_NAME', 'PRODUCT_TYPE',
                  'SIZE', 'PRICE', 'QTY', 'AMOUNT', '')
        self.purchase_tree = ttk.Treeview(purchase_tree_container, columns=header, height=8, show="headings",
                                          selectmode="browse")
        vsb = ttk.Scrollbar(purchase_tree_container, orient="vertical", command=self.purchase_tree.yview)
        hsb = ttk.Scrollbar(purchase_tree_container, orient="horizontal", command=self.purchase_tree.xview)

        self.purchase_tree.configure(yscrollcommand=vsb.set, xscrollcommand=hsb.set)
        style = ttk.Style()
        style.configure("Treeview.Heading", font=('Calibri', 12))
        style.configure("Treeview", font=('Calibri', 12), rowheight=25)

        self.purchase_tree.configure(yscrollcommand=vsb.set, xscrollcommand=hsb.set)
        self.purchase_tree.grid(column=0, row=0, sticky='nsew', in_=purchase_tree_container)

        vsb.grid(column=1, row=0, sticky='ns', in_=purchase_tree_container)
        hsb.grid(column=0, row=1, sticky='ew', in_=purchase_tree_container)

        purchase_tree_container.grid_columnconfigure(0, weight=1)
        purchase_tree_container.grid_rowconfigure(0, weight=1)

        self.purchase_tree.heading("0", text="#")
        self.purchase_tree.heading("1", text="PURCHASE_DATE")
        self.purchase_tree.heading("2", text="GARMENT_NAME")
        self.purchase_tree.heading("3", text="PRODUCT_CODE")
        self.purchase_tree.heading("4", text="PRODUCT_NAME")
        self.purchase_tree.heading("5", text="PRODUCT_TYPE")
        self.purchase_tree.heading("6", text="SIZE")
        self.purchase_tree.heading("7", text="PRICE")
        self.purchase_tree.heading("8", text="QTY")
        self.purchase_tree.heading("9", text="AMOUNT")

        self.purchase_tree.column(0, anchor='center', width="20")
        self.purchase_tree.column(1, anchor=tk.W, width="120")
        self.purchase_tree.column(2, anchor=tk.W, width="200")
        self.purchase_tree.column(3, anchor=tk.W, width="120")
        self.purchase_tree.column(4, anchor=tk.W, width="140")
        self.purchase_tree.column(5, anchor=tk.W, width="180")
        self.purchase_tree.column(6, anchor='center', width="80")
        self.purchase_tree.column(7, anchor=tk.E, width="80")
        self.purchase_tree.column(8, anchor='center', width="50")
        self.purchase_tree.column(9, anchor=tk.E, width="120")
        self.purchase_tree.column(10, anchor='center', width="2")

        self.reload_purchase()

        numeric_cols = ['#', 'PRICE', 'QTY', 'AMOUNT']
        for col in header:
            if col in numeric_cols:
                self.purchase_tree.heading(col, text=col,
                                           command=lambda _col=col: self.sort_treeview(
                                               self.purchase_tree, _col,
                                               numeric_sort=True, reverse=False))
            else:
                self.purchase_tree.heading(col, text=col,
                                           command=lambda _col=col: self.sort_treeview(
                                               self.purchase_tree, _col,
                                               numeric_sort=False, reverse=False))

        self.purchase_tree.tag_configure("evenrow", background='#fbefcc')
        self.purchase_tree.tag_configure("oddrow", background='white', foreground='black')
        self.purchase_tree.bind('<<TreeviewSelect>>', self.on_tree_select)

        # ********** Purchase Details *********
        purchase_details_container.grid_columnconfigure(0, weight=1)
        purchase_details_container.grid_columnconfigure(3, weight=1)

        lbl_purchase_details = tk.Label(purchase_details_container, text="Product Details", bg=self.clr_blueiris,
                                        fg="white")
        lbl_purchase_details.grid(row=0, column=1, columnspan=2, sticky="news", padx=3, pady=3)
        lbl_purchase_details.config(font=("Calibri bold", 12))

        lbl_purchase_date = tk.Label(purchase_details_container, text="Purchase Date: ", bg=self.clr_yellow)
        lbl_purchase_date.grid(row=1, column=1, sticky="nw", padx=3, pady=1)
        ety_purchase_date = tk.Entry(purchase_details_container, width=15, textvariable=self.var_purchase_date,
                                     state='disabled')
        ety_purchase_date.grid(row=1, column=2, sticky="nw", padx=3, pady=1)

        lbl_garment_name = tk.Label(purchase_details_container, text="Garment Name: ", bg=self.clr_yellow)
        lbl_garment_name.grid(row=2, column=1, sticky="nw", padx=3, pady=1)
        ety_garment_name = tk.Entry(purchase_details_container, textvariable=self.var_garment_name, state='disabled')
        ety_garment_name.grid(row=2, column=2, sticky="nw", padx=3, pady=1)

        lbl_product_code = tk.Label(purchase_details_container, text="Product Code: ", bg=self.clr_yellow)
        lbl_product_code.grid(row=3, column=1, sticky="nw", padx=3, pady=1)
        ety_product_code = tk.Entry(purchase_details_container, width=15, textvariable=self.var_product_code,
                                    state='disabled')
        ety_product_code.grid(row=3, column=2, sticky="nw", padx=3, pady=1)

        lbl_product_name = tk.Label(purchase_details_container, text="Product Name: ", bg=self.clr_yellow)
        lbl_product_name.grid(row=4, column=1, sticky="nw", padx=3, pady=1)
        ety_product_name = tk.Entry(purchase_details_container, textvariable=self.var_product_name, state='disabled')
        ety_product_name.grid(row=4, column=2, sticky="nw", padx=3, pady=1)

        lbl_product_type = tk.Label(purchase_details_container, text="Product Type: ", bg=self.clr_yellow)
        lbl_product_type.grid(row=5, column=1, sticky="nw", padx=3, pady=1)
        ety_product_type = tk.Entry(purchase_details_container, textvariable=self.var_product_type, state='disabled')
        ety_product_type.grid(row=5, column=2, sticky="nw", padx=3, pady=1)

        lbl_product_size = tk.Label(purchase_details_container, text="Size: ", bg=self.clr_yellow)
        lbl_product_size.grid(row=6, column=1, sticky="nw", padx=3, pady=1)
        ety_product_size = tk.Entry(purchase_details_container, width=10, textvariable=self.var_product_size,
                                    state='disabled')
        ety_product_size.grid(row=6, column=2, sticky="nw", padx=3, pady=1)

        lbl_selling_price = tk.Label(purchase_details_container, text="Price: ", bg=self.clr_yellow)
        lbl_selling_price.grid(row=7, column=1, sticky="nw", padx=3, pady=1)
        ety_selling_price = tk.Entry(purchase_details_container, width=10, textvariable=self.var_selling_price,
                                     state='disabled')
        ety_selling_price.grid(row=7, column=2, sticky="nw", padx=3, pady=1)

        lbl_quantity = tk.Label(purchase_details_container, text="Quantity: ", bg=self.clr_yellow)
        lbl_quantity.grid(row=8, column=1, sticky="nw", padx=3, pady=1)
        ety_quantity = tk.Entry(purchase_details_container, width=5, textvariable=self.var_quantity, state='disabled')
        ety_quantity.grid(row=8, column=2, sticky="nw", padx=3, pady=1)

        lbl_amount = tk.Label(purchase_details_container, text="Amount: ", bg=self.clr_yellow)
        lbl_amount.grid(row=9, column=1, sticky="nw", padx=3, pady=1)
        ety_amount = tk.Entry(purchase_details_container, width=10, textvariable=self.var_amount, state='disabled')
        ety_amount.grid(row=9, column=2, sticky="nw", padx=3, pady=1)

        purchase_summary_container.grid_columnconfigure(0, weight=1)
        purchase_summary_container.grid_columnconfigure(2, weight=1)

        lbl_purchase_summary = tk.Label(purchase_summary_container, text="Purchase Summary", bg=self.clr_blueiris,
                                        fg="white")
        lbl_purchase_summary.grid(row=0, column=1, sticky="news", padx=3, pady=3)
        lbl_purchase_summary.config(font=("Calibri bold", 14))

        lbl_purchase_date = tk.Label(purchase_summary_container, text="Purchase Date:", bg=self.clr_yellow)
        lbl_purchase_date.grid(row=1, column=1, sticky="nw", padx=3, pady=1)
        ety_purchase_date = tk.Entry(purchase_summary_container, width=12, textvariable=self.var_purchase_date,
                                     state='disabled')
        ety_purchase_date.grid(row=2, column=1, sticky="nw", padx=3, pady=1, ipady=6)

        lbl_total_quantity = tk.Label(purchase_summary_container, text="Total Quantity:", bg=self.clr_yellow)
        lbl_total_quantity.grid(row=3, column=1, sticky="nw", padx=3, pady=1)
        ety_total_quantity = tk.Entry(purchase_summary_container, width=12, textvariable=self.var_total_quantity,
                                      state='disabled')
        ety_total_quantity.grid(row=4, column=1, sticky="nw", padx=3, pady=1, ipady=6)

        lbl_total_amount = tk.Label(purchase_summary_container, text="Total Amount:", bg=self.clr_yellow)
        lbl_total_amount.grid(row=5, column=1, sticky="nw", padx=3, pady=1)
        ety_total_amount = tk.Entry(purchase_summary_container, width=12, textvariable=self.var_total_amount,
                                    state='disabled')
        ety_total_amount.grid(row=6, column=1, sticky="nw", padx=3, pady=1, ipady=6)
        self.var_total_amount.set(format_currency(0, 'INR', locale='en_IN'))

        btn_get_purchase_summary = tk.Button(purchase_summary_container, text="Get Purchase Summary",
                                             bg=self.clr_fuchsia, fg='white', command=self.get_purchase_summary)
        btn_get_purchase_summary.grid(row=7, column=1, sticky="news", padx=3, pady=10)

        # monthly_summary_tree_container
        summary_tree = tk.Frame(purchase_summary_tree_container, pady=1, relief=tk.RIDGE, bg=self.clr_yellow)
        summary_tree.pack(fill='both', expand=True, side=tk.RIGHT)

        header = ('#', 'PRODUCT_CODE', 'PRODUCT', 'TYPE', 'SIZE', 'PRICE', 'QTY', 'AMOUNT', '')
        self.summary_tree = ttk.Treeview(summary_tree, columns=header, height=5, show="headings",
                                         selectmode="browse")
        vsb = ttk.Scrollbar(summary_tree, orient="vertical", command=self.summary_tree.yview)
        hsb = ttk.Scrollbar(summary_tree, orient="horizontal", command=self.summary_tree.xview)

        self.summary_tree.configure(yscrollcommand=vsb.set, xscrollcommand=hsb.set)
        self.summary_tree.grid(column=0, row=0, sticky='nsew')

        vsb.grid(column=1, row=0, sticky='ns')
        hsb.grid(column=0, row=1, sticky='ew')

        summary_tree.grid_columnconfigure(0, weight=1)
        summary_tree.grid_rowconfigure(0, weight=1)

        self.summary_tree.heading("0", text="#")
        self.summary_tree.heading("1", text="PRODUCT_CODE")
        self.summary_tree.heading("2", text="PRODUCT")
        self.summary_tree.heading("3", text="TYPE")
        self.summary_tree.heading("4", text="SIZE")
        self.summary_tree.heading("5", text="PRICE")
        self.summary_tree.heading("6", text="QTY")
        self.summary_tree.heading("7", text="AMOUNT")
        self.summary_tree.heading("8", text="")

        self.summary_tree.column(0, anchor='center', minwidth=30, width=30)
        self.summary_tree.column(1, anchor=tk.W, minwidth=50, width=120)
        self.summary_tree.column(2, anchor=tk.W, minwidth=80, width=100)  # Product
        self.summary_tree.column(3, anchor=tk.W, minwidth=130, width=130)  # Type
        self.summary_tree.column(4, anchor='center', minwidth=50, width=50)    # Size
        self.summary_tree.column(5, anchor=tk.E, minwidth=60, width=60)  # Price
        self.summary_tree.column(6, anchor='center', minwidth=40, width=40)  # Qty
        self.summary_tree.column(7, anchor=tk.E, minwidth=80, width=80)  # Amount
        self.summary_tree.column(8, anchor='center', width=1)
        self.summary_tree["displaycolumns"] = (0, 1, 2, 3, 4, 5, 6, 7, 8)

        numeric_cols = ['#', 'PRICE', 'QTY', 'AMOUNT']
        for col in header:
            if col in numeric_cols:
                self.summary_tree.heading(col, text=col,
                                          command=lambda _col=col: self.sort_treeview(
                                               self.summary_tree, _col,
                                               numeric_sort=True, reverse=False))
            else:
                self.summary_tree.heading(col, text=col,
                                          command=lambda _col=col: self.sort_treeview(
                                               self.summary_tree, _col,
                                               numeric_sort=False, reverse=False))

        self.summary_tree.tag_configure("evenrow", background='#fbefcc')
        self.summary_tree.tag_configure("oddrow", background='white', foreground='black')

    def get_purchase_summary(self):
        selected_row = self.purchase_tree.item(self.purchase_tree.selection())['values']

        if selected_row:
            sel_purchase_date = str(datetime.strptime(selected_row[1], '%d-%b-%Y'))[:10]
            sel_garment_name = selected_row[2]

            rows = Purchase.get_purchase_summary(purchase_date=sel_purchase_date, garment_name=sel_garment_name)

            self.summary_tree.delete(*self.summary_tree.get_children())
            if rows:
                row_num = 0
                total_quantity = 0
                total_amount = 0.0
                for row in rows:
                    row_num += 1

                    purchase, product = row
                    rw = (
                        row_num, purchase.product_code, product.product_name, product.product_type,
                        product.product_size, round(product.selling_price, 2), purchase.quantity,
                        round(product.selling_price * purchase.quantity, 2))

                    total_quantity = total_quantity + int(purchase.quantity)
                    total_amount = total_amount + float(product.selling_price * purchase.quantity)

                    if row_num % 2 == 0:
                        self.summary_tree.insert("", tk.END, values=rw, tags=('evenrow', product.product_code))
                    else:
                        self.summary_tree.insert("", tk.END, values=rw, tags=('oddrow', product.product_code))

                self.var_total_quantity.set(total_quantity)
                self.var_total_amount.set(format_currency(total_amount, 'INR', locale='en_IN'))

    def reload_lookup(self):
        garments = Purchase.get_all_garment_name()
        for garment in garments:
            self.garment_list.append(garment.garment_name)

        products = LkpProductName.get_all_product_names()
        for product in products:
            self.product_name_list.append(product.product_name)

        products = LkpProductType.get_all_product_types()
        for product in products:
            self.product_type_list.append(product.product_type)

        products = LkpProductSize.get_all_product_sizes()
        for product in products:
            self.product_size_list.append(product.product_size)

        products = Product.get_product_sell_price_list()
        for product in products:
            self.product_sell_price_list.append(str(round(product.selling_price, 2)))

    @staticmethod
    def validate_entry(event=None, length=0):
        if len(event.widget.get().strip()) == length:
            event.widget.tk_focusNext().focus()

    def filter_purchase(self, event=None):
        product_code = f"{self.ety_filter_product_code_1.get().strip()}" \
                       f"-{self.ety_filter_product_code_2.get().strip()}" \
                       f"-{self.ety_filter_product_code_3.get().strip()}" \
                       f"-{self.ety_filter_product_code_4.get().strip()}"
        garment_name = self.ety_filter_garment_name.get().strip()
        product_name = self.ety_filter_product_name.get().strip()
        product_type = self.ety_filter_product_type.get().strip()
        product_size = self.ety_filter_product_size.get().strip()
        selling_price = str(self.ety_filter_product_sell_price.get().strip())

        product_code = product_code.replace("---", "")  # if product code is not entered

        if selling_price:
            selling_price = float(selling_price)
        else:
            selling_price = 0.0

        if product_code == "" and garment_name == "" and product_name == "" and product_type == "" \
                and product_size == "" and selling_price == 0.0 and not self.var_include_date.get():
            self.reload_purchase()
        else:
            if self.var_include_date.get():
                rows = Purchase.search_purchase(from_date=self.from_date.get(),
                                                to_date=self.to_date.get(),
                                                product_code=product_code,
                                                garment_name=garment_name,
                                                product_name=product_name,
                                                product_type=product_type,
                                                product_size=product_size,
                                                selling_price=selling_price)
            else:
                rows = Purchase.search_purchase(product_code=product_code,
                                                garment_name=garment_name,
                                                product_name=product_name,
                                                product_type=product_type,
                                                product_size=product_size,
                                                selling_price=selling_price)

            self.purchase_tree.delete(*self.purchase_tree.get_children())
            if rows:
                row_num = 0
                for row in rows:
                    row_num += 1

                    purchase, product = row
                    purchase_date = datetime.strftime(purchase.purchase_date, '%d-%b-%Y')
                    rw = (
                        row_num, purchase_date, purchase.garment_name, purchase.product_code,
                        product.product_name,
                        product.product_type, product.product_size, round(product.selling_price, 2), purchase.quantity,
                        round(product.selling_price * purchase.quantity, 2))

                    if row_num % 2 == 0:
                        self.purchase_tree.insert("", tk.END, values=rw, tags=('evenrow', product.product_code))
                    else:
                        self.purchase_tree.insert("", tk.END, values=rw, tags=('oddrow', product.product_code))
            else:
                pass

    def reload_purchase(self):
        self.var_include_date.set(0)

        self.ety_filter_product_code_1.delete(0, tk.END)
        self.ety_filter_product_code_2.delete(0, tk.END)
        self.ety_filter_product_code_3.delete(0, tk.END)
        self.ety_filter_product_code_4.delete(0, tk.END)

        self.ety_filter_garment_name.delete(0, tk.END)
        self.ety_filter_product_name.delete(0, tk.END)
        self.ety_filter_product_type.delete(0, tk.END)
        self.ety_filter_product_size.delete(0, tk.END)
        self.ety_filter_product_sell_price.delete(0, tk.END)

        self.purchase_tree.delete(*self.purchase_tree.get_children())

        rows = Purchase.get_all_purchase()
        row_num = 0
        for row in rows:
            row_num += 1

            purchase, product = row
            purchase_date = datetime.strftime(purchase.purchase_date, '%d-%b-%Y')
            rw = (row_num, purchase_date, purchase.garment_name, purchase.product_code, product.product_name,
                  product.product_type, product.product_size, round(product.selling_price, 2), purchase.quantity,
                  round(product.selling_price * purchase.quantity, 2))

            if row_num % 2 == 0:
                self.purchase_tree.insert("", tk.END, values=rw, tags=('evenrow', product.product_code))
            else:
                self.purchase_tree.insert("", tk.END, values=rw, tags=('oddrow', product.product_code))

    def on_tree_select(self, event):
        self.selected_row = event.widget.selection()

        purchase = self.purchase_tree.item(self.selected_row)['values']

        if purchase:
            self.var_purchase_date.set(purchase[1])
            self.var_garment_name.set(purchase[2])
            self.var_product_code.set(purchase[3])
            self.var_product_name.set(purchase[4])
            self.var_product_type.set(purchase[5])
            self.var_product_size.set(purchase[6])
            self.var_selling_price.set(purchase[7])
            self.var_quantity.set(purchase[8])
            self.var_amount.set(purchase[9])
Beispiel #4
0
FrTotal.place(x=401, y=550, width=454, height=40)
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# ---------------------------------------------------------------------------------------------------------------------
# Data Entry para chamar o Calendário com a data atual
LblData = Label(FrData,
                text="DATA:",
                bg=Cinza40,
                fg=Branco,
                font=Fonte11B,
                justify=LEFT)
LblData.place(x=3, y=2)
Dt_Atual = DateEntry(FrData,
                     date_pattern='dd/MM/yyyy',
                     width=17,
                     bg=Cinza_Novo,
                     fg=Branco,
                     font=Fonte12,
                     headersbackground=Branco,
                     borderwidth=2,
                     selectbackground=Cinza_Novo,
                     headersforeground=Cinza60)
Dt_Atual.place(x=60, y=3)
# ---------------------------------------------------------------------------------------------------------------------
# ----- LABELFRAME PEDIDOS --------------------------------------------------------------------------------------------
# Label e Entry do NÚMERO DO PEDIDO
Var_Cod_Nota = StringVar()
LblCod_Nota = Label(Fr_Cabecalho,
                    text="NUM° NOTA:",
                    font=Fonte11B,
                    bg=Cinza40,
                    fg=Branco)
LblCod_Nota.place(x=5, y=8)
Beispiel #5
0
    def __init__(self, parent):
        Frame.__init__(self, parent)
        self.parent = parent
        self.client = self.parent.client
        self.clientTextVar = StringVar()
        self.clientTextVar.set(self.client)

        self.loadData()

        f1 = Frame(self)
        f1.pack(fill=X)

        # Labels for each field
        LABEL_WIDTH1 = 6
        LABEL_WIDTH2 = 5
        LABEL_WIDTH3 = 5
        LABEL_WIDTH4 = 16
        LABEL_WIDTH5 = 5
        LABEL_WIDTH6 = 8
        LABEL_WIDTH7 = 8
        LABEL_WIDTH8 = 10

        Label(f1, anchor="w", width=LABEL_WIDTH1, text="Client").grid(row=0,
                                                                      column=0)
        Label(f1,
              anchor="w",
              width=LABEL_WIDTH2,
              textvariable=self.clientTextVar).grid(row=0, column=1)

        Label(f1, anchor="w", width=LABEL_WIDTH1, text="Date").grid(row=1,
                                                                    column=0)
        Label(f1, anchor="w", width=LABEL_WIDTH1, text="Tape").grid(row=2,
                                                                    column=0)

        self.date = DateEntry(f1)
        self.date.grid(row=1, column=1, padx=2)
        self.tape = Text(f1, width=12, height=1)
        self.tape.grid(row=2, column=1, padx=2)

        # Delete button
        self.delete = Button(f1, text="Delete", fg="Black", state="disabled")
        self.delete.grid(row=4, column=1)

        Label(f1, anchor="w", width=LABEL_WIDTH2, text="LBS").grid(row=1,
                                                                   column=2)
        Label(f1, anchor="w", width=LABEL_WIDTH2, text="KGS").grid(row=2,
                                                                   column=2)
        Label(f1, anchor="w", width=LABEL_WIDTH2, text="BSA").grid(row=3,
                                                                   column=2)
        Label(f1, anchor="w", width=LABEL_WIDTH2, text="HR").grid(row=4,
                                                                  column=2)
        Label(f1, anchor="w", width=LABEL_WIDTH2, text="RR").grid(row=5,
                                                                  column=2)

        self.lbs = Text(f1, width=4, height=1)
        self.lbs.grid(row=1, column=3, padx=2)
        self.kgs = Text(f1, width=4, height=1)
        self.kgs.grid(row=2, column=3, padx=2)
        self.bsa = Text(f1, width=4, height=1)
        self.bsa.grid(row=3, column=3, padx=2)
        self.hr = Text(f1, width=4, height=1)
        self.hr.grid(row=4, column=3, padx=2)
        self.rr = Text(f1, width=4, height=1)
        self.rr.grid(row=5, column=3, padx=2)

        Label(f1, anchor="w", width=LABEL_WIDTH3, text="Ao").grid(row=1,
                                                                  column=4)
        Label(f1, anchor="w", width=LABEL_WIDTH3, text="LA").grid(row=2,
                                                                  column=4)
        Label(f1, anchor="w", width=LABEL_WIDTH3, text="LA2").grid(row=3,
                                                                   column=4)
        Label(f1, anchor="w", width=LABEL_WIDTH3, text="LA2D").grid(row=4,
                                                                    column=4)
        Label(f1, anchor="w", width=LABEL_WIDTH3, text="EPSS").grid(row=5,
                                                                    column=4)

        self.ao = Text(f1, width=4, height=1)
        self.ao.grid(row=1, column=5, padx=2)
        self.la = Text(f1, width=4, height=1)
        self.la.grid(row=2, column=5, padx=2)
        self.la2 = Text(f1, width=4, height=1)
        self.la2.grid(row=3, column=5, padx=2)
        self.la2d = Text(f1, width=4, height=1)
        self.la2d.grid(row=4, column=5, padx=2)
        self.epss = Text(f1, width=4, height=1)
        self.epss.grid(row=5, column=5, padx=2)

        Label(f1, anchor="w", width=LABEL_WIDTH4,
              text="Calculation Group").grid(row=1, column=6)
        self.calcgroup = ttk.Combobox(f1,
                                      width=LABEL_WIDTH4,
                                      values=CLINICIANS)
        self.calcgroup.grid(row=2, column=6, padx=20)

        Label(f1, anchor="w", width=LABEL_WIDTH5, text="RV").grid(row=1,
                                                                  column=7)
        Label(f1, anchor="w", width=LABEL_WIDTH5, text="IVS").grid(row=2,
                                                                   column=7)
        Label(f1, anchor="w", width=LABEL_WIDTH5, text="LVID").grid(row=3,
                                                                    column=7)
        Label(f1, anchor="w", width=LABEL_WIDTH5, text="LVW").grid(row=4,
                                                                   column=7)
        Label(f1, anchor="w", width=LABEL_WIDTH5, text="VIDX").grid(row=5,
                                                                    column=7)

        Label(f1, width=LABEL_WIDTH6, text="Systole").grid(row=0, column=8)

        self.rv = CustomText(f1, width=LABEL_WIDTH6, height=1)
        self.rv.grid(row=1, column=8, padx=2)
        self.ivs = CustomText(f1, width=LABEL_WIDTH6, height=1)
        self.ivs.grid(row=2, column=8, padx=2)
        self.lvid = CustomText(f1, width=LABEL_WIDTH6, height=1)
        self.lvid.grid(row=3, column=8, padx=2)
        self.lvw = CustomText(f1, width=LABEL_WIDTH6, height=1)
        self.lvw.grid(row=4, column=8, padx=2)
        self.vidxtext = StringVar()
        self.vidx = Entry(f1,
                          textvariable=self.vidxtext,
                          width=LABEL_WIDTH8,
                          state='readonly')
        self.vidx.grid(row=5, column=8, padx=2)

        Label(f1, width=LABEL_WIDTH7, text="Diastole").grid(row=0, column=9)

        self.rv2 = CustomText(f1, width=LABEL_WIDTH7, height=1)
        self.rv2.grid(row=1, column=9, padx=2)
        self.ivs2 = CustomText(f1, width=LABEL_WIDTH7, height=1)
        self.ivs2.grid(row=2, column=9, padx=2)
        self.lvid2 = CustomText(f1, width=LABEL_WIDTH7, height=1)
        self.lvid2.grid(row=3, column=9, padx=2)
        self.lvw2 = CustomText(f1, width=LABEL_WIDTH7, height=1)
        self.lvw2.grid(row=4, column=9, padx=2)
        self.vidxtext2 = StringVar()
        self.vidx2 = Entry(f1,
                           textvariable=self.vidxtext2,
                           width=LABEL_WIDTH8,
                           state='readonly')
        self.vidx2.grid(row=5, column=9, padx=2)

        self.rv.bind("<<TextModified>>", self.updateDeltas)
        self.rv2.bind("<<TextModified>>", self.updateDeltas)
        self.ivs.bind("<<TextModified>>", self.updateDeltas)
        self.ivs2.bind("<<TextModified>>", self.updateDeltas)
        self.lvid.bind("<<TextModified>>", self.updateDeltas)
        self.lvid2.bind("<<TextModified>>", self.updateDeltas)
        self.lvw.bind("<<TextModified>>", self.updateDeltas)
        self.lvw2.bind("<<TextModified>>", self.updateDeltas)

        Label(f1, width=LABEL_WIDTH8, text="Δ").grid(row=0, column=10)

        self.delt1 = StringVar()
        self.delt2 = StringVar()
        self.delt3 = StringVar()
        self.delt4 = StringVar()
        self.ivs3 = Entry(f1,
                          textvariable=self.delt1,
                          width=LABEL_WIDTH8,
                          state='readonly')
        self.ivs3.grid(row=2, column=10, padx=2)
        self.lvid3 = Entry(f1,
                           textvariable=self.delt2,
                           width=LABEL_WIDTH8,
                           state='readonly')
        self.lvid3.grid(row=3, column=10, padx=2)
        self.lvw3 = Entry(f1,
                          textvariable=self.delt3,
                          width=LABEL_WIDTH8,
                          state='readonly')
        self.lvw3.grid(row=4, column=10, padx=2)
        self.vidx3 = Entry(f1,
                           textvariable=self.delt4,
                           width=LABEL_WIDTH8,
                           state='readonly')
        self.vidx3.grid(row=5, column=10, padx=2)

        self.indices = Button(f1,
                              text="Indices",
                              fg="Black",
                              command=self.indices)
        self.indices.grid(row=2, column=11)
        self.submit = Button(f1,
                             text="Submit",
                             fg="Black",
                             command=self.submit)
        self.submit.grid(row=3, column=11)
        self.clearButton = Button(f1,
                                  text="New",
                                  fg="Black",
                                  command=self.clearFields)
        self.clearButton.grid(row=4, column=11)

        # Fills with the form information.
        f2 = ScrollableFrame(self, height=150)

        # Listbox all the basic pet information
        self.numEntries = 0
        self.listBox = ttk.Treeview(f2.scrollable_frame,
                                    columns=list(self.data.columns),
                                    show='headings')

        i = 0
        for col in self.data.columns[1:]:
            self.listBox.heading(i, text=col)
            self.listBox.column(i, width=columnWidth(len(self.data.columns)))
            i += 1
        for item in self.data.values:
            if (item[0] == self.client):
                self.listBox.insert("", "end", values=list(item)[1:])
                self.numEntries += 1
        self.listBox.configure(height=max(self.numEntries, 6))

        # Get info on click
        self.listBox.bind("<Double-1>", self.onSelection)

        self.listBox.pack(fill=BOTH, expand=True)
        f2.pack(fill=BOTH, expand=True, pady=10)
Beispiel #6
0
class Application(tk.Frame):
    def __init__(self, parent, *args, **kwargs):
        tk.Frame.__init__(self, parent, *args, **kwargs)
        self.parent = parent
        self.fileSelect = ""
        self.parent.title("Pronóstico de Ventas")
        self.menubar = tk.Menu(parent)
        self.filemenu = tk.Menu(self.menubar, tearoff = 0)
        self.filemenu.add_command(label = "Cargar data", command = self.selectFile)

        self.filemenu.add_separator()
        #self.filemenu.add_command(label = "Guardar reporte", command = self.saveReport)
        #self.filemenu.add_separator()
        #self.filemenu.add_command(label = "Guardar model", command = self.saveModel)
        #self.filemenu.add_separator()
        self.filemenu.add_command(label = "Salir", command = root.quit)
        self.menubar.add_cascade(label = "Dataset", menu = self.filemenu)
        self.editmenu = tk.Menu(self.menubar, tearoff=0)

        self.editmenu.add_command(label = "Entrena Red Neuronal", command = self.entrenamiento)

        self.menubar.add_cascade(label = "Entrenamiento", menu = self.editmenu)

        self.helpmenu = tk.Menu(self.menubar, tearoff=0)
        self.helpmenu.add_command(label = "Acerca de")
        self.menubar.add_cascade(label = "Ayuda", menu = self.helpmenu)

        self.parent.config(menu = self.menubar)
        
        self.text1 = StringVar()
        self.text1.set('Cargar archivo .csv')
        
        self.texto1 = ttk.Label(self.parent, textvariable=self.text1)
        self.texto1.grid(row=0)

        self.labelR = Label(self.parent,text="Ingrese rango de fechas: ")
        self.labelR.grid(row=1, column=0)

        self.cal1 = DateEntry(self.parent,dateformat=3,width=12, background='darkblue',foreground='white', borderwidth=4,year =2020,month=3,day=1)
        self.cal1.grid(row=2, column=0)

        #self.cal2 = DateEntry(self.parent,dateformat=3,width=12, background='darkblue',foreground='white', borderwidth=4,yeaar =2020,month=2,day=29)
        #self.cal2.grid(row=1, column=2)

        self.butInter = Button(self.parent, text ="Pronóstico", command = self.graficar_predicciones)
        self.butInter.grid(row=2, column=1)

        ttk.Separator(self.parent, orient=HORIZONTAL).grid(row=1, column=3,columnspan=4, ipadx=250)

        self.lf = ttk.Labelframe(self.parent, text='Ventas')
        self.lf.grid(row=3, column=0, sticky='nwes', padx=3, pady=3)
    
    def saveReport(self):
        if path.exists('report.png'):
            workbook = xlsxwriter.Workbook('reporte.xlsx')
            worksheet = workbook.add_worksheet()
            workbook.close()
            wb = openpyxl.load_workbook('reporte.xlsx')
            ws = wb.active

            img = openpyxl.drawing.image.Image('report.png')
            #img.anchor(ws.cell('A1'))

            ws.add_image(img)
            wb.save('reporte.xlsx')


    def saveModel(self):
        print("GUARDADO")

    def graficar_predicciones(self):
        ##INTERPRETACION

        for widget in self.lf.winfo_children():
            widget.destroy()

        PASOS = 7
        fechaIni = str(self.cal1.get_date() - datetime.timedelta(days=15))
        fechaFin = str(self.cal1.get_date() - datetime.timedelta(days=1))
        #fechaFin = str(self.cal2.get_date())
        print(fechaFin)
        print(fechaIni)
        self.df = pd.read_csv('temp.csv',  parse_dates=[0], header=None,index_col=0, names=['fecha','unidades'])
        self.df['weekday']=[x.weekday() for x in self.df.index]
        self.df['month']=[x.month for x in self.df.index]
        ultimosDias = self.df[fechaIni:fechaFin]
        print("ULTIMOS DIAS")
        print(ultimosDias)
        values = ultimosDias['unidades'].values

        values = values.astype('float32')
        scaler = MinMaxScaler(feature_range=(-1, 1))

        values=values.reshape(-1, 1) 
        scaled = scaler.fit_transform(values)

        reframed = self.series_to_supervised(scaled, PASOS, 1)
        reframed.reset_index(inplace=True, drop=True)

        contador=0
        reframed['weekday']=ultimosDias['weekday']
        reframed['month']=ultimosDias['month']

        for i in range(reframed.index[0],reframed.index[-1]):
            reframed['weekday'].loc[contador]=ultimosDias['weekday'][i+8]
            reframed['month'].loc[contador]=ultimosDias['month'][i+8]
            contador=contador+1
        reframed.head()
        
        reordenado=reframed[ ['weekday','month','var1(t-7)','var1(t-6)','var1(t-5)','var1(t-4)','var1(t-3)','var1(t-2)','var1(t-1)'] ]
        reordenado.dropna(inplace=True)
        values = reordenado.values
        x_test = values[5:, :]
        x_test = x_test.reshape((x_test.shape[0], 1, x_test.shape[1]))
        

        ultDiaSemana = reordenado.weekday[len(reordenado)-1]

        def agregarNuevoValor(x_test,nuevoValor,ultDiaSemana):
            for i in range(x_test.shape[2]-3):
                x_test[0][0][i+2] = x_test[0][0][i+3]
            ultDiaSemana=ultDiaSemana+1
            if ultDiaSemana>6:
                ultDiaSemana=0
            x_test[0][0][0]=ultDiaSemana
            x_test[0][0][1]=12
            x_test[0][0][x_test.shape[2]-1]=nuevoValor
            return x_test,ultDiaSemana

        results=[]
        if not path.exists("model.h5"):
            print("No existe el modelo pre-entrenado")
            return False
        
        self.model = load_model('model.h5')

        for i in range(7):
            dia=np.array([x_test[0][0][0]])
            mes=np.array([x_test[0][0][1]])
            valores=np.array([x_test[0][0][2:9]])
            parcial=self.model.predict([dia, mes, valores])
            results.append(parcial[0])
            print('pred',i,x_test)
            x_test,ultDiaSemana=agregarNuevoValor(x_test,parcial[0],ultDiaSemana)

        adimen = [x for x in results]
        inverted = scaler.inverse_transform(adimen)
        #inverted
        prediccionProxSemana = pd.DataFrame(inverted)
        prediccionProxSemana.columns = ['pronostico']
        prediccionProxSemana.plot()
        prediccionProxSemana.to_csv('pronostico.csv')

        predicciones = prediccionProxSemana.to_numpy()
        y_values=[]
        for i in range(len(predicciones)):
            y_values.append(predicciones[i][0])

        x_values = []
        for i in range(len(predicciones)):
            x_values.append(datetime.datetime.strptime(str(self.cal1.get_date() + datetime.timedelta(days=i)),"%Y-%m-%d").date())
        
        fig = plt.figure(figsize=(5,5))
        dates = matplotlib.dates.date2num(x_values)
        matplotlib.pyplot.plot_date(dates, y_values)
        plt.plot(x_values, y_values)
        plt.gcf().autofmt_xdate()
        plt.title('Predicción de la semana')
        print(prediccionProxSemana)
        canvas = FigureCanvasTkAgg(fig, master=self.lf)
        canvas.draw()
        canvas.get_tk_widget().grid(row=3, column=0)

    def selectFile(self):
        fname = askopenfilename(filetypes=(("Archivo Dataset", "*.csv"),
                                           ("Todos los archivos", "*.*") ))
        if fname:
            try:
                self.text1.set(fname)
                self.fileSelect = fname
            except:
                print("")
    
    def series_to_supervised(self,data, n_in=1, n_out=1, dropnan=True):
        n_vars = 1 if type(data) is list else data.shape[1]
        df = pd.DataFrame(data)
        cols, names = list(), list()
        # input sequence (t-n, ... t-1)
        for i in range(n_in, 0, -1):
            cols.append(df.shift(i))
            names += [('var%d(t-%d)' % (j+1, i)) for j in range(n_vars)]
        # forecast sequence (t, t+1, ... t+n)
        for i in range(0, n_out):
            cols.append(df.shift(-i))
            if i == 0:
                names += [('var%d(t)' % (j+1)) for j in range(n_vars)]
            else:
                names += [('var%d(t+%d)' % (j+1, i)) for j in range(n_vars)]
        # put it all together
        agg = pd.concat(cols, axis=1)
        agg.columns = names
        # drop rows with NaN values
        if dropnan:
            agg.dropna(inplace=True)
        return agg

    def agregarNuevoValor(self,x_test,nuevoValor):
        for i in range(x_test.shape[2]-3):
            x_test[0][0][i+2] = x_test[0][0][i+3]
        ultDiaSemana=ultDiaSemana+1
        if ultDiaSemana>6:
            ultDiaSemana=0
        x_test[0][0][0]=ultDiaSemana
        x_test[0][0][1]=12
        x_test[0][0][x_test.shape[2]-1]=nuevoValor
        return x_test,ultDiaSemana
    
    def crear_modeloEmbeddings(self):
        PASOS=7
        emb_dias = 2 
        emb_meses = 4

        in_dias = Input(shape=[1], name = 'dias')
        emb_dias = Embedding(7+1, emb_dias)(in_dias)
        in_meses = Input(shape=[1], name = 'meses')
        emb_meses = Embedding(12+1, emb_meses)(in_meses)

        in_cli = Input(shape=[PASOS], name = 'cli')

        fe = concatenate([(emb_dias), (emb_meses)])

        x = Flatten()(fe)
        x = Dense(PASOS,activation='tanh')(x)
        outp = Dense(1,activation='tanh')(x)
        model = Model(inputs=[in_dias,in_meses,in_cli], outputs=outp)

        model.compile(loss='mean_absolute_error', 
                    optimizer='adam',
                    metrics=['MSE'])

        model.summary()
        return model

    def entrenamiento(self):
        if "csv" in self.fileSelect:
            self.df = pd.read_csv(self.fileSelect,  parse_dates=[0], header=None,index_col=0, names=['fecha','unidades'])
            copyfile(self.fileSelect,'./temp.csv')
            self.df.head()

            self.df['weekday']=[x.weekday() for x in self.df.index]
            self.df['month']=[x.month for x in self.df.index]
            self.df.head()
            self.df.describe()


            print(self.df.head())
            PASOS=7
            values = self.df['unidades'].values

            values = values.astype('float32')
            scaler = MinMaxScaler(feature_range=(-1, 1))

            values=values.reshape(-1, 1) 

            scaled = scaler.fit_transform(values)

            reframed = self.series_to_supervised(scaled, PASOS, 1)
            reframed.reset_index(inplace=True, drop=True)

            contador=0
            reframed['weekday']=self.df['weekday']
            reframed['month']=self.df['month']

            for i in range(reframed.index[0],reframed.index[-1]):
                reframed['weekday'].loc[contador]=self.df['weekday'][i+8]
                reframed['month'].loc[contador]=self.df['month'][i+8]
                contador=contador+1
            reframed.head()

            reordenado=reframed[ ['weekday','month','var1(t-7)','var1(t-6)','var1(t-5)','var1(t-4)','var1(t-3)','var1(t-2)','var1(t-1)','var1(t)'] ]
            reordenado.dropna(inplace=True)

            training_data = reordenado.drop('var1(t)',axis=1)#.values
            target_data=reordenado['var1(t)']
            #training_data.head()
            valid_data = training_data[len(values)-30:len(values)]
            valid_target=target_data[len(values)-30:len(values)]

            training_data = training_data[0:len(values)-30]
            target_data=target_data[0:len(values)-30]
            print(training_data.shape,target_data.shape,valid_data.shape,valid_target.shape)


            EPOCHS=100

            self.model = self.crear_modeloEmbeddings()

            continuas=training_data[['var1(t-7)','var1(t-6)','var1(t-5)','var1(t-4)','var1(t-3)','var1(t-2)','var1(t-1)']]
            valid_continuas=valid_data[['var1(t-7)','var1(t-6)','var1(t-5)','var1(t-4)','var1(t-3)','var1(t-2)','var1(t-1)']]

            history=self.model.fit([training_data['weekday'],training_data['month'],continuas], target_data, epochs=EPOCHS,validation_data=([valid_data['weekday'],valid_data['month'],valid_continuas],valid_target))
            
            self.model.save('model.h5') 
            results=self.model.predict([valid_data['weekday'],valid_data['month'],valid_continuas])
            #plt.show()
            fig = plt.figure(figsize=(6, 5))
            plt.plot(history.history['loss'], label='loss')
            plt.title('loss')
            plt.plot(history.history['val_loss'], label='val loss')
            plt.title('validate loss')
            plt.legend(loc='best')
            #plt.show()
            canvas = FigureCanvasTkAgg(fig, master=self.lf)
            canvas.draw()
            canvas.get_tk_widget().grid(row=3, column=1)
            print("VALIDATE ")
            compara = pd.DataFrame(np.array([valid_target, [x[0] for x in results]])).transpose()
            compara.columns = ['real', 'prediccion']

            inverted = scaler.inverse_transform(compara.values)

            compara2 = pd.DataFrame(inverted)
            compara2.columns = ['real', 'prediccion']
            compara2['diferencia'] = compara2['real'] - compara2['prediccion']
            
            print(compara2['real'])

            x_vals = []
            x_vals = self.df.index[len(values)-30:len(values)].to_numpy()
            x_values = []
            for x in x_vals:
                x_values.append(str(datetime.datetime.strptime(str(x)[:10],'%Y-%m-%d').strftime('%d-%m-%Y')))
            print(x_values)
            fig = plt.figure(figsize=(6, 5))
            compara2['real'].plot()
            #plt.plot(x_values, compara2['real'][0])
            compara2['prediccion'].plot()
            #plt.plot(x_values, compara2['prediccion'][0])
            canvas = FigureCanvasTkAgg(fig, master=self.lf)
            canvas.draw()
            canvas.get_tk_widget().grid(row=3, column=2)
    def __init__(self, Department_Window=None):
        '''This class configures and populates the toplevel window.
           Department_Window is the toplevel containing window.'''
        _bgcolor = '#d9d9d9'  # X11 color: 'gray85'
        _fgcolor = '#000000'  # X11 color: 'black'
        _compcolor = '#d9d9d9'  # X11 color: 'gray85'
        _ana1color = '#d9d9d9'  # X11 color: 'gray85'
        _ana2color = '#ececec'  # Closest X11 color: 'gray92'
        font10 = "-family {Helvetica} -size 10 -weight normal -slant"  \
            " roman -underline 0 -overstrike 0"
        font11 = "-family {Helvetica} -size 13 -weight normal -slant "  \
            "roman -underline 0 -overstrike 0"
        font9 = "-family {Segoe UI} -size 9 -weight normal -slant "  \
            "roman -underline 0 -overstrike 0"
        self.style = ttk.Style()
        self.data = Database("dental.db")
        if sys.platform == "win32":
            self.style.theme_use('winnative')
        self.style.configure('.', background=_bgcolor)
        self.style.configure('.', foreground=_fgcolor)
        self.style.map('.',
                       background=[('selected', _compcolor),
                                   ('active', _ana2color)])

        Department_Window.geometry("1491x739+35+31")
        Department_Window.minsize(148, 1)
        Department_Window.maxsize(4112, 1030)
        Department_Window.resizable(1, 1)
        Department_Window.title("DEPARTMENT OUT-PATIENT")
        Department_Window.configure(background="#40b3a3")
        Department_Window.configure(highlightbackground="#d9d9d9")
        Department_Window.configure(highlightcolor="black")

        self.menubar = tk.Menu(Department_Window,
                               font=font9,
                               bg=_bgcolor,
                               fg=_fgcolor)
        Department_Window.configure(menu=self.menubar)

        self.File = tk.Menu(Department_Window, tearoff=0)
        self.menubar.add_cascade(
            menu=self.File,
            activebackground="#ececec",
            activeforeground="#000000",
            background="#d9d9d9",
            font=
            ('-family {Segoe UI} -size 9 -weight normal -slant roman -underline 0 -overstrike 0'
             ),
            foreground="#000000",
            label="File")
        self.File.add_command(
            activebackground="#ececec",
            activeforeground="#000000",
            background="#d9d9d9",
            font=
            ('-family {Segoe UI} -size 9 -weight normal -slant roman -underline 0 -overstrike 0'
             ),
            foreground="#000000",
            label="Exit",
            command=department_window_support.destroy_window)

        self.Department_Label = tk.Label(Department_Window)
        self.Department_Label.place(relx=0.241,
                                    rely=0.027,
                                    relwidth=0.518,
                                    relheight=0.084)

        self.Department_Label.configure(activebackground="#f9f9f9")
        self.Department_Label.configure(activeforeground="black")
        self.Department_Label.configure(background="#d9d9d9")
        self.Department_Label.configure(disabledforeground="#a3a3a3")
        self.Department_Label.configure(
            font="-family {Helvetica} -size 18 -weight normal")
        self.Department_Label.configure(foreground="#000000")
        self.Department_Label.configure(highlightbackground="#d9d9d9")
        self.Department_Label.configure(highlightcolor="black")
        self.Department_Label.configure(relief="raised")
        self.Department_Label.configure(text='''Department Out Patient''')

        self.on_radio = tk.IntVar(None, 1)
        self.Old_Patient_Radio = tk.Radiobutton(Department_Window)
        self.Old_Patient_Radio.place(relx=0.013,
                                     rely=0.124,
                                     relheight=0.042,
                                     relwidth=0.18)
        self.Old_Patient_Radio.configure(activebackground="#ececec")
        self.Old_Patient_Radio.configure(activeforeground="#000000")
        self.Old_Patient_Radio.configure(background="#d9d9d9")
        self.Old_Patient_Radio.configure(disabledforeground="#a3a3a3")
        self.Old_Patient_Radio.configure(font=font11)
        self.Old_Patient_Radio.configure(foreground="#000000")
        self.Old_Patient_Radio.configure(highlightbackground="#d9d9d9")
        self.Old_Patient_Radio.configure(highlightcolor="black")
        self.Old_Patient_Radio.configure(justify='left')
        self.Old_Patient_Radio.configure(text='''Old Patient''')
        self.Old_Patient_Radio.configure(value=1)
        self.Old_Patient_Radio.configure(variable=self.on_radio)

        self.New_Patient_Radio = tk.Radiobutton(Department_Window)
        self.New_Patient_Radio.place(relx=0.213,
                                     rely=0.124,
                                     relheight=0.042,
                                     relwidth=0.18)
        self.New_Patient_Radio.configure(activebackground="#ececec")
        self.New_Patient_Radio.configure(activeforeground="#000000")
        self.New_Patient_Radio.configure(background="#d9d9d9")
        self.New_Patient_Radio.configure(disabledforeground="#a3a3a3")
        self.New_Patient_Radio.configure(font=font11)
        self.New_Patient_Radio.configure(foreground="#000000")
        self.New_Patient_Radio.configure(highlightbackground="#d9d9d9")
        self.New_Patient_Radio.configure(highlightcolor="black")
        self.New_Patient_Radio.configure(justify='left')
        self.New_Patient_Radio.configure(text='''New Patient''')
        self.New_Patient_Radio.configure(value=2)
        self.New_Patient_Radio.configure(variable=self.on_radio)

        self.Health_Label = tk.Label(Department_Window)
        self.Health_Label.place(relx=0.410,
                                rely=0.124,
                                relwidth=0.169,
                                relheight=0.05)
        self.Health_Label.configure(activebackground="#f9f9f9")
        self.Health_Label.configure(activeforeground="black")
        self.Health_Label.configure(background="#d9d9d9")
        self.Health_Label.configure(disabledforeground="#a3a3a3")
        self.Health_Label.configure(
            font="-family {Helvetica} -size 13 -weight normal")
        self.Health_Label.configure(foreground="#000000")
        self.Health_Label.configure(highlightbackground="#d9d9d9")
        self.Health_Label.configure(highlightcolor="black")
        self.Health_Label.configure(text='''Health Education''')

        self.Health_Entry = tk.Entry(Department_Window)
        self.Health_Entry.place(relx=0.599,
                                rely=0.124,
                                relheight=0.048,
                                relwidth=0.137)
        self.Health_Entry.configure(background="white")
        self.Health_Entry.configure(disabledforeground="#a3a3a3")
        self.Health_Entry.configure(font="-family {Helvetica} -size 10")
        self.Health_Entry.configure(foreground="#000000")
        self.Health_Entry.configure(highlightbackground="#d9d9d9")
        self.Health_Entry.configure(highlightcolor="black")
        self.Health_Entry.configure(insertbackground="black")
        self.Health_Entry.configure(selectbackground="#c4c4c4")
        self.Health_Entry.configure(selectforeground="black")

        self.Incharge_Label = tk.Label(Department_Window)
        self.Incharge_Label.place(relx=0.013,
                                  rely=0.189,
                                  relwidth=0.169,
                                  relheight=0.05)
        self.Incharge_Label.configure(activebackground="#f9f9f9")
        self.Incharge_Label.configure(activeforeground="black")
        self.Incharge_Label.configure(background="#d9d9d9")
        self.Incharge_Label.configure(disabledforeground="#a3a3a3")
        self.Incharge_Label.configure(
            font="-family {Helvetica} -size 13 -weight normal")
        self.Incharge_Label.configure(foreground="#000000")
        self.Incharge_Label.configure(highlightbackground="#d9d9d9")
        self.Incharge_Label.configure(highlightcolor="black")
        self.Incharge_Label.configure(text='''Incharge''')

        self.Incharge_Entry = tk.Entry(Department_Window)
        self.Incharge_Entry.place(relx=0.188,
                                  rely=0.189,
                                  relheight=0.048,
                                  relwidth=0.137)
        self.Incharge_Entry.configure(background="white")
        self.Incharge_Entry.configure(disabledforeground="#a3a3a3")
        self.Incharge_Entry.configure(font="-family {Helvetica} -size 10")
        self.Incharge_Entry.configure(foreground="#000000")
        self.Incharge_Entry.configure(highlightbackground="#d9d9d9")
        self.Incharge_Entry.configure(highlightcolor="black")
        self.Incharge_Entry.configure(insertbackground="black")
        self.Incharge_Entry.configure(selectbackground="#c4c4c4")
        self.Incharge_Entry.configure(selectforeground="black")

        self.Phone_Label = tk.Label(Department_Window)
        self.Phone_Label.place(relx=0.335,
                               rely=0.189,
                               relwidth=0.162,
                               relheight=0.05)
        self.Phone_Label.configure(activebackground="#f9f9f9")
        self.Phone_Label.configure(activeforeground="black")
        self.Phone_Label.configure(background="#d9d9d9")
        self.Phone_Label.configure(disabledforeground="#a3a3a3")
        self.Phone_Label.configure(
            font="-family {Helvetica} -size 13 -weight normal")
        self.Phone_Label.configure(foreground="#000000")
        self.Phone_Label.configure(highlightbackground="#d9d9d9")
        self.Phone_Label.configure(highlightcolor="black")
        self.Phone_Label.configure(text='''Phone''')

        self.Phone_Entry = tk.Entry(Department_Window)
        self.Phone_Entry.place(relx=0.51,
                               rely=0.189,
                               relheight=0.048,
                               relwidth=0.137)
        self.Phone_Entry.configure(background="white")
        self.Phone_Entry.configure(disabledforeground="#a3a3a3")
        self.Phone_Entry.configure(font="-family {Helvetica} -size 10")
        self.Phone_Entry.configure(foreground="#000000")
        self.Phone_Entry.configure(highlightbackground="#d9d9d9")
        self.Phone_Entry.configure(highlightcolor="black")
        self.Phone_Entry.configure(insertbackground="black")
        self.Phone_Entry.configure(selectbackground="#c4c4c4")
        self.Phone_Entry.configure(selectforeground="black")

        self.Date_Label = tk.Label(Department_Window)
        self.Date_Label.place(relx=0.664,
                              rely=0.189,
                              relwidth=0.122,
                              relheight=0.05)
        self.Date_Label.configure(activebackground="#f9f9f9")
        self.Date_Label.configure(activeforeground="black")
        self.Date_Label.configure(background="#d9d9d9")
        self.Date_Label.configure(disabledforeground="#a3a3a3")
        self.Date_Label.configure(
            font="-family {Helvetica} -size 13 -weight normal")
        self.Date_Label.configure(foreground="#000000")
        self.Date_Label.configure(highlightbackground="#d9d9d9")
        self.Date_Label.configure(highlightcolor="black")
        self.Date_Label.configure(text='''Date\nYYYY-MM-DD''')

        now = datetime.datetime.now()
        self.Date_Entry = DateEntry(Department_Window,
                                    year=now.year,
                                    month=now.month,
                                    day=now.day)
        self.Date_Entry.place(relx=0.791,
                              rely=0.189,
                              relheight=0.048,
                              relwidth=0.137)
        self.Date_Entry.configure(background="white")
        self.Date_Entry.configure(date_pattern='y/mm/dd')
        self.Date_Entry.configure(font="-family {Helvetica} -size 10")
        self.Date_Entry.configure(foreground="#000000")
        self.Date_Entry.configure(borderwidth=2)
        self.Date_Entry.configure(width=12)

        # self.Date_Entry = tk.Entry(Department_Window)
        # self.Date_Entry.place(relx=0.791, rely=0.189,relheight = 0.048, relwidth=0.137)
        # self.Date_Entry.configure(background="white")
        # self.Date_Entry.configure(disabledforeground="#a3a3a3")
        # self.Date_Entry.configure(font="-family {Helvetica} -size 10")
        # self.Date_Entry.configure(foreground="#000000")
        # self.Date_Entry.configure(highlightbackground="#d9d9d9")
        # self.Date_Entry.configure(highlightcolor="black")
        # self.Date_Entry.configure(insertbackground="black")
        # self.Date_Entry.configure(selectbackground="#c4c4c4")
        # self.Date_Entry.configure(selectforeground="black")

        self.From_Label = tk.Label(Department_Window)
        self.From_Label.place(relx=0.013,
                              rely=0.311,
                              relwidth=0.162,
                              relheight=0.05)
        self.From_Label.configure(activebackground="#f9f9f9")
        self.From_Label.configure(activeforeground="black")
        self.From_Label.configure(background="#d9d9d9")
        self.From_Label.configure(disabledforeground="#a3a3a3")
        self.From_Label.configure(
            font="-family {Helvetica} -size 13 -weight normal")
        self.From_Label.configure(foreground="#000000")
        self.From_Label.configure(highlightbackground="#d9d9d9")
        self.From_Label.configure(highlightcolor="black")
        self.From_Label.configure(text='''ID From''')

        self.From_Entry = tk.Entry(Department_Window)
        self.From_Entry.place(relx=0.188,
                              rely=0.311,
                              relwidth=0.137,
                              relheight=0.048)
        self.From_Entry.configure(background="white")
        self.From_Entry.configure(disabledforeground="#a3a3a3")
        self.From_Entry.configure(font="-family {Helvetica} -size 10")
        self.From_Entry.configure(foreground="#000000")
        self.From_Entry.configure(highlightbackground="#d9d9d9")
        self.From_Entry.configure(highlightcolor="black")
        self.From_Entry.configure(insertbackground="black")
        self.From_Entry.configure(selectbackground="#c4c4c4")
        self.From_Entry.configure(selectforeground="black")

        self.To_Label = tk.Label(Department_Window)
        self.To_Label.place(relx=0.335,
                            rely=0.311,
                            relwidth=0.162,
                            relheight=0.05)
        self.To_Label.configure(activebackground="#f9f9f9")
        self.To_Label.configure(activeforeground="black")
        self.To_Label.configure(background="#d9d9d9")
        self.To_Label.configure(disabledforeground="#a3a3a3")
        self.To_Label.configure(
            font="-family {Helvetica} -size 13 -weight normal")
        self.To_Label.configure(foreground="#000000")
        self.To_Label.configure(highlightbackground="#d9d9d9")
        self.To_Label.configure(highlightcolor="black")
        self.To_Label.configure(text='''ID To''')

        self.To_Entry = tk.Entry(Department_Window)
        self.To_Entry.place(relx=0.51,
                            rely=0.311,
                            relwidth=0.137,
                            relheight=0.048)
        self.To_Entry.configure(background="white")
        self.To_Entry.configure(disabledforeground="#a3a3a3")
        self.To_Entry.configure(font="-family {Helvetica} -size 10")
        self.To_Entry.configure(foreground="#000000")
        self.To_Entry.configure(highlightbackground="#d9d9d9")
        self.To_Entry.configure(highlightcolor="black")
        self.To_Entry.configure(insertbackground="black")
        self.To_Entry.configure(selectbackground="#c4c4c4")
        self.To_Entry.configure(selectforeground="black")

        self.Endodontics_Label = tk.Label(Department_Window)
        self.Endodontics_Label.place(relx=0.013,
                                     rely=0.379,
                                     relwidth=0.162,
                                     relheight=0.05)
        self.Endodontics_Label.configure(activebackground="#f9f9f9")
        self.Endodontics_Label.configure(activeforeground="black")
        self.Endodontics_Label.configure(background="#d9d9d9")
        self.Endodontics_Label.configure(disabledforeground="#a3a3a3")
        self.Endodontics_Label.configure(
            font="-family {Helvetica} -size 13 -weight normal")
        self.Endodontics_Label.configure(foreground="#000000")
        self.Endodontics_Label.configure(highlightbackground="#d9d9d9")
        self.Endodontics_Label.configure(highlightcolor="black")
        self.Endodontics_Label.configure(text='''Endodontics''')

        self.Periodont_Label = tk.Label(Department_Window)
        self.Periodont_Label.place(relx=0.013,
                                   rely=0.447,
                                   relwidth=0.162,
                                   relheight=0.05)
        self.Periodont_Label.configure(activebackground="#f9f9f9")
        self.Periodont_Label.configure(activeforeground="black")
        self.Periodont_Label.configure(background="#d9d9d9")
        self.Periodont_Label.configure(disabledforeground="#a3a3a3")
        self.Periodont_Label.configure(
            font="-family {Helvetica} -size 13 -weight normal")
        self.Periodont_Label.configure(foreground="#000000")
        self.Periodont_Label.configure(highlightbackground="#d9d9d9")
        self.Periodont_Label.configure(highlightcolor="black")
        self.Periodont_Label.configure(text='''Periodont''')

        self.Orthodontics_Label = tk.Label(Department_Window)
        self.Orthodontics_Label.place(relx=0.013,
                                      rely=0.514,
                                      relwidth=0.162,
                                      relheight=0.05)
        self.Orthodontics_Label.configure(activebackground="#f9f9f9")
        self.Orthodontics_Label.configure(activeforeground="black")
        self.Orthodontics_Label.configure(background="#d9d9d9")
        self.Orthodontics_Label.configure(disabledforeground="#a3a3a3")
        self.Orthodontics_Label.configure(
            font="-family {Helvetica} -size 13 -weight normal")
        self.Orthodontics_Label.configure(foreground="#000000")
        self.Orthodontics_Label.configure(highlightbackground="#d9d9d9")
        self.Orthodontics_Label.configure(highlightcolor="black")
        self.Orthodontics_Label.configure(text='''Orthodontics''')

        self.Surgery_Label = tk.Label(Department_Window)
        self.Surgery_Label.place(relx=0.013,
                                 rely=0.582,
                                 relwidth=0.162,
                                 relheight=0.05)
        self.Surgery_Label.configure(activebackground="#f9f9f9")
        self.Surgery_Label.configure(activeforeground="black")
        self.Surgery_Label.configure(background="#d9d9d9")
        self.Surgery_Label.configure(disabledforeground="#a3a3a3")
        self.Surgery_Label.configure(
            font="-family {Helvetica} -size 13 -weight normal")
        self.Surgery_Label.configure(foreground="#000000")
        self.Surgery_Label.configure(highlightbackground="#d9d9d9")
        self.Surgery_Label.configure(highlightcolor="black")
        self.Surgery_Label.configure(text='''Surgery''')

        self.Pedodont_Label = tk.Label(Department_Window)
        self.Pedodont_Label.place(relx=0.013,
                                  rely=0.65,
                                  relwidth=0.162,
                                  relheight=0.05)
        self.Pedodont_Label.configure(activebackground="#f9f9f9")
        self.Pedodont_Label.configure(activeforeground="black")
        self.Pedodont_Label.configure(background="#d9d9d9")
        self.Pedodont_Label.configure(disabledforeground="#a3a3a3")
        self.Pedodont_Label.configure(
            font="-family {Helvetica} -size 13 -weight normal")
        self.Pedodont_Label.configure(foreground="#000000")
        self.Pedodont_Label.configure(highlightbackground="#d9d9d9")
        self.Pedodont_Label.configure(highlightcolor="black")
        self.Pedodont_Label.configure(text='''Pedodont''')

        self.Oralpatho_Label = tk.Label(Department_Window)
        self.Oralpatho_Label.place(relx=0.335,
                                   rely=0.379,
                                   relwidth=0.162,
                                   relheight=0.05)
        self.Oralpatho_Label.configure(activebackground="#f9f9f9")
        self.Oralpatho_Label.configure(activeforeground="black")
        self.Oralpatho_Label.configure(background="#d9d9d9")
        self.Oralpatho_Label.configure(disabledforeground="#a3a3a3")
        self.Oralpatho_Label.configure(
            font="-family {Helvetica} -size 13 -weight normal")
        self.Oralpatho_Label.configure(foreground="#000000")
        self.Oralpatho_Label.configure(highlightbackground="#d9d9d9")
        self.Oralpatho_Label.configure(highlightcolor="black")
        self.Oralpatho_Label.configure(text='''Oralpatho''')

        self.Public_Health_Label = tk.Label(Department_Window)
        self.Public_Health_Label.place(relx=0.335,
                                       rely=0.447,
                                       relwidth=0.162,
                                       relheight=0.05)
        self.Public_Health_Label.configure(activebackground="#f9f9f9")
        self.Public_Health_Label.configure(activeforeground="black")
        self.Public_Health_Label.configure(background="#d9d9d9")
        self.Public_Health_Label.configure(disabledforeground="#a3a3a3")
        self.Public_Health_Label.configure(
            font="-family {Helvetica} -size 13 -weight normal")
        self.Public_Health_Label.configure(foreground="#000000")
        self.Public_Health_Label.configure(highlightbackground="#d9d9d9")
        self.Public_Health_Label.configure(highlightcolor="black")
        self.Public_Health_Label.configure(text='''Public Health''')

        self.Oral_Mea_Label = tk.Label(Department_Window)
        self.Oral_Mea_Label.place(relx=0.335,
                                  rely=0.514,
                                  relwidth=0.162,
                                  relheight=0.05)
        self.Oral_Mea_Label.configure(activebackground="#f9f9f9")
        self.Oral_Mea_Label.configure(activeforeground="black")
        self.Oral_Mea_Label.configure(background="#d9d9d9")
        self.Oral_Mea_Label.configure(disabledforeground="#a3a3a3")
        self.Oral_Mea_Label.configure(
            font="-family {Helvetica} -size 13 -weight normal")
        self.Oral_Mea_Label.configure(foreground="#000000")
        self.Oral_Mea_Label.configure(highlightbackground="#d9d9d9")
        self.Oral_Mea_Label.configure(highlightcolor="black")
        self.Oral_Mea_Label.configure(text='''Oral mea''')

        self.Ping_Thread_Label = tk.Label(Department_Window)
        self.Ping_Thread_Label.place(relx=0.335,
                                     rely=0.582,
                                     relwidth=0.162,
                                     relheight=0.05)
        self.Ping_Thread_Label.configure(activebackground="#f9f9f9")
        self.Ping_Thread_Label.configure(activeforeground="black")
        self.Ping_Thread_Label.configure(background="#d9d9d9")
        self.Ping_Thread_Label.configure(disabledforeground="#a3a3a3")
        self.Ping_Thread_Label.configure(
            font="-family {Helvetica} -size 13 -weight normal")
        self.Ping_Thread_Label.configure(foreground="#000000")
        self.Ping_Thread_Label.configure(highlightbackground="#d9d9d9")
        self.Ping_Thread_Label.configure(highlightcolor="black")
        self.Ping_Thread_Label.configure(text='''Prostho''')

        self.Grand_Total_Label = tk.Label(Department_Window)
        self.Grand_Total_Label.place(relx=0.335,
                                     rely=0.65,
                                     relwidth=0.162,
                                     relheight=0.05)

        self.Grand_Total_Label.configure(activebackground="#f9f9f9")
        self.Grand_Total_Label.configure(activeforeground="black")
        self.Grand_Total_Label.configure(background="#d9d9d9")
        self.Grand_Total_Label.configure(disabledforeground="#a3a3a3")
        self.Grand_Total_Label.configure(
            font="-family {Helvetica} -size 13 -weight normal")
        self.Grand_Total_Label.configure(foreground="#000000")
        self.Grand_Total_Label.configure(highlightbackground="#d9d9d9")
        self.Grand_Total_Label.configure(highlightcolor="black")
        self.Grand_Total_Label.configure(text='''Grand Total''')

        #Defining the entries

        self.Endodontics_Entry = tk.Entry(Department_Window)
        self.Endodontics_Entry.place(relx=0.188,
                                     rely=0.379,
                                     relwidth=0.137,
                                     relheight=0.048)
        self.Endodontics_Entry.configure(background="white")
        self.Endodontics_Entry.configure(disabledforeground="#a3a3a3")
        self.Endodontics_Entry.configure(font="-family {Helvetica} -size 10")
        self.Endodontics_Entry.configure(foreground="#000000")
        self.Endodontics_Entry.configure(highlightbackground="#d9d9d9")
        self.Endodontics_Entry.configure(highlightcolor="black")
        self.Endodontics_Entry.configure(insertbackground="black")
        self.Endodontics_Entry.configure(selectbackground="#c4c4c4")
        self.Endodontics_Entry.configure(selectforeground="black")

        self.Periodont_Entry = tk.Entry(Department_Window)
        self.Periodont_Entry.place(relx=0.188,
                                   rely=0.447,
                                   relwidth=0.137,
                                   relheight=0.048)
        self.Periodont_Entry.configure(background="white")
        self.Periodont_Entry.configure(disabledforeground="#a3a3a3")
        self.Periodont_Entry.configure(font="-family {Helvetica} -size 10")
        self.Periodont_Entry.configure(foreground="#000000")
        self.Periodont_Entry.configure(highlightbackground="#d9d9d9")
        self.Periodont_Entry.configure(highlightcolor="black")
        self.Periodont_Entry.configure(insertbackground="black")
        self.Periodont_Entry.configure(selectbackground="#c4c4c4")
        self.Periodont_Entry.configure(selectforeground="black")

        self.Orthodontics_Entry = tk.Entry(Department_Window)
        self.Orthodontics_Entry.place(relx=0.188,
                                      rely=0.514,
                                      relwidth=0.137,
                                      relheight=0.048)
        self.Orthodontics_Entry.configure(background="white")
        self.Orthodontics_Entry.configure(disabledforeground="#a3a3a3")
        self.Orthodontics_Entry.configure(font="-family {Helvetica} -size 10")
        self.Orthodontics_Entry.configure(foreground="#000000")
        self.Orthodontics_Entry.configure(highlightbackground="#d9d9d9")
        self.Orthodontics_Entry.configure(highlightcolor="black")
        self.Orthodontics_Entry.configure(insertbackground="black")
        self.Orthodontics_Entry.configure(selectbackground="#c4c4c4")
        self.Orthodontics_Entry.configure(selectforeground="black")

        self.Surgery_Entry = tk.Entry(Department_Window)
        self.Surgery_Entry.place(relx=0.188,
                                 rely=0.582,
                                 relwidth=0.137,
                                 relheight=0.048)
        self.Surgery_Entry.configure(background="white")
        self.Surgery_Entry.configure(disabledforeground="#a3a3a3")
        self.Surgery_Entry.configure(font="-family {Helvetica} -size 10")
        self.Surgery_Entry.configure(foreground="#000000")
        self.Surgery_Entry.configure(highlightbackground="#d9d9d9")
        self.Surgery_Entry.configure(highlightcolor="black")
        self.Surgery_Entry.configure(insertbackground="black")
        self.Surgery_Entry.configure(selectbackground="#c4c4c4")
        self.Surgery_Entry.configure(selectforeground="black")

        self.Pedodont_Entry = tk.Entry(Department_Window)
        self.Pedodont_Entry.place(relx=0.188,
                                  rely=0.65,
                                  relwidth=0.137,
                                  relheight=0.048)
        self.Pedodont_Entry.configure(background="white")
        self.Pedodont_Entry.configure(disabledforeground="#a3a3a3")
        self.Pedodont_Entry.configure(font="-family {Helvetica} -size 10")
        self.Pedodont_Entry.configure(foreground="#000000")
        self.Pedodont_Entry.configure(highlightbackground="#d9d9d9")
        self.Pedodont_Entry.configure(highlightcolor="black")
        self.Pedodont_Entry.configure(insertbackground="black")
        self.Pedodont_Entry.configure(selectbackground="#c4c4c4")
        self.Pedodont_Entry.configure(selectforeground="black")

        self.Oralpatho_Entry = tk.Entry(Department_Window)
        self.Oralpatho_Entry.place(relx=0.51,
                                   rely=0.379,
                                   relwidth=0.137,
                                   relheight=0.048)
        self.Oralpatho_Entry.configure(background="white")
        self.Oralpatho_Entry.configure(disabledforeground="#a3a3a3")
        self.Oralpatho_Entry.configure(font="-family {Helvetica} -size 10")
        self.Oralpatho_Entry.configure(foreground="#000000")
        self.Oralpatho_Entry.configure(highlightbackground="#d9d9d9")
        self.Oralpatho_Entry.configure(highlightcolor="black")
        self.Oralpatho_Entry.configure(insertbackground="black")
        self.Oralpatho_Entry.configure(selectbackground="#c4c4c4")
        self.Oralpatho_Entry.configure(selectforeground="black")

        self.Public_Health_Entry = tk.Entry(Department_Window)
        self.Public_Health_Entry.place(relx=0.51,
                                       rely=0.447,
                                       relwidth=0.137,
                                       relheight=0.048)
        self.Public_Health_Entry.configure(background="white")
        self.Public_Health_Entry.configure(disabledforeground="#a3a3a3")
        self.Public_Health_Entry.configure(font="-family {Helvetica} -size 10")
        self.Public_Health_Entry.configure(foreground="#000000")
        self.Public_Health_Entry.configure(highlightbackground="#d9d9d9")
        self.Public_Health_Entry.configure(highlightcolor="black")
        self.Public_Health_Entry.configure(insertbackground="black")
        self.Public_Health_Entry.configure(selectbackground="#c4c4c4")
        self.Public_Health_Entry.configure(selectforeground="black")

        self.Oral_Mea_Entry = tk.Entry(Department_Window)
        self.Oral_Mea_Entry.place(relx=0.51,
                                  rely=0.514,
                                  relwidth=0.137,
                                  relheight=0.048)
        self.Oral_Mea_Entry.configure(background="white")
        self.Oral_Mea_Entry.configure(disabledforeground="#a3a3a3")
        self.Oral_Mea_Entry.configure(font="-family {Helvetica} -size 10")
        self.Oral_Mea_Entry.configure(foreground="#000000")
        self.Oral_Mea_Entry.configure(highlightbackground="#d9d9d9")
        self.Oral_Mea_Entry.configure(highlightcolor="black")
        self.Oral_Mea_Entry.configure(insertbackground="black")
        self.Oral_Mea_Entry.configure(selectbackground="#c4c4c4")
        self.Oral_Mea_Entry.configure(selectforeground="black")

        self.Ping_Thread_Entry = tk.Entry(Department_Window)
        self.Ping_Thread_Entry.place(relx=0.51,
                                     rely=0.582,
                                     relwidth=0.137,
                                     relheight=0.048)
        self.Ping_Thread_Entry.configure(background="white")
        self.Ping_Thread_Entry.configure(disabledforeground="#a3a3a3")
        self.Ping_Thread_Entry.configure(font="-family {Helvetica} -size 10")
        self.Ping_Thread_Entry.configure(foreground="#000000")
        self.Ping_Thread_Entry.configure(highlightbackground="#d9d9d9")
        self.Ping_Thread_Entry.configure(highlightcolor="black")
        self.Ping_Thread_Entry.configure(insertbackground="black")
        self.Ping_Thread_Entry.configure(selectbackground="#c4c4c4")
        self.Ping_Thread_Entry.configure(selectforeground="black")

        self.Grand_Total_Entry = tk.Entry(Department_Window)
        self.Grand_Total_Entry.place(relx=0.51,
                                     rely=0.65,
                                     relwidth=0.137,
                                     relheight=0.048)
        self.Grand_Total_Entry.configure(background="white")
        self.Grand_Total_Entry.configure(disabledforeground="#a3a3a3")
        self.Grand_Total_Entry.configure(font="-family {Helvetica} -size 10")
        self.Grand_Total_Entry.configure(foreground="#000000")
        self.Grand_Total_Entry.configure(highlightbackground="#d9d9d9")
        self.Grand_Total_Entry.configure(highlightcolor="black")
        self.Grand_Total_Entry.configure(insertbackground="black")
        self.Grand_Total_Entry.configure(selectbackground="#c4c4c4")
        self.Grand_Total_Entry.configure(selectforeground="black")

        self.Add_Button_ = tk.Button(Department_Window)
        self.Add_Button_.place(relx=0.798,
                               rely=0.311,
                               relwidth=0.078,
                               relheight=0.06)
        self.Add_Button_.configure(activebackground="#ececec")
        self.Add_Button_.configure(activeforeground="#000000")
        self.Add_Button_.configure(background="#d9d9d9")
        self.Add_Button_.configure(disabledforeground="#a3a3a3")
        self.Add_Button_.configure(
            font="-family {Helvetica} -size 13 -weight normal")
        self.Add_Button_.configure(foreground="#000000")
        self.Add_Button_.configure(highlightbackground="#d9d9d9")
        self.Add_Button_.configure(highlightcolor="black")
        self.Add_Button_.configure(pady="0")
        self.Add_Button_.configure(text='''ADD''', command=self.add_item)

        self.Delete_Button = tk.Button(Department_Window)
        self.Delete_Button.place(relx=0.798,
                                 rely=0.392,
                                 relwidth=0.078,
                                 relheight=0.06)
        self.Delete_Button.configure(activebackground="#ececec")
        self.Delete_Button.configure(activeforeground="#000000")
        self.Delete_Button.configure(background="#d9d9d9")
        self.Delete_Button.configure(disabledforeground="#a3a3a3")
        self.Delete_Button.configure(
            font="-family {Helvetica} -size 13 -weight normal")
        self.Delete_Button.configure(foreground="#000000")
        self.Delete_Button.configure(highlightbackground="#d9d9d9")
        self.Delete_Button.configure(highlightcolor="black")
        self.Delete_Button.configure(pady="0")
        self.Delete_Button.configure(text='''DELETE''',
                                     command=self.remove_item)

        self.Update_Button = tk.Button(Department_Window)
        self.Update_Button.place(relx=0.798,
                                 rely=0.474,
                                 relwidth=0.078,
                                 relheight=0.06)
        self.Update_Button.configure(activebackground="#ececec")
        self.Update_Button.configure(activeforeground="#000000")
        self.Update_Button.configure(background="#d9d9d9")
        self.Update_Button.configure(disabledforeground="#a3a3a3")
        self.Update_Button.configure(
            font="-family {Helvetica} -size 13 -weight normal")
        self.Update_Button.configure(foreground="#000000")
        self.Update_Button.configure(highlightbackground="#d9d9d9")
        self.Update_Button.configure(highlightcolor="black")
        self.Update_Button.configure(pady="0")
        self.Update_Button.configure(text='''UPDATE''',
                                     command=self.update_item)

        self.Clear_Button = tk.Button(Department_Window)
        self.Clear_Button.place(relx=0.798,
                                rely=0.555,
                                relwidth=0.078,
                                relheight=0.06)
        self.Clear_Button.configure(activebackground="#ececec")
        self.Clear_Button.configure(activeforeground="#000000")
        self.Clear_Button.configure(background="#d9d9d9")
        self.Clear_Button.configure(disabledforeground="#a3a3a3")
        self.Clear_Button.configure(
            font="-family {Helvetica} -size 13 -weight normal")
        self.Clear_Button.configure(foreground="#000000")
        self.Clear_Button.configure(highlightbackground="#d9d9d9")
        self.Clear_Button.configure(highlightcolor="black")
        self.Clear_Button.configure(pady="0")
        self.Clear_Button.configure(text='''CLEAR''', command=self.clear_text)

        self.Scrolledlistbox3 = ScrolledListBox(Department_Window)
        self.Scrolledlistbox3.place(relx=0.02,
                                    rely=0.717,
                                    relheight=0.253,
                                    relwidth=0.969)
        self.Scrolledlistbox3.configure(background="white")
        self.Scrolledlistbox3.configure(disabledforeground="#a3a3a3")
        self.Scrolledlistbox3.configure(font=font10)
        self.Scrolledlistbox3.configure(foreground="black")
        self.Scrolledlistbox3.configure(highlightbackground="#d9d9d9")
        self.Scrolledlistbox3.configure(highlightcolor="#d9d9d9")
        self.Scrolledlistbox3.configure(selectbackground="#c4c4c4")
        self.Scrolledlistbox3.configure(selectforeground="black")

        self.tr_radio = tk.IntVar(None, 1)
        self.Treated_Radio = tk.Radiobutton(Department_Window)
        self.Treated_Radio.place(relx=0.013,
                                 rely=0.257,
                                 relheight=0.042,
                                 relwidth=0.18)
        self.Treated_Radio.configure(activebackground="#ececec")
        self.Treated_Radio.configure(activeforeground="#000000")
        self.Treated_Radio.configure(background="#d9d9d9")
        self.Treated_Radio.configure(disabledforeground="#a3a3a3")
        self.Treated_Radio.configure(font=font11)
        self.Treated_Radio.configure(foreground="#000000")
        self.Treated_Radio.configure(highlightbackground="#d9d9d9")
        self.Treated_Radio.configure(highlightcolor="black")
        self.Treated_Radio.configure(justify='left')
        self.Treated_Radio.configure(text='''Treated''')
        self.Treated_Radio.configure(value=1)
        self.Treated_Radio.configure(variable=self.tr_radio)

        self.Reffered_Radio = tk.Radiobutton(Department_Window)
        self.Reffered_Radio.place(relx=0.208,
                                  rely=0.257,
                                  relheight=0.042,
                                  relwidth=0.18)
        self.Reffered_Radio.configure(activebackground="#ececec")
        self.Reffered_Radio.configure(activeforeground="#000000")
        self.Reffered_Radio.configure(background="#d9d9d9")
        self.Reffered_Radio.configure(disabledforeground="#a3a3a3")
        self.Reffered_Radio.configure(font=font11)
        self.Reffered_Radio.configure(foreground="#000000")
        self.Reffered_Radio.configure(highlightbackground="#d9d9d9")
        self.Reffered_Radio.configure(highlightcolor="black")
        self.Reffered_Radio.configure(justify='left')
        self.Reffered_Radio.configure(text='''Reffered''')
        self.Reffered_Radio.configure(value=2)
        self.Reffered_Radio.configure(variable=self.tr_radio)

        self.Screened_Radio = tk.Radiobutton(Department_Window)
        self.Screened_Radio.place(relx=0.408,
                                  rely=0.257,
                                  relheight=0.042,
                                  relwidth=0.18)
        self.Screened_Radio.configure(activebackground="#ececec")
        self.Screened_Radio.configure(activeforeground="#000000")
        self.Screened_Radio.configure(background="#d9d9d9")
        self.Screened_Radio.configure(disabledforeground="#a3a3a3")
        self.Screened_Radio.configure(font=font11)
        self.Screened_Radio.configure(foreground="#000000")
        self.Screened_Radio.configure(highlightbackground="#d9d9d9")
        self.Screened_Radio.configure(highlightcolor="black")
        self.Screened_Radio.configure(justify='left')
        self.Screened_Radio.configure(text='''Screened''')
        self.Screened_Radio.configure(value=3)
        self.Screened_Radio.configure(variable=self.tr_radio)

        self.populate_list()
 def __init__(self):
     global cal
     global endcal
     global startcal
     global date_entry
     global stock_entry
     global type_entry
     global stock_entry2
     global Lb1
     global stock_entry3
     selfdow_x = 1780
     selfdow_y = 1700
     tk.Tk.__init__(self)
     self.title("Stock Manager")
     self.geometry("1920x1080")
     button = tk.Button(self, text="Submit", command=self.go)
     button2 = tk.Button(self, text="Submit", command=self.graph)
     date_entry = tk.Entry(self)
     stock_entry = tk.Entry(self)
     type_entry = tk.Entry(self)
     stock_entry2 = tk.Entry(self)
     stock_entry3 = tk.Entry(self)
     datelabel = tk.Label(self,
                          text="Enter Date:",
                          fg="Black",
                          font=("Courier", 12))
     stocklabel = tk.Label(self,
                           text="Enter Stock Name:",
                           fg="Black",
                           font=("Courier", 12))
     typelabel = tk.Label(self,
                          text="Enter Type:",
                          fg="Black",
                          font=("Courier", 12))
     stocklabel2 = tk.Label(self,
                            text="Enter Stock Names:",
                            fg="Black",
                            font=("Courier", 12))
     Lb1 = Listbox(self, width=130, height=34, yscrollcommand=True)
     start = "Stock           Open           Low            High            Close            Ajusted Close            Volume          W52 High         W52 Low"
     Lb1.insert(1, start)
     cal = DateEntry(self,
                     width=12,
                     background='black',
                     foreground='white',
                     borderwidth=2)
     startcal = DateEntry(self,
                          width=12,
                          background='black',
                          foreground='white',
                          borderwidth=2)
     endcal = DateEntry(self,
                        width=12,
                        background='black',
                        foreground='white',
                        borderwidth=2)
     startlabelcal = tk.Label(self,
                              text="Enter Start Date:",
                              fg="Black",
                              font=("Courier", 12))
     endlabelcal = tk.Label(self,
                            text="Enter End Date:",
                            fg="Black",
                            font=("Courier", 12))
     #placing
     startcal.place(x=1650, y=40)
     endcal.place(x=1650, y=80)
     startlabelcal.place(x=1450, y=40)
     endlabelcal.place(x=1450, y=80)
     button.place(x=150, y=80)
     button2.place(x=1600, y=230)
     cal.place(x=200, y=10)
     stock_entry.place(x=200, y=35)
     datelabel.place(x=0, y=10)
     stocklabel.place(x=0, y=35)
     Lb1.place(x=100, y=150)
     typelabel.place(x=1450, y=120)
     stocklabel2.place(x=1450, y=160)
     type_entry.place(x=1650, y=120)
     stock_entry2.place(x=1650, y=160)
     stock_entry3.place(x=1650, y=200)
Beispiel #9
0
    def __init__(self, main):

        #Janela Principal:
        #fundo branco, 1400x800
        self.main = main
        self.main.config(bg="#FFFFFF")
        self.main.geometry("1400x800")
        self.main.resizable(width=False, height=False)

        #Janela lateral aonde ficara os botoes
        #350x800 | fundo "cinza" | posicionado no lado esquerdo superior
        self.lateral = tk.Frame(self.main, width=300, height=800)
        self.lateral.config(bg="#808080")
        self.lateral.grid(sticky="NW")
        self.lateral.grid_propagate(0)

        #Janela no qual estarao os dados dos produtos
        #1050x490 | fundo cinza claro
        self.tableFrame = tk.Frame(self.main, width=1050, height=490)
        self.tableFrame.config(bg="white")
        self.tableFrame.place(x=843, y=250, anchor="center")

        tabela = pgm.VisualizaTabela(self.tableFrame)

        # Frame para visualizar os outputs e mensagens do sistema
        # 985x220 | fundo cinza claro | desabilitado | e tipo flat
        self.outPutBox = tk.Text(self.main,
                                 background="#F0F0F0",
                                 relief="flat",
                                 font=minhaFont)
        self.outPutBox.place(x=810,
                             y=685,
                             anchor="center",
                             width=985,
                             height=200)

        # Entrys e Labels dos Campos
        entryProduto = tk.Entry(
            self.main,
            fg="#333333",
            bg="#F0F0F0",
            highlightthickness=0,
            bd=0,
            font=pgm.textoEntry,
            width=20,
        )
        entryProduto.insert(0, "Produto")

        # Campo de input de Setor
        entrySetor = ttk.Combobox(
            self.main,
            values=[
                "Biscoitos", "Cereais", "Enlatados", "Farinhas", "Laticinios",
                "Oleos", "Bebidas", "Gelados", "Outros"
            ],
            font=pgm.textoEntry,
        )
        entrySetor.current(0)

        # Campo de input para a data de validade
        entryValidade = DateEntry(self.main, font=pgm.textoEntry)

        # Campo de input para o Id

        idString = tk.StringVar()
        idString.set("ID")

        entryId = tk.Entry(self.main,
                           fg="#333333",
                           bg="#F0F0F0",
                           highlightthickness=0,
                           bd=0,
                           font=pgm.textoEntry,
                           justify="right",
                           textvariable=idString)
        entryId.configure(state="readonly", readonlybackground="#F0F0F0")

        # Estilo do entry Setor
        setorStyle = ttk.Style(self.main)
        setorStyle.map("TCombobox", fieldbackground=[("readonly", "#F0F0F0")])
        setorStyle.configure(
            "my.TCombobox",
            foreground="#333333",
            borderwidth=0,
            relief="flat",
        )

        entrySetor.configure(style="my.TCombobox", state="readonly")

        # Estilo do entry validade
        validadeStyle = ttk.Style(self.main)
        validadeStyle.configure("my.DateEntry",
                                fieldbackground="#F0F0F0",
                                foreground="#333333",
                                borderwidth=0,
                                relief="flat")
        entryValidade.configure(style="my.DateEntry")

        # Posicionamentos dos entries e redimensao das suas propriedades
        entryProduto.place(x=320, y=525, anchor="nw", width=250, height=30)
        entrySetor.place(x=583, y=525, anchor="nw", width=200, height=30)
        entryValidade.place(x=795, y=525, anchor="nw", width=200, height=30)
        entryId.place(x=1008, y=525, anchor="nw", width=80, height=30)

        #Config dos botoes laterais

        largura = 18
        altura = 2

        #--- BotOes do menu Principal ---

        self.btnProcuraArquivo = tk.Button(
            self.lateral,
            text="Abrir Arquivo",
            width=largura,
            height=altura,
            borderwidth=0,
            font=minhaFont,
            bg="white",
            fg="#262626",
            command=lambda: pgm.IniciaArquivo(self.main, tabela))
        self.btnProcuraArquivo.place(relx=0.5, rely=0.55, anchor="center")

        #Adicionar a Imagem para editar item
        imagemLapis = tk.PhotoImage(file="perdasGui/assets/Lapis.png")

        #botao para editar remessa
        self.editarBtn = tk.Button(
            self.main,
            image=imagemLapis,
            relief="flat",
            highlightthickness=0,
            command=lambda: [
                pgm.queryExecuter(operacao=1,
                                  entryProduto=entryProduto,
                                  entrySetor=entrySetor,
                                  entryValidade=entryValidade,
                                  identEntry=entryId),
                pgm.resetaDados(entryProduto, entrySetor, idString, tabela)
            ])
        self.editarBtn.image = imagemLapis
        self.editarBtn.place(x=1185, y=515, anchor="nw", width=50, height=50)

        #Adicionar a Imagem para Excluir o item
        imagemLixo = tk.PhotoImage(file="perdasGui/assets/lixeira1.png")

        self.excluirBtn = tk.Button(
            self.main,
            image=imagemLixo,
            relief="flat",
            highlightthickness=0,
            activebackground="#F2695E",
            bg="#e55a58",
            command=lambda: [
                pgm.queryExecuter(operacao=2,
                                  entryProduto=entryProduto,
                                  entrySetor=entrySetor,
                                  entryValidade=entryValidade,
                                  identEntry=entryId),
                pgm.resetaDados(entryProduto, entrySetor, idString, tabela)
            ])
        self.excluirBtn.image = imagemLixo
        self.excluirBtn.place(x=1243, y=515, anchor="nw", width=50, height=50)

        # Adicionar Imagem de Inserimento de item
        imagemAdicao = tk.PhotoImage(file="perdasGui/assets/sum1.png")

        self.InserirBtn = tk.Button(
            self.main,
            image=imagemAdicao,
            relief="flat",
            highlightthickness=0,
            activebackground="#9AF598",
            bg="#92e891",
            command=lambda: [
                pgm.queryExecuter(0, entryProduto, entrySetor, entryValidade),
                pgm.resetaDados(entryProduto, entrySetor, idString, tabela)
            ])
        self.InserirBtn.image = imagemAdicao
        self.InserirBtn.place(x=1125, y=515, anchor="nw", width=50, height=50)

        # Adicionar a Imagem de logo no corpo lateral
        imagemLogo = Image.open("perdasGui/assets/logo.png")
        logo = ImageTk.PhotoImage(imagemLogo)

        self.labelLogo = tk.Label(self.lateral, image=logo, borderwidth=0)
        self.labelLogo.image = logo

        self.labelLogo.place(relx=0.49, rely=0.3, anchor="center")

        tabela.bind(
            "<Double-1>",
            lambda event: pgm.selecionaItem(event,
                                            entryProduto=entryProduto,
                                            entrySetor=entrySetor,
                                            entryValidade=entryValidade,
                                            idVar=idString))
Beispiel #10
0
def date_time():
    window = Tk()
    window.geometry("300x300")
    window.title("Reminder")
    label1 = Label(window,
                   text="Please enter the details",
                   bg="yellow",
                   font="arial 11 bold")
    label1.place(width=300)
    label2 = Label(window,
                   text="Event Name",
                   bg="black",
                   fg="white",
                   font="arial 9 bold")
    label2.place(x=5, y=50, width=80)

    event = StringVar()
    ev_date = StringVar()
    hrs = StringVar()
    min1 = StringVar()
    am = StringVar()

    entry1 = Entry(window, textvariable=event, font="arial 9 bold")
    entry1.place(x=130, y=51, width=160)

    label3 = Label(window,
                   text="Date",
                   bg="black",
                   fg="white",
                   font="arial 9 bold")
    label3.place(x=5, y=100, width=80)
    cal = DateEntry(window, textvariable=ev_date, date_pattern='yyyy-mm-dd')
    cal.place(x=130, y=100)

    label4 = Label(window,
                   text="Time",
                   bg="#123456",
                   fg="white",
                   font="arial 9 bold")
    label4.place(x=5, y=150, width=80)
    hr = ttk.Combobox(window, textvariable=hrs)
    hr['values'] = ('01', '02', '03', '04', '05', '06', '07', '08', '09', '10',
                    '11', '12')
    hr.current(11)
    hr.place(x=131, y=150, width=40)
    sp2 = Spinbox(window, from_=0, to=59, textvariable=min1)
    sp2.place(x=181, y=150, width=40)
    lb = ttk.Combobox(window, textvariable=am)
    lb['values'] = ('a.m.', 'p.m.')
    lb.place(x=231, y=150, width=40)
    lb.current(1)

    window.event1 = 0
    window.event_date = 0
    window.event_time = 0

    def pick():
        window.event1 = event.get()
        window.event_date = ev_date.get()
        hrs1 = hrs.get()
        m1 = min1.get()
        am1 = am.get()
        window.event_time = hrs1 + ':' + m1 + ' ' + am1
        window.destroy()

    bn = Button(window,
                bg="blue",
                fg="white",
                font="arial 11 bold",
                text="Done",
                command=pick)
    bn.place(x=100, y=200, width=100)
    speak.say(
        "Please enter the event details in the reminder window that appears in front of you."
    )
    speak.runAndWait()
    window.mainloop()
    a = [window.event1, window.event_date, window.event_time]
    return a
Beispiel #11
0
def save_photo():
    """Save the desired photo"""
    #global img
    save_name = filedialog.asksaveasfilename(initialdir="./", title="Save Image", filetypes=(("JPEG","*.jpg"),("All Files","*.*")))
    img.save(save_name + ".jpg")


#Define GUI Layout
#Create frames
input_frame = tkinter.Frame(root, bg=nasa_blue)
output_frame = tkinter.Frame(root, bg=nasa_white)
input_frame.pack()
output_frame.pack(padx=50, pady=(0,25))

#Layout for input frame
calander = DateEntry(input_frame, width=10,  font=text_font, background=nasa_blue, foreground=nasa_white)
#date_entry = tkinter.Entry(input_frame, width=10)
submit_button = tkinter.Button(input_frame, text="Submit", font=text_font, bg=nasa_light_blue, command=get_request)
full_button = tkinter.Button(input_frame, text='Full Photo', font=text_font, bg=nasa_light_blue, command=full_photo)
save_button = tkinter.Button(input_frame, text="Save Photo", font=text_font, bg=nasa_light_blue, command=save_photo)
quit_button = tkinter.Button(input_frame, text="Exit", font=text_font, bg=nasa_red,command=root.destroy)

calander.grid(row=0, column=0, padx=5, pady=10)
#date_entry.grid(row=0, column=0)
submit_button.grid(row=0, column=1, padx=5, pady=10, ipadx=35)
full_button.grid(row=0, column=2, padx=5, pady=10, ipadx=25)
save_button.grid(row=0, column=3, padx=5, pady=10, ipadx=20)
quit_button.grid(row=0, column=4, padx=5, pady=10, ipadx=50)

#Layout for output frame
picture_date = tkinter.Label(output_frame)
Beispiel #12
0
    julian_cal_var.set(jdn_to_julian(jdn_variable.get()))


def on_jdnpressed():
    julian_cal_var.set(jdn_to_julian(jdn_variable.get()))
    gregorian_cal_var.set(jdn_to_gregorian(jdn_variable.get()))


date_widget = ttk.Frame(tab6)
date_widget.pack()

gregorian_cal_var = StringVar()
gregorian_cal = DateEntry(date_widget,
                          textvariable=gregorian_cal_var,
                          width=32,
                          background='darkblue',
                          foreground='white',
                          borderwidth=0,
                          year=2020,
                          date_pattern='MM/dd/yyyy')
gregorian_cal.grid(row=2, column=1, padx=5, pady=5)
gregorian_cal_var.set('06/24/2020')
gregorian_entry = ttk.Button(date_widget,
                             text="Gregorian Enter",
                             width=32,
                             command=on_gregorianpressed)
gregorian_entry.grid(row=3, column=1, padx=5, pady=5)

ttk.Label(date_widget, text='Gregorian Date').grid(row=1,
                                                   column=1,
                                                   padx=5,
                                                   pady=5)
Beispiel #13
0
entry_var2 = tk.StringVar()
entry2 = ttk.Entry(root, textvariable=entry_var2, justify=tk.CENTER)
label2 = ttk.Label(root, text="Nombre del actor", background="#ffffff")
if demandante:
    entry2.insert(0, demandante)

# Crear caja de texto 3, nombre del demandado.
entry_var3 = tk.StringVar()
entry3 = ttk.Entry(root, textvariable=entry_var3, justify=tk.CENTER)
label3 = ttk.Label(root, text="Nombre del demandado", background="#ffffff")
if demandado:
    entry3.insert(0, demandado)

# Crear caja de fecha 4, fecha de acta.
entry_var4 = tk.StringVar()
entry4 = DateEntry(root, textvariable=entry_var4, date_pattern='dd/mm/Y', width=17, background='gray',
                   foreground='white', borderwidth=1)
label4 = ttk.Label(root, text="Fecha del Acta de Infracción", background="#ffffff")
if actainfraccion:
    entry4.set_date(actainfraccion)

# Crear caja de fecha 5, fecha resolucion impugnada.
entry_var5 = tk.StringVar()
entry5 = DateEntry(root, textvariable=entry_var5, date_pattern='dd/mm/Y', width=17, background='gray',
                   foreground='white', borderwidth=1)
label5 = ttk.Label(root, text="Fecha de la Resolución impugnada", background="#ffffff")
if resolucionrecargo:
    entry5.set_date(resolucionrecargo)

# Crear caja de texto 15, porcentaje impuesto por la Inspección.
entry_var15 = tk.StringVar()
entry15 = ttk.Entry(root, textvariable=entry_var15, justify=tk.CENTER)
Beispiel #14
0
    def login(self):
        flag = 0
        with sqlite3.connect('db.db') as db:
            c = db.cursor()

        find_user = ('SELECT * FROM user WHERE username = ? and password = ?')
        c.execute(find_user, [(self.username.get()), (self.password.get())])
        result = c.fetchall()

        if result:
            flag = 1
        else:
            ms.showerror('Oops!', 'Username Not Found.')

        if flag == 1:
            self.master.destroy()

            def Error(a):
                if a == 1:
                    ms.showerror("ERROR!", "Incorrect Entry. Retry.")
                if a == 2:
                    ms.showerror("ERROR!", "Insufficient Budget. Add Budget.")

            def AddItem():
                a = item.get()
                b = cal.get()
                c = expense.get()

                with sqlite3.connect('db.db') as db:
                    cd = db.cursor()
                f1 = 'Select sum(cost) from expenses where username=?'
                f2 = 'Select sum(amount) from budget where username=?'
                cd.execute(f1, [(self.username.get())])
                Esum = cd.fetchall()
                cd.execute(f2, [(self.username.get())])
                Bsum = cd.fetchall()

                if (a == '' or c == ''):
                    Error(1)
                    return

                try:
                    c = int(c)
                except:
                    Error(1)
                    return

                try:
                    s1 = int(Bsum[0][0])
                except:
                    s1 = 0

                try:
                    s2 = int(Esum[0][0])
                except:
                    s2 = 0

                if (s1 - s2 - c < 0):
                    Error(2)
                    return

                with sqlite3.connect('db.db') as db:
                    cd = db.cursor()
                insert = 'INSERT INTO expenses(username,cost,date,item) VALUES(?,?,?,?)'
                cd.execute(insert, [(self.username.get()), c, b, a])
                db.commit()
                ShowData(5, Table, ['Item', 'Date', 'Expense'])

            def AddAmount():
                a = amt.get()
                b = Bcal.get()

                try:
                    a = int(a)
                except:
                    Error(1)
                    return

                with sqlite3.connect('db.db') as db:
                    c = db.cursor()
                insert = 'INSERT INTO budget(username,amount,date) VALUES(?,?,?)'
                c.execute(insert, [(self.username.get()), a, b])
                db.commit()
                ShowData(90, Table1, ['Amount', 'Date'])

            def ShowData(t, table, col):
                k = 0
                for i in col:
                    try:
                        table.heading(i, text=i.title())
                        table.column(k, anchor='c')
                        k += 1
                    except:
                        pass
                table.grid(row=4, column=1, padx=t, pady=5, sticky='w')

                if t == 90:
                    with sqlite3.connect('db.db') as db:
                        c = db.cursor()
                    f = (
                        'Select * from budget where username=? order by date desc'
                    )
                    c.execute(f, [(self.username.get())])
                    x = c.fetchall()

                    table.delete(*table.get_children())
                    for data in x:
                        d = [data[1], data[2]]
                        table.insert('', 'end', values=d)

                    with sqlite3.connect('db.db') as db:
                        cd = db.cursor()
                    f1 = 'Select sum(amount) from budget where username=?'
                    cd.execute(f1, [(self.username.get())])
                    Bsum = cd.fetchall()
                    try:
                        s1 = int(Bsum[0][0])
                    except:
                        s1 = 0
                    T1 = Text(Budget,
                              bg='white',
                              font='TkDefaultFont',
                              height=1,
                              width=25)
                    T1.insert(INSERT, "Total Budget:	     " + str(s1))
                    T1.grid(row=5, column=1, padx=90, pady=5, sticky='w')

                if t == 5:
                    with sqlite3.connect('db.db') as db:
                        c = db.cursor()
                    f = (
                        'Select * from expenses where username=? order by date desc'
                    )
                    c.execute(f, [(self.username.get())])
                    x = c.fetchall()

                    table.delete(*table.get_children())
                    for data in x:
                        d = [data[3], data[2], data[1]]
                        table.insert('', 'end', values=d)

                    with sqlite3.connect('db.db') as db:
                        cd = db.cursor()
                    f1 = 'Select sum(cost) from expenses where username=?'
                    cd.execute(f1, [(self.username.get())])
                    Esum = cd.fetchall()
                    try:
                        s1 = int(Esum[0][0])
                    except:
                        s1 = 0

                    T1 = Text(Exp,
                              bg='white',
                              font='TkDefaultFont',
                              height=1,
                              width=25)
                    T1.insert(INSERT, "Total Expenses:	 " + str(s1))
                    T1.grid(row=5, column=1, padx=200, pady=5, sticky='w')

            def graph_data():
                leg = 'Money Spent', 'Money left'
                amount = 0
                cost = 0
                with sqlite3.connect('db.db') as db:
                    c = db.cursor()
                find = ('SELECT amount FROM budget WHERE username = ?')
                c.execute(find, [(self.username.get())])
                for row in c.fetchall():
                    amount += row[0]
                find = ('SELECT cost FROM expenses WHERE username = ?')
                c.execute(find, [(self.username.get())])
                for row in c.fetchall():
                    cost += row[0]
                if cost == 0 and amount == 0:
                    ms.showerror("Error", "No budget and expenses entered!")
                    return
                sizes = [cost, amount - cost]
                colors = ['red', 'gold']
                labels = [cost, amount - cost]
                explode = [0.1, 0]
                patches, texts = plt.pie(sizes,
                                         explode=explode,
                                         colors=colors,
                                         labels=labels,
                                         shadow=True,
                                         startangle=90)
                plt.legend(patches, leg, loc="best")
                plt.axis('equal')
                plt.tight_layout()
                plt.show()

            def deleteData(win, col):
                if win == Budget:
                    with sqlite3.connect('db.db') as db:
                        cd = db.cursor()
                    f1 = 'delete from budget where username=?'
                    try:
                        cd.execute(f1, [self.username.get()])
                    except:
                        pass

                    db.commit()
                    ShowData(90, Table1, col)
                else:
                    with sqlite3.connect('db.db') as db:
                        cd = db.cursor()
                    f1 = 'delete from expenses where username=?'
                    try:
                        cd.execute(f1, [self.username.get()])
                    except:
                        pass
                    db.commit()

                    ShowData(5, Table, col)

            def delete_selected(t, p):
                select = t.selection()
                sel = t.set(select)
                for i in select:
                    t.delete(i)
                if p == 1:
                    a = sel['Amount']
                    b = sel['Date']
                    with sqlite3.connect('db.db') as db:
                        cd = db.cursor()
                    f1 = 'delete from budget where username= ? and amount= ? and date= ?'
                    cd.execute(f1, [self.username.get(), a, b])
                    db.commit()
                    ShowData(90, t, ['Amount', 'Date'])
                if p == 2:
                    a = sel['Item']
                    b = sel['Date']
                    c = sel['Expense']
                    with sqlite3.connect('db.db') as db:
                        cd = db.cursor()
                    f1 = 'delete from expenses where username= ? and item= ? and date= ? and cost=?'
                    cd.execute(f1, [self.username.get(), a, b, c])
                    db.commit()
                    ShowData(5, t, ['Item', 'Date', 'Expense'])

            def sort(a, b, table):
                global x1, x2, x3, x4
                with sqlite3.connect('db.db') as db:
                    cd = db.cursor()
                if (a == 1):
                    if (b == 1):
                        if x1 == 1:
                            f1 = 'Select * from expenses where username=? order by item asc'
                            x1 = 0
                            cd.execute(f1, [(self.username.get())])
                        else:
                            f1 = 'Select * from expenses where username=? order by item desc'
                            x1 = 1
                            cd.execute(f1, [(self.username.get())])
                    if (b == 2):
                        if x2 == 1:
                            f1 = 'Select * from expenses where username=? order by date asc'
                            x2 = 0
                            cd.execute(f1, [(self.username.get())])
                        else:
                            f1 = 'Select * from expenses where username=? order by date desc'
                            x2 = 1
                            cd.execute(f1, [(self.username.get())])
                    if (b == 3):
                        if x3 == 1:
                            f1 = 'Select * from expenses where username=? order by cost asc'
                            x3 = 0
                            cd.execute(f1, [(self.username.get())])
                        else:
                            f1 = 'Select * from expenses where username=? order by cost desc'
                            x3 = 1
                            cd.execute(f1, [(self.username.get())])

                    x = cd.fetchall()
                    table.delete(*table.get_children())
                    for data in x:
                        d = [data[3], data[2], data[1]]
                        table.insert('', 'end', values=d)

                if (a == 2):
                    if (b == 1):
                        if x4 == 1:
                            f1 = 'Select * from budget where username=? order by amount asc'
                            x4 = 0
                            cd.execute(f1, [(self.username.get())])
                        else:
                            f1 = 'Select * from budget where username=? order by amount desc'
                            x4 = 1
                            cd.execute(f1, [(self.username.get())])
                    if (b == 2):
                        if x3 == 1:
                            f1 = 'Select * from budget where username=? order by date asc'
                            x3 = 0
                            cd.execute(f1, [(self.username.get())])
                        else:
                            f1 = 'Select * from budget where username=? order by date desc'
                            x3 = 1
                            cd.execute(f1, [(self.username.get())])

                    x = cd.fetchall()
                    table.delete(*table.get_children())
                    for data in x:
                        d = [data[1], data[2]]
                        table.insert('', 'end', values=d)

            def deleteUser():
                f1 = 'delete from budget where username=?'
                try:
                    cd.execute(f1, [(self.username.get())])
                except:
                    pass
                f1 = 'delete from expense where username=?'
                try:
                    cd.execute(f1, [(self.username.get())])
                except:
                    pass
                f1 = 'delete from user where username=?'
                cd.execute(f1, [(self.username.get())])

            root1 = Tk()
            root1.title("Let's do this")
            root1.geometry('700x500')
            nb = Nb(root1)

            Budget = Frame(nb, width=500, height=500)
            Exp = Frame(nb, width=500, height=500)
            Graph = Frame(nb, width=500, height=500)

            nb.add(Budget, text="Budget")
            nb.add(Exp, text="Expense")
            nb.add(Graph, text="Graph")
            nb.pack(fill=BOTH, expand=1)

            #--------------- BUDGET-----------------------
            #Amount
            amt = StringVar()
            Amount = Label(Budget, text="Amount")
            Amount.grid(row=0, column=0, padx=5, pady=5)
            AmountEntry = Entry(Budget, textvariable=amt)
            AmountEntry.grid(row=0, column=1, padx=5, pady=5, sticky='w')

            #BDate
            BDate = Label(Budget, text="Date")
            BDate.grid(row=1, column=0, padx=5, pady=5)
            Bcal = DateEntry(Budget, width=17, date_pattern='dd/mm/yyyy')
            Bcal.grid(row=1, column=1, padx=5, pady=5, sticky='w')

            # Add Amount
            Add = Button(Budget, text="Add Amount", command=AddAmount)
            Add.grid(row=3, column=1, padx=5, pady=5, sticky='w')

            #BTable
            l = ['Amount', 'Date']
            Table1 = ttk.Treeview(Budget, selectmode='browse')
            Table1.configure(column=l, show='headings', height=10)
            Table1.heading('Amount', command=lambda: sort(2, 1, Table1))
            Table1.heading('Date', command=lambda: sort(2, 2, Table1))

            #Delete all entries
            DeleteAll = Button(Budget,
                               text="Delete All Entries",
                               command=lambda: deleteData(Budget, l))
            DeleteAll.grid(row=3, column=1, padx=350, pady=5, sticky='w')

            #Delete Selected
            bSel = Button(Budget,
                          text="Delete Selected",
                          command=lambda: delete_selected(Table1, 1))
            bSel.grid(row=3, column=1, padx=175, pady=5, sticky='w')

            #Logout
            bLout = Button(Budget,
                           text="Log Out",
                           command=lambda: LogOut(root1))
            bLout.grid(row=7, column=1, padx=265, pady=5, sticky='w')

            ShowData(90, Table1, l)

            #--------------- EXPENSE-----------------------
            #Item
            item = StringVar()
            Item = Label(Exp, text="Item")
            Item.grid(row=0, column=0, padx=5, pady=5)
            ItemEntry = Entry(Exp, textvariable=item)
            ItemEntry.grid(row=0, column=1, padx=5, pady=5, sticky='w')

            #Date
            Date = Label(Exp, text="Date")
            Date.grid(row=1, column=0, padx=5, pady=5)
            cal = DateEntry(Exp, width=17, date_pattern='dd/mm/yyyy')
            cal.grid(row=1, column=1, padx=5, pady=5, sticky='w')

            #Expense
            expense = StringVar()
            Expense = Label(Exp, text="Cost")
            Expense.grid(row=2, column=0, padx=5, pady=5)
            ExpenseEntry = Entry(Exp, textvariable=expense)
            ExpenseEntry.grid(row=2, column=1, padx=5, pady=5, sticky='w')

            #Add
            Add = Button(Exp, text="Add Item", command=AddItem)
            Add.grid(row=3, column=1, padx=75, pady=5, sticky='w')

            #Table
            l = ['Item', 'Date', 'Expense']
            Table = ttk.Treeview(Exp, selectmode='browse')
            Table.configure(column=l, show='headings', height=10)
            Table.heading('Item', command=lambda: sort(1, 1, Table))
            Table.heading('Date', command=lambda: sort(1, 2, Table))
            Table.heading('Expense', command=lambda: sort(1, 3, Table))

            #Delete Selected
            eSel = Button(Exp,
                          text="Delete Selected",
                          command=lambda: delete_selected(Table, 2))
            eSel.grid(row=3, column=1, padx=270, pady=5, sticky='w')

            #Delete all entries
            EDeleteAll = Button(Exp,
                                text="Delete All Entries",
                                command=lambda: deleteData(Exp, l))
            EDeleteAll.grid(row=3, column=1, padx=450, pady=5, sticky='w')

            #Log Out
            ELout = Button(Exp, text="Log Out", command=lambda: LogOut(root1))
            ELout.grid(row=7, column=1, padx=275, pady=5, sticky='w')

            ShowData(5, Table, l)

            #----------------------------Graph------------------------------------------------
            gLout = Button(Graph,
                           text="Log Out",
                           command=lambda: LogOut(root1))
            gLout.pack(side=BOTTOM)

            get_graph = Button(Graph,
                               text="Graph It!",
                               command=graph_data,
                               height=5,
                               width=10)
            get_graph.place(x=300, y=90)

            root1.mainloop()
def details_form():
    def database():
        fn = full_name.get()
        ad = address.get()
        dis = d.get()
        cont = contact.get()
        sd = start_date.get()
        ed = end_date.get()
        try:
            conn = sql.connect('covid_analasys.db')
            cur = conn.cursor()
            cur.execute(
                "insert into patients(fullname, address, district, contact, start_date, end_date) "
                "values (?,?,?,?,?,?)", (fn, ad, dis, cont, sd, ed))
            conn.commit()
            conn.close()
        except IntegrityError:
            return 'Invalid Input'

    label_1 = Label(root,
                    text="FullName",
                    width=20,
                    font=("bold", 10),
                    bg="light blue")
    label_1.place(x=70, y=130)
    entry_1 = Entry(root, textvar=full_name)
    entry_1.place(x=240, y=130)

    label_2 = Label(root,
                    text="Address",
                    width=20,
                    font=("bold", 10),
                    bg="light blue")
    label_2.place(x=70, y=180)
    entry_2 = Entry(root, textvar=address)
    entry_2.place(x=240, y=180)

    label_3 = Label(root,
                    text="Districts",
                    width=20,
                    font=("bold", 10),
                    bg="light blue")
    label_3.place(x=70, y=230)
    list_of_districts = ['Chennai', 'Kanchipuram', 'Chengalpet', 'Tiruvallur']
    droplist = OptionMenu(root, d, *list_of_districts)
    droplist.config(width=15)
    d.set('Select your District')
    droplist.place(x=240, y=230)

    label_4 = Label(root,
                    text="Contact",
                    width=20,
                    font=("bold", 10),
                    bg="light blue")
    label_4.place(x=70, y=280)
    entry_4 = Entry(root, textvar=contact)
    entry_4.place(x=240, y=280)

    label_5 = Label(root,
                    text="Start Date",
                    width=20,
                    font=("bold", 10),
                    bg="light blue")
    label_5.place(x=70, y=330)
    start_date = DateEntry(root,
                           width=30,
                           bg="darkblue",
                           fg="white",
                           date_pattern='dd/mm/yyyy')
    start_date.grid()
    start_date.place(x=240, y=330)

    label_6 = Label(root,
                    text="End Date",
                    width=20,
                    font=("bold", 10),
                    bg="light blue")
    label_6.place(x=70, y=380)
    end_date = DateEntry(root,
                         width=30,
                         bg="darkblue",
                         fg="white",
                         day=datetime.now().day + 10,
                         date_pattern='dd/mm/yyyy')
    end_date.grid()
    end_date.place(x=240, y=380)

    Button(root,
           text='Enroll',
           width=20,
           bg="blue",
           fg='white',
           command=database).place(x=180, y=450)
Beispiel #16
0
# ############################ Register ############################ #
# ################################################################## #
tk.Label(register, text='Frist Name').grid(row=0, column=0)
first_name = tk.StringVar()
tk.Entry(register, textvariable=first_name).grid(row=0, column=1)

tk.Label(register, text='Last Name').grid(row=1, column=0)
last_name = tk.StringVar()
tk.Entry(register, textvariable=last_name).grid(row=1, column=1)

tk.Label(register, text='Birth Date').grid(row=2, column=0)
birth_date = tk.StringVar()
DateEntry(
    register,
    textvariable=birth_date,
    background='darkgreen',
    foreground='white',
    width=10
    ).grid(row=2, column=1, sticky=tk.W+tk.E)

tk.Label(register, text='Gender').grid(row=3, column=0)
gender = tk.StringVar()
gender.set('-select-')
choices = ['F', 'M', 'Others', 'Not to Say']
tk.OptionMenu(register, gender, *choices).grid(row=3, column=1, sticky=tk.W+tk.E)

tk.Button(
    register,
    text='Register',
    command=register_btn
    ).grid(row=4, column=0, columnspan=2, sticky=tk.W+tk.E)
Beispiel #17
0
    csv_ops.export_csv(headers_hed, head_data_pre, head_csv_pre)
    csv_ops.export_csv(headers_asm, assm_data, assm_csv)
    csv_ops.export_csv(headers_hed, head_data_post, head_csv_post)

    # run DMT to import the changes into Epicor
    dmt.dmt_import(dmt_head, head_csv_pre)  # need to update job header first
    dmt.dmt_import(dmt_assm, assm_csv)
    dmt.dmt_import(dmt_head, head_csv_post)


if __name__ == '__main__':
    # create the UI element that displays the date picker
    root = tkinter.Tk()
    root.withdraw()
    s = ttk.Style(root)
    s.theme_use('clam')
    top = tkinter.Toplevel(root)
    ttk.Label(top, text='Pick base date').pack(padx=10, pady=10)
    cal = DateEntry(top,
                    width=12,
                    background='darkblue',
                    foreground='white',
                    borderwidth=2)
    cal.pack(padx=10, pady=10)
    ttk.Button(top, text='OK', command=root.quit).pack(padx=10, pady=10)
    root.mainloop()

    base_date = cal.get_date()

    correct_wp_dates(base_date)
Beispiel #18
0
class DateDialog(tk.Toplevel):

    def __init__(self, parent, controller):
        tk.Toplevel.__init__(self, parent)
        self.title("Änderung via Datum")
        self.resizable(0,0)
        
        self.controller = controller
        self.return_value = None
        self.date = datetime.datetime.now()

        tk.Label(self, text="Datum auswählen:").pack(side=tk.TOP, pady=8)

        values_frame = tk.Frame(self)
        values_frame.pack(pady=4)

        self.calendar = DateEntry(
            values_frame,
            year=self.date.year,
            month=self.date.month,
            day=self.date.day,
            locale="de_DE",
        )
        self.calendar.bind("<<DateEntrySelected>>", self.set_new_date)
        self.calendar.pack(pady=6)

        self.labels = {
            "Stunde" : None,
            "Minute" : None,
            "Sekunde" : None
        }

        for label in self.labels:
            frame = tk.Frame(values_frame)
            frame.pack(side=tk.LEFT, padx=2)
            tk.Label(frame, text=label).pack(side=tk.LEFT)
            if label == "Stunde":
                self.labels[label] = tk.Spinbox(frame, from_=0, to=23, width=5)
            else:
                self.labels[label] = tk.Spinbox(frame, from_=0, to=60, width=5)
            self.labels[label].pack(side=tk.RIGHT, padx=2)

        button_frame = tk.Frame(self)
        button_frame.pack(side=tk.BOTTOM, pady=6)

        self.ok_button = tk.Button(button_frame, text="OK", width=10, command=self.on_ok)
        self.cancle_button = tk.Button(button_frame, text="Abbrechen", width=10, command=self.on_cancle)
        
        self.ok_button.pack(side=tk.LEFT, padx=5)
        self.cancle_button.pack(side=tk.RIGHT, padx=5)

    def set_new_date(self, e):
            self.date = self.calendar.get_date()

    def on_ok(self, event=None):
        self.return_value = datetime.datetime(
            year=self.date.year,
            month=self.date.month,
            day=self.date.day,
            hour=int(self.labels["Stunde"].get()), 
            minute=int(self.labels["Minute"].get()),
            second=int(self.labels["Sekunde"].get())
        )
        self.destroy()
        
    
    def on_cancle(self, event=None):
        self.destroy()

    def show(self):
        self.wm_deiconify()
        self.wait_window()
        return self.return_value
        
class Department_Outpatient:
    def __init__(self, Department_Window=None):
        '''This class configures and populates the toplevel window.
           Department_Window is the toplevel containing window.'''
        _bgcolor = '#d9d9d9'  # X11 color: 'gray85'
        _fgcolor = '#000000'  # X11 color: 'black'
        _compcolor = '#d9d9d9'  # X11 color: 'gray85'
        _ana1color = '#d9d9d9'  # X11 color: 'gray85'
        _ana2color = '#ececec'  # Closest X11 color: 'gray92'
        font10 = "-family {Helvetica} -size 10 -weight normal -slant"  \
            " roman -underline 0 -overstrike 0"
        font11 = "-family {Helvetica} -size 13 -weight normal -slant "  \
            "roman -underline 0 -overstrike 0"
        font9 = "-family {Segoe UI} -size 9 -weight normal -slant "  \
            "roman -underline 0 -overstrike 0"
        self.style = ttk.Style()
        self.data = Database("dental.db")
        if sys.platform == "win32":
            self.style.theme_use('winnative')
        self.style.configure('.', background=_bgcolor)
        self.style.configure('.', foreground=_fgcolor)
        self.style.map('.',
                       background=[('selected', _compcolor),
                                   ('active', _ana2color)])

        Department_Window.geometry("1491x739+35+31")
        Department_Window.minsize(148, 1)
        Department_Window.maxsize(4112, 1030)
        Department_Window.resizable(1, 1)
        Department_Window.title("DEPARTMENT OUT-PATIENT")
        Department_Window.configure(background="#40b3a3")
        Department_Window.configure(highlightbackground="#d9d9d9")
        Department_Window.configure(highlightcolor="black")

        self.menubar = tk.Menu(Department_Window,
                               font=font9,
                               bg=_bgcolor,
                               fg=_fgcolor)
        Department_Window.configure(menu=self.menubar)

        self.File = tk.Menu(Department_Window, tearoff=0)
        self.menubar.add_cascade(
            menu=self.File,
            activebackground="#ececec",
            activeforeground="#000000",
            background="#d9d9d9",
            font=
            ('-family {Segoe UI} -size 9 -weight normal -slant roman -underline 0 -overstrike 0'
             ),
            foreground="#000000",
            label="File")
        self.File.add_command(
            activebackground="#ececec",
            activeforeground="#000000",
            background="#d9d9d9",
            font=
            ('-family {Segoe UI} -size 9 -weight normal -slant roman -underline 0 -overstrike 0'
             ),
            foreground="#000000",
            label="Exit",
            command=department_window_support.destroy_window)

        self.Department_Label = tk.Label(Department_Window)
        self.Department_Label.place(relx=0.241,
                                    rely=0.027,
                                    relwidth=0.518,
                                    relheight=0.084)

        self.Department_Label.configure(activebackground="#f9f9f9")
        self.Department_Label.configure(activeforeground="black")
        self.Department_Label.configure(background="#d9d9d9")
        self.Department_Label.configure(disabledforeground="#a3a3a3")
        self.Department_Label.configure(
            font="-family {Helvetica} -size 18 -weight normal")
        self.Department_Label.configure(foreground="#000000")
        self.Department_Label.configure(highlightbackground="#d9d9d9")
        self.Department_Label.configure(highlightcolor="black")
        self.Department_Label.configure(relief="raised")
        self.Department_Label.configure(text='''Department Out Patient''')

        self.on_radio = tk.IntVar(None, 1)
        self.Old_Patient_Radio = tk.Radiobutton(Department_Window)
        self.Old_Patient_Radio.place(relx=0.013,
                                     rely=0.124,
                                     relheight=0.042,
                                     relwidth=0.18)
        self.Old_Patient_Radio.configure(activebackground="#ececec")
        self.Old_Patient_Radio.configure(activeforeground="#000000")
        self.Old_Patient_Radio.configure(background="#d9d9d9")
        self.Old_Patient_Radio.configure(disabledforeground="#a3a3a3")
        self.Old_Patient_Radio.configure(font=font11)
        self.Old_Patient_Radio.configure(foreground="#000000")
        self.Old_Patient_Radio.configure(highlightbackground="#d9d9d9")
        self.Old_Patient_Radio.configure(highlightcolor="black")
        self.Old_Patient_Radio.configure(justify='left')
        self.Old_Patient_Radio.configure(text='''Old Patient''')
        self.Old_Patient_Radio.configure(value=1)
        self.Old_Patient_Radio.configure(variable=self.on_radio)

        self.New_Patient_Radio = tk.Radiobutton(Department_Window)
        self.New_Patient_Radio.place(relx=0.213,
                                     rely=0.124,
                                     relheight=0.042,
                                     relwidth=0.18)
        self.New_Patient_Radio.configure(activebackground="#ececec")
        self.New_Patient_Radio.configure(activeforeground="#000000")
        self.New_Patient_Radio.configure(background="#d9d9d9")
        self.New_Patient_Radio.configure(disabledforeground="#a3a3a3")
        self.New_Patient_Radio.configure(font=font11)
        self.New_Patient_Radio.configure(foreground="#000000")
        self.New_Patient_Radio.configure(highlightbackground="#d9d9d9")
        self.New_Patient_Radio.configure(highlightcolor="black")
        self.New_Patient_Radio.configure(justify='left')
        self.New_Patient_Radio.configure(text='''New Patient''')
        self.New_Patient_Radio.configure(value=2)
        self.New_Patient_Radio.configure(variable=self.on_radio)

        self.Health_Label = tk.Label(Department_Window)
        self.Health_Label.place(relx=0.410,
                                rely=0.124,
                                relwidth=0.169,
                                relheight=0.05)
        self.Health_Label.configure(activebackground="#f9f9f9")
        self.Health_Label.configure(activeforeground="black")
        self.Health_Label.configure(background="#d9d9d9")
        self.Health_Label.configure(disabledforeground="#a3a3a3")
        self.Health_Label.configure(
            font="-family {Helvetica} -size 13 -weight normal")
        self.Health_Label.configure(foreground="#000000")
        self.Health_Label.configure(highlightbackground="#d9d9d9")
        self.Health_Label.configure(highlightcolor="black")
        self.Health_Label.configure(text='''Health Education''')

        self.Health_Entry = tk.Entry(Department_Window)
        self.Health_Entry.place(relx=0.599,
                                rely=0.124,
                                relheight=0.048,
                                relwidth=0.137)
        self.Health_Entry.configure(background="white")
        self.Health_Entry.configure(disabledforeground="#a3a3a3")
        self.Health_Entry.configure(font="-family {Helvetica} -size 10")
        self.Health_Entry.configure(foreground="#000000")
        self.Health_Entry.configure(highlightbackground="#d9d9d9")
        self.Health_Entry.configure(highlightcolor="black")
        self.Health_Entry.configure(insertbackground="black")
        self.Health_Entry.configure(selectbackground="#c4c4c4")
        self.Health_Entry.configure(selectforeground="black")

        self.Incharge_Label = tk.Label(Department_Window)
        self.Incharge_Label.place(relx=0.013,
                                  rely=0.189,
                                  relwidth=0.169,
                                  relheight=0.05)
        self.Incharge_Label.configure(activebackground="#f9f9f9")
        self.Incharge_Label.configure(activeforeground="black")
        self.Incharge_Label.configure(background="#d9d9d9")
        self.Incharge_Label.configure(disabledforeground="#a3a3a3")
        self.Incharge_Label.configure(
            font="-family {Helvetica} -size 13 -weight normal")
        self.Incharge_Label.configure(foreground="#000000")
        self.Incharge_Label.configure(highlightbackground="#d9d9d9")
        self.Incharge_Label.configure(highlightcolor="black")
        self.Incharge_Label.configure(text='''Incharge''')

        self.Incharge_Entry = tk.Entry(Department_Window)
        self.Incharge_Entry.place(relx=0.188,
                                  rely=0.189,
                                  relheight=0.048,
                                  relwidth=0.137)
        self.Incharge_Entry.configure(background="white")
        self.Incharge_Entry.configure(disabledforeground="#a3a3a3")
        self.Incharge_Entry.configure(font="-family {Helvetica} -size 10")
        self.Incharge_Entry.configure(foreground="#000000")
        self.Incharge_Entry.configure(highlightbackground="#d9d9d9")
        self.Incharge_Entry.configure(highlightcolor="black")
        self.Incharge_Entry.configure(insertbackground="black")
        self.Incharge_Entry.configure(selectbackground="#c4c4c4")
        self.Incharge_Entry.configure(selectforeground="black")

        self.Phone_Label = tk.Label(Department_Window)
        self.Phone_Label.place(relx=0.335,
                               rely=0.189,
                               relwidth=0.162,
                               relheight=0.05)
        self.Phone_Label.configure(activebackground="#f9f9f9")
        self.Phone_Label.configure(activeforeground="black")
        self.Phone_Label.configure(background="#d9d9d9")
        self.Phone_Label.configure(disabledforeground="#a3a3a3")
        self.Phone_Label.configure(
            font="-family {Helvetica} -size 13 -weight normal")
        self.Phone_Label.configure(foreground="#000000")
        self.Phone_Label.configure(highlightbackground="#d9d9d9")
        self.Phone_Label.configure(highlightcolor="black")
        self.Phone_Label.configure(text='''Phone''')

        self.Phone_Entry = tk.Entry(Department_Window)
        self.Phone_Entry.place(relx=0.51,
                               rely=0.189,
                               relheight=0.048,
                               relwidth=0.137)
        self.Phone_Entry.configure(background="white")
        self.Phone_Entry.configure(disabledforeground="#a3a3a3")
        self.Phone_Entry.configure(font="-family {Helvetica} -size 10")
        self.Phone_Entry.configure(foreground="#000000")
        self.Phone_Entry.configure(highlightbackground="#d9d9d9")
        self.Phone_Entry.configure(highlightcolor="black")
        self.Phone_Entry.configure(insertbackground="black")
        self.Phone_Entry.configure(selectbackground="#c4c4c4")
        self.Phone_Entry.configure(selectforeground="black")

        self.Date_Label = tk.Label(Department_Window)
        self.Date_Label.place(relx=0.664,
                              rely=0.189,
                              relwidth=0.122,
                              relheight=0.05)
        self.Date_Label.configure(activebackground="#f9f9f9")
        self.Date_Label.configure(activeforeground="black")
        self.Date_Label.configure(background="#d9d9d9")
        self.Date_Label.configure(disabledforeground="#a3a3a3")
        self.Date_Label.configure(
            font="-family {Helvetica} -size 13 -weight normal")
        self.Date_Label.configure(foreground="#000000")
        self.Date_Label.configure(highlightbackground="#d9d9d9")
        self.Date_Label.configure(highlightcolor="black")
        self.Date_Label.configure(text='''Date\nYYYY-MM-DD''')

        now = datetime.datetime.now()
        self.Date_Entry = DateEntry(Department_Window,
                                    year=now.year,
                                    month=now.month,
                                    day=now.day)
        self.Date_Entry.place(relx=0.791,
                              rely=0.189,
                              relheight=0.048,
                              relwidth=0.137)
        self.Date_Entry.configure(background="white")
        self.Date_Entry.configure(date_pattern='y/mm/dd')
        self.Date_Entry.configure(font="-family {Helvetica} -size 10")
        self.Date_Entry.configure(foreground="#000000")
        self.Date_Entry.configure(borderwidth=2)
        self.Date_Entry.configure(width=12)

        # self.Date_Entry = tk.Entry(Department_Window)
        # self.Date_Entry.place(relx=0.791, rely=0.189,relheight = 0.048, relwidth=0.137)
        # self.Date_Entry.configure(background="white")
        # self.Date_Entry.configure(disabledforeground="#a3a3a3")
        # self.Date_Entry.configure(font="-family {Helvetica} -size 10")
        # self.Date_Entry.configure(foreground="#000000")
        # self.Date_Entry.configure(highlightbackground="#d9d9d9")
        # self.Date_Entry.configure(highlightcolor="black")
        # self.Date_Entry.configure(insertbackground="black")
        # self.Date_Entry.configure(selectbackground="#c4c4c4")
        # self.Date_Entry.configure(selectforeground="black")

        self.From_Label = tk.Label(Department_Window)
        self.From_Label.place(relx=0.013,
                              rely=0.311,
                              relwidth=0.162,
                              relheight=0.05)
        self.From_Label.configure(activebackground="#f9f9f9")
        self.From_Label.configure(activeforeground="black")
        self.From_Label.configure(background="#d9d9d9")
        self.From_Label.configure(disabledforeground="#a3a3a3")
        self.From_Label.configure(
            font="-family {Helvetica} -size 13 -weight normal")
        self.From_Label.configure(foreground="#000000")
        self.From_Label.configure(highlightbackground="#d9d9d9")
        self.From_Label.configure(highlightcolor="black")
        self.From_Label.configure(text='''ID From''')

        self.From_Entry = tk.Entry(Department_Window)
        self.From_Entry.place(relx=0.188,
                              rely=0.311,
                              relwidth=0.137,
                              relheight=0.048)
        self.From_Entry.configure(background="white")
        self.From_Entry.configure(disabledforeground="#a3a3a3")
        self.From_Entry.configure(font="-family {Helvetica} -size 10")
        self.From_Entry.configure(foreground="#000000")
        self.From_Entry.configure(highlightbackground="#d9d9d9")
        self.From_Entry.configure(highlightcolor="black")
        self.From_Entry.configure(insertbackground="black")
        self.From_Entry.configure(selectbackground="#c4c4c4")
        self.From_Entry.configure(selectforeground="black")

        self.To_Label = tk.Label(Department_Window)
        self.To_Label.place(relx=0.335,
                            rely=0.311,
                            relwidth=0.162,
                            relheight=0.05)
        self.To_Label.configure(activebackground="#f9f9f9")
        self.To_Label.configure(activeforeground="black")
        self.To_Label.configure(background="#d9d9d9")
        self.To_Label.configure(disabledforeground="#a3a3a3")
        self.To_Label.configure(
            font="-family {Helvetica} -size 13 -weight normal")
        self.To_Label.configure(foreground="#000000")
        self.To_Label.configure(highlightbackground="#d9d9d9")
        self.To_Label.configure(highlightcolor="black")
        self.To_Label.configure(text='''ID To''')

        self.To_Entry = tk.Entry(Department_Window)
        self.To_Entry.place(relx=0.51,
                            rely=0.311,
                            relwidth=0.137,
                            relheight=0.048)
        self.To_Entry.configure(background="white")
        self.To_Entry.configure(disabledforeground="#a3a3a3")
        self.To_Entry.configure(font="-family {Helvetica} -size 10")
        self.To_Entry.configure(foreground="#000000")
        self.To_Entry.configure(highlightbackground="#d9d9d9")
        self.To_Entry.configure(highlightcolor="black")
        self.To_Entry.configure(insertbackground="black")
        self.To_Entry.configure(selectbackground="#c4c4c4")
        self.To_Entry.configure(selectforeground="black")

        self.Endodontics_Label = tk.Label(Department_Window)
        self.Endodontics_Label.place(relx=0.013,
                                     rely=0.379,
                                     relwidth=0.162,
                                     relheight=0.05)
        self.Endodontics_Label.configure(activebackground="#f9f9f9")
        self.Endodontics_Label.configure(activeforeground="black")
        self.Endodontics_Label.configure(background="#d9d9d9")
        self.Endodontics_Label.configure(disabledforeground="#a3a3a3")
        self.Endodontics_Label.configure(
            font="-family {Helvetica} -size 13 -weight normal")
        self.Endodontics_Label.configure(foreground="#000000")
        self.Endodontics_Label.configure(highlightbackground="#d9d9d9")
        self.Endodontics_Label.configure(highlightcolor="black")
        self.Endodontics_Label.configure(text='''Endodontics''')

        self.Periodont_Label = tk.Label(Department_Window)
        self.Periodont_Label.place(relx=0.013,
                                   rely=0.447,
                                   relwidth=0.162,
                                   relheight=0.05)
        self.Periodont_Label.configure(activebackground="#f9f9f9")
        self.Periodont_Label.configure(activeforeground="black")
        self.Periodont_Label.configure(background="#d9d9d9")
        self.Periodont_Label.configure(disabledforeground="#a3a3a3")
        self.Periodont_Label.configure(
            font="-family {Helvetica} -size 13 -weight normal")
        self.Periodont_Label.configure(foreground="#000000")
        self.Periodont_Label.configure(highlightbackground="#d9d9d9")
        self.Periodont_Label.configure(highlightcolor="black")
        self.Periodont_Label.configure(text='''Periodont''')

        self.Orthodontics_Label = tk.Label(Department_Window)
        self.Orthodontics_Label.place(relx=0.013,
                                      rely=0.514,
                                      relwidth=0.162,
                                      relheight=0.05)
        self.Orthodontics_Label.configure(activebackground="#f9f9f9")
        self.Orthodontics_Label.configure(activeforeground="black")
        self.Orthodontics_Label.configure(background="#d9d9d9")
        self.Orthodontics_Label.configure(disabledforeground="#a3a3a3")
        self.Orthodontics_Label.configure(
            font="-family {Helvetica} -size 13 -weight normal")
        self.Orthodontics_Label.configure(foreground="#000000")
        self.Orthodontics_Label.configure(highlightbackground="#d9d9d9")
        self.Orthodontics_Label.configure(highlightcolor="black")
        self.Orthodontics_Label.configure(text='''Orthodontics''')

        self.Surgery_Label = tk.Label(Department_Window)
        self.Surgery_Label.place(relx=0.013,
                                 rely=0.582,
                                 relwidth=0.162,
                                 relheight=0.05)
        self.Surgery_Label.configure(activebackground="#f9f9f9")
        self.Surgery_Label.configure(activeforeground="black")
        self.Surgery_Label.configure(background="#d9d9d9")
        self.Surgery_Label.configure(disabledforeground="#a3a3a3")
        self.Surgery_Label.configure(
            font="-family {Helvetica} -size 13 -weight normal")
        self.Surgery_Label.configure(foreground="#000000")
        self.Surgery_Label.configure(highlightbackground="#d9d9d9")
        self.Surgery_Label.configure(highlightcolor="black")
        self.Surgery_Label.configure(text='''Surgery''')

        self.Pedodont_Label = tk.Label(Department_Window)
        self.Pedodont_Label.place(relx=0.013,
                                  rely=0.65,
                                  relwidth=0.162,
                                  relheight=0.05)
        self.Pedodont_Label.configure(activebackground="#f9f9f9")
        self.Pedodont_Label.configure(activeforeground="black")
        self.Pedodont_Label.configure(background="#d9d9d9")
        self.Pedodont_Label.configure(disabledforeground="#a3a3a3")
        self.Pedodont_Label.configure(
            font="-family {Helvetica} -size 13 -weight normal")
        self.Pedodont_Label.configure(foreground="#000000")
        self.Pedodont_Label.configure(highlightbackground="#d9d9d9")
        self.Pedodont_Label.configure(highlightcolor="black")
        self.Pedodont_Label.configure(text='''Pedodont''')

        self.Oralpatho_Label = tk.Label(Department_Window)
        self.Oralpatho_Label.place(relx=0.335,
                                   rely=0.379,
                                   relwidth=0.162,
                                   relheight=0.05)
        self.Oralpatho_Label.configure(activebackground="#f9f9f9")
        self.Oralpatho_Label.configure(activeforeground="black")
        self.Oralpatho_Label.configure(background="#d9d9d9")
        self.Oralpatho_Label.configure(disabledforeground="#a3a3a3")
        self.Oralpatho_Label.configure(
            font="-family {Helvetica} -size 13 -weight normal")
        self.Oralpatho_Label.configure(foreground="#000000")
        self.Oralpatho_Label.configure(highlightbackground="#d9d9d9")
        self.Oralpatho_Label.configure(highlightcolor="black")
        self.Oralpatho_Label.configure(text='''Oralpatho''')

        self.Public_Health_Label = tk.Label(Department_Window)
        self.Public_Health_Label.place(relx=0.335,
                                       rely=0.447,
                                       relwidth=0.162,
                                       relheight=0.05)
        self.Public_Health_Label.configure(activebackground="#f9f9f9")
        self.Public_Health_Label.configure(activeforeground="black")
        self.Public_Health_Label.configure(background="#d9d9d9")
        self.Public_Health_Label.configure(disabledforeground="#a3a3a3")
        self.Public_Health_Label.configure(
            font="-family {Helvetica} -size 13 -weight normal")
        self.Public_Health_Label.configure(foreground="#000000")
        self.Public_Health_Label.configure(highlightbackground="#d9d9d9")
        self.Public_Health_Label.configure(highlightcolor="black")
        self.Public_Health_Label.configure(text='''Public Health''')

        self.Oral_Mea_Label = tk.Label(Department_Window)
        self.Oral_Mea_Label.place(relx=0.335,
                                  rely=0.514,
                                  relwidth=0.162,
                                  relheight=0.05)
        self.Oral_Mea_Label.configure(activebackground="#f9f9f9")
        self.Oral_Mea_Label.configure(activeforeground="black")
        self.Oral_Mea_Label.configure(background="#d9d9d9")
        self.Oral_Mea_Label.configure(disabledforeground="#a3a3a3")
        self.Oral_Mea_Label.configure(
            font="-family {Helvetica} -size 13 -weight normal")
        self.Oral_Mea_Label.configure(foreground="#000000")
        self.Oral_Mea_Label.configure(highlightbackground="#d9d9d9")
        self.Oral_Mea_Label.configure(highlightcolor="black")
        self.Oral_Mea_Label.configure(text='''Oral mea''')

        self.Ping_Thread_Label = tk.Label(Department_Window)
        self.Ping_Thread_Label.place(relx=0.335,
                                     rely=0.582,
                                     relwidth=0.162,
                                     relheight=0.05)
        self.Ping_Thread_Label.configure(activebackground="#f9f9f9")
        self.Ping_Thread_Label.configure(activeforeground="black")
        self.Ping_Thread_Label.configure(background="#d9d9d9")
        self.Ping_Thread_Label.configure(disabledforeground="#a3a3a3")
        self.Ping_Thread_Label.configure(
            font="-family {Helvetica} -size 13 -weight normal")
        self.Ping_Thread_Label.configure(foreground="#000000")
        self.Ping_Thread_Label.configure(highlightbackground="#d9d9d9")
        self.Ping_Thread_Label.configure(highlightcolor="black")
        self.Ping_Thread_Label.configure(text='''Prostho''')

        self.Grand_Total_Label = tk.Label(Department_Window)
        self.Grand_Total_Label.place(relx=0.335,
                                     rely=0.65,
                                     relwidth=0.162,
                                     relheight=0.05)

        self.Grand_Total_Label.configure(activebackground="#f9f9f9")
        self.Grand_Total_Label.configure(activeforeground="black")
        self.Grand_Total_Label.configure(background="#d9d9d9")
        self.Grand_Total_Label.configure(disabledforeground="#a3a3a3")
        self.Grand_Total_Label.configure(
            font="-family {Helvetica} -size 13 -weight normal")
        self.Grand_Total_Label.configure(foreground="#000000")
        self.Grand_Total_Label.configure(highlightbackground="#d9d9d9")
        self.Grand_Total_Label.configure(highlightcolor="black")
        self.Grand_Total_Label.configure(text='''Grand Total''')

        #Defining the entries

        self.Endodontics_Entry = tk.Entry(Department_Window)
        self.Endodontics_Entry.place(relx=0.188,
                                     rely=0.379,
                                     relwidth=0.137,
                                     relheight=0.048)
        self.Endodontics_Entry.configure(background="white")
        self.Endodontics_Entry.configure(disabledforeground="#a3a3a3")
        self.Endodontics_Entry.configure(font="-family {Helvetica} -size 10")
        self.Endodontics_Entry.configure(foreground="#000000")
        self.Endodontics_Entry.configure(highlightbackground="#d9d9d9")
        self.Endodontics_Entry.configure(highlightcolor="black")
        self.Endodontics_Entry.configure(insertbackground="black")
        self.Endodontics_Entry.configure(selectbackground="#c4c4c4")
        self.Endodontics_Entry.configure(selectforeground="black")

        self.Periodont_Entry = tk.Entry(Department_Window)
        self.Periodont_Entry.place(relx=0.188,
                                   rely=0.447,
                                   relwidth=0.137,
                                   relheight=0.048)
        self.Periodont_Entry.configure(background="white")
        self.Periodont_Entry.configure(disabledforeground="#a3a3a3")
        self.Periodont_Entry.configure(font="-family {Helvetica} -size 10")
        self.Periodont_Entry.configure(foreground="#000000")
        self.Periodont_Entry.configure(highlightbackground="#d9d9d9")
        self.Periodont_Entry.configure(highlightcolor="black")
        self.Periodont_Entry.configure(insertbackground="black")
        self.Periodont_Entry.configure(selectbackground="#c4c4c4")
        self.Periodont_Entry.configure(selectforeground="black")

        self.Orthodontics_Entry = tk.Entry(Department_Window)
        self.Orthodontics_Entry.place(relx=0.188,
                                      rely=0.514,
                                      relwidth=0.137,
                                      relheight=0.048)
        self.Orthodontics_Entry.configure(background="white")
        self.Orthodontics_Entry.configure(disabledforeground="#a3a3a3")
        self.Orthodontics_Entry.configure(font="-family {Helvetica} -size 10")
        self.Orthodontics_Entry.configure(foreground="#000000")
        self.Orthodontics_Entry.configure(highlightbackground="#d9d9d9")
        self.Orthodontics_Entry.configure(highlightcolor="black")
        self.Orthodontics_Entry.configure(insertbackground="black")
        self.Orthodontics_Entry.configure(selectbackground="#c4c4c4")
        self.Orthodontics_Entry.configure(selectforeground="black")

        self.Surgery_Entry = tk.Entry(Department_Window)
        self.Surgery_Entry.place(relx=0.188,
                                 rely=0.582,
                                 relwidth=0.137,
                                 relheight=0.048)
        self.Surgery_Entry.configure(background="white")
        self.Surgery_Entry.configure(disabledforeground="#a3a3a3")
        self.Surgery_Entry.configure(font="-family {Helvetica} -size 10")
        self.Surgery_Entry.configure(foreground="#000000")
        self.Surgery_Entry.configure(highlightbackground="#d9d9d9")
        self.Surgery_Entry.configure(highlightcolor="black")
        self.Surgery_Entry.configure(insertbackground="black")
        self.Surgery_Entry.configure(selectbackground="#c4c4c4")
        self.Surgery_Entry.configure(selectforeground="black")

        self.Pedodont_Entry = tk.Entry(Department_Window)
        self.Pedodont_Entry.place(relx=0.188,
                                  rely=0.65,
                                  relwidth=0.137,
                                  relheight=0.048)
        self.Pedodont_Entry.configure(background="white")
        self.Pedodont_Entry.configure(disabledforeground="#a3a3a3")
        self.Pedodont_Entry.configure(font="-family {Helvetica} -size 10")
        self.Pedodont_Entry.configure(foreground="#000000")
        self.Pedodont_Entry.configure(highlightbackground="#d9d9d9")
        self.Pedodont_Entry.configure(highlightcolor="black")
        self.Pedodont_Entry.configure(insertbackground="black")
        self.Pedodont_Entry.configure(selectbackground="#c4c4c4")
        self.Pedodont_Entry.configure(selectforeground="black")

        self.Oralpatho_Entry = tk.Entry(Department_Window)
        self.Oralpatho_Entry.place(relx=0.51,
                                   rely=0.379,
                                   relwidth=0.137,
                                   relheight=0.048)
        self.Oralpatho_Entry.configure(background="white")
        self.Oralpatho_Entry.configure(disabledforeground="#a3a3a3")
        self.Oralpatho_Entry.configure(font="-family {Helvetica} -size 10")
        self.Oralpatho_Entry.configure(foreground="#000000")
        self.Oralpatho_Entry.configure(highlightbackground="#d9d9d9")
        self.Oralpatho_Entry.configure(highlightcolor="black")
        self.Oralpatho_Entry.configure(insertbackground="black")
        self.Oralpatho_Entry.configure(selectbackground="#c4c4c4")
        self.Oralpatho_Entry.configure(selectforeground="black")

        self.Public_Health_Entry = tk.Entry(Department_Window)
        self.Public_Health_Entry.place(relx=0.51,
                                       rely=0.447,
                                       relwidth=0.137,
                                       relheight=0.048)
        self.Public_Health_Entry.configure(background="white")
        self.Public_Health_Entry.configure(disabledforeground="#a3a3a3")
        self.Public_Health_Entry.configure(font="-family {Helvetica} -size 10")
        self.Public_Health_Entry.configure(foreground="#000000")
        self.Public_Health_Entry.configure(highlightbackground="#d9d9d9")
        self.Public_Health_Entry.configure(highlightcolor="black")
        self.Public_Health_Entry.configure(insertbackground="black")
        self.Public_Health_Entry.configure(selectbackground="#c4c4c4")
        self.Public_Health_Entry.configure(selectforeground="black")

        self.Oral_Mea_Entry = tk.Entry(Department_Window)
        self.Oral_Mea_Entry.place(relx=0.51,
                                  rely=0.514,
                                  relwidth=0.137,
                                  relheight=0.048)
        self.Oral_Mea_Entry.configure(background="white")
        self.Oral_Mea_Entry.configure(disabledforeground="#a3a3a3")
        self.Oral_Mea_Entry.configure(font="-family {Helvetica} -size 10")
        self.Oral_Mea_Entry.configure(foreground="#000000")
        self.Oral_Mea_Entry.configure(highlightbackground="#d9d9d9")
        self.Oral_Mea_Entry.configure(highlightcolor="black")
        self.Oral_Mea_Entry.configure(insertbackground="black")
        self.Oral_Mea_Entry.configure(selectbackground="#c4c4c4")
        self.Oral_Mea_Entry.configure(selectforeground="black")

        self.Ping_Thread_Entry = tk.Entry(Department_Window)
        self.Ping_Thread_Entry.place(relx=0.51,
                                     rely=0.582,
                                     relwidth=0.137,
                                     relheight=0.048)
        self.Ping_Thread_Entry.configure(background="white")
        self.Ping_Thread_Entry.configure(disabledforeground="#a3a3a3")
        self.Ping_Thread_Entry.configure(font="-family {Helvetica} -size 10")
        self.Ping_Thread_Entry.configure(foreground="#000000")
        self.Ping_Thread_Entry.configure(highlightbackground="#d9d9d9")
        self.Ping_Thread_Entry.configure(highlightcolor="black")
        self.Ping_Thread_Entry.configure(insertbackground="black")
        self.Ping_Thread_Entry.configure(selectbackground="#c4c4c4")
        self.Ping_Thread_Entry.configure(selectforeground="black")

        self.Grand_Total_Entry = tk.Entry(Department_Window)
        self.Grand_Total_Entry.place(relx=0.51,
                                     rely=0.65,
                                     relwidth=0.137,
                                     relheight=0.048)
        self.Grand_Total_Entry.configure(background="white")
        self.Grand_Total_Entry.configure(disabledforeground="#a3a3a3")
        self.Grand_Total_Entry.configure(font="-family {Helvetica} -size 10")
        self.Grand_Total_Entry.configure(foreground="#000000")
        self.Grand_Total_Entry.configure(highlightbackground="#d9d9d9")
        self.Grand_Total_Entry.configure(highlightcolor="black")
        self.Grand_Total_Entry.configure(insertbackground="black")
        self.Grand_Total_Entry.configure(selectbackground="#c4c4c4")
        self.Grand_Total_Entry.configure(selectforeground="black")

        self.Add_Button_ = tk.Button(Department_Window)
        self.Add_Button_.place(relx=0.798,
                               rely=0.311,
                               relwidth=0.078,
                               relheight=0.06)
        self.Add_Button_.configure(activebackground="#ececec")
        self.Add_Button_.configure(activeforeground="#000000")
        self.Add_Button_.configure(background="#d9d9d9")
        self.Add_Button_.configure(disabledforeground="#a3a3a3")
        self.Add_Button_.configure(
            font="-family {Helvetica} -size 13 -weight normal")
        self.Add_Button_.configure(foreground="#000000")
        self.Add_Button_.configure(highlightbackground="#d9d9d9")
        self.Add_Button_.configure(highlightcolor="black")
        self.Add_Button_.configure(pady="0")
        self.Add_Button_.configure(text='''ADD''', command=self.add_item)

        self.Delete_Button = tk.Button(Department_Window)
        self.Delete_Button.place(relx=0.798,
                                 rely=0.392,
                                 relwidth=0.078,
                                 relheight=0.06)
        self.Delete_Button.configure(activebackground="#ececec")
        self.Delete_Button.configure(activeforeground="#000000")
        self.Delete_Button.configure(background="#d9d9d9")
        self.Delete_Button.configure(disabledforeground="#a3a3a3")
        self.Delete_Button.configure(
            font="-family {Helvetica} -size 13 -weight normal")
        self.Delete_Button.configure(foreground="#000000")
        self.Delete_Button.configure(highlightbackground="#d9d9d9")
        self.Delete_Button.configure(highlightcolor="black")
        self.Delete_Button.configure(pady="0")
        self.Delete_Button.configure(text='''DELETE''',
                                     command=self.remove_item)

        self.Update_Button = tk.Button(Department_Window)
        self.Update_Button.place(relx=0.798,
                                 rely=0.474,
                                 relwidth=0.078,
                                 relheight=0.06)
        self.Update_Button.configure(activebackground="#ececec")
        self.Update_Button.configure(activeforeground="#000000")
        self.Update_Button.configure(background="#d9d9d9")
        self.Update_Button.configure(disabledforeground="#a3a3a3")
        self.Update_Button.configure(
            font="-family {Helvetica} -size 13 -weight normal")
        self.Update_Button.configure(foreground="#000000")
        self.Update_Button.configure(highlightbackground="#d9d9d9")
        self.Update_Button.configure(highlightcolor="black")
        self.Update_Button.configure(pady="0")
        self.Update_Button.configure(text='''UPDATE''',
                                     command=self.update_item)

        self.Clear_Button = tk.Button(Department_Window)
        self.Clear_Button.place(relx=0.798,
                                rely=0.555,
                                relwidth=0.078,
                                relheight=0.06)
        self.Clear_Button.configure(activebackground="#ececec")
        self.Clear_Button.configure(activeforeground="#000000")
        self.Clear_Button.configure(background="#d9d9d9")
        self.Clear_Button.configure(disabledforeground="#a3a3a3")
        self.Clear_Button.configure(
            font="-family {Helvetica} -size 13 -weight normal")
        self.Clear_Button.configure(foreground="#000000")
        self.Clear_Button.configure(highlightbackground="#d9d9d9")
        self.Clear_Button.configure(highlightcolor="black")
        self.Clear_Button.configure(pady="0")
        self.Clear_Button.configure(text='''CLEAR''', command=self.clear_text)

        self.Scrolledlistbox3 = ScrolledListBox(Department_Window)
        self.Scrolledlistbox3.place(relx=0.02,
                                    rely=0.717,
                                    relheight=0.253,
                                    relwidth=0.969)
        self.Scrolledlistbox3.configure(background="white")
        self.Scrolledlistbox3.configure(disabledforeground="#a3a3a3")
        self.Scrolledlistbox3.configure(font=font10)
        self.Scrolledlistbox3.configure(foreground="black")
        self.Scrolledlistbox3.configure(highlightbackground="#d9d9d9")
        self.Scrolledlistbox3.configure(highlightcolor="#d9d9d9")
        self.Scrolledlistbox3.configure(selectbackground="#c4c4c4")
        self.Scrolledlistbox3.configure(selectforeground="black")

        self.tr_radio = tk.IntVar(None, 1)
        self.Treated_Radio = tk.Radiobutton(Department_Window)
        self.Treated_Radio.place(relx=0.013,
                                 rely=0.257,
                                 relheight=0.042,
                                 relwidth=0.18)
        self.Treated_Radio.configure(activebackground="#ececec")
        self.Treated_Radio.configure(activeforeground="#000000")
        self.Treated_Radio.configure(background="#d9d9d9")
        self.Treated_Radio.configure(disabledforeground="#a3a3a3")
        self.Treated_Radio.configure(font=font11)
        self.Treated_Radio.configure(foreground="#000000")
        self.Treated_Radio.configure(highlightbackground="#d9d9d9")
        self.Treated_Radio.configure(highlightcolor="black")
        self.Treated_Radio.configure(justify='left')
        self.Treated_Radio.configure(text='''Treated''')
        self.Treated_Radio.configure(value=1)
        self.Treated_Radio.configure(variable=self.tr_radio)

        self.Reffered_Radio = tk.Radiobutton(Department_Window)
        self.Reffered_Radio.place(relx=0.208,
                                  rely=0.257,
                                  relheight=0.042,
                                  relwidth=0.18)
        self.Reffered_Radio.configure(activebackground="#ececec")
        self.Reffered_Radio.configure(activeforeground="#000000")
        self.Reffered_Radio.configure(background="#d9d9d9")
        self.Reffered_Radio.configure(disabledforeground="#a3a3a3")
        self.Reffered_Radio.configure(font=font11)
        self.Reffered_Radio.configure(foreground="#000000")
        self.Reffered_Radio.configure(highlightbackground="#d9d9d9")
        self.Reffered_Radio.configure(highlightcolor="black")
        self.Reffered_Radio.configure(justify='left')
        self.Reffered_Radio.configure(text='''Reffered''')
        self.Reffered_Radio.configure(value=2)
        self.Reffered_Radio.configure(variable=self.tr_radio)

        self.Screened_Radio = tk.Radiobutton(Department_Window)
        self.Screened_Radio.place(relx=0.408,
                                  rely=0.257,
                                  relheight=0.042,
                                  relwidth=0.18)
        self.Screened_Radio.configure(activebackground="#ececec")
        self.Screened_Radio.configure(activeforeground="#000000")
        self.Screened_Radio.configure(background="#d9d9d9")
        self.Screened_Radio.configure(disabledforeground="#a3a3a3")
        self.Screened_Radio.configure(font=font11)
        self.Screened_Radio.configure(foreground="#000000")
        self.Screened_Radio.configure(highlightbackground="#d9d9d9")
        self.Screened_Radio.configure(highlightcolor="black")
        self.Screened_Radio.configure(justify='left')
        self.Screened_Radio.configure(text='''Screened''')
        self.Screened_Radio.configure(value=3)
        self.Screened_Radio.configure(variable=self.tr_radio)

        self.populate_list()

    # Returns the list of all the entries in the window
    def get_entry_object(self):
        entries = [
            self.Date_Entry, self.on_radio, self.Health_Entry, self.From_Entry,
            self.To_Entry, self.Incharge_Entry, self.Phone_Entry,
            self.Endodontics_Entry, self.Periodont_Entry,
            self.Orthodontics_Entry, self.Surgery_Entry, self.Pedodont_Entry,
            self.Oralpatho_Entry, self.Public_Health_Entry,
            self.Oral_Mea_Entry, self.Ping_Thread_Entry, self.tr_radio,
            self.Grand_Total_Entry
        ]
        return entries

    # Adds a row to the database' respective table by getting inputs from entries
    def add_item(self):
        # Getting the values entered in each Entry box objects
        entries = self.get_entry_object()
        for i in range(0, len(entries)):
            entries[i] = entries[i].get()
        self.data.insert("dept", entries)
        self.clear_text()
        self.populate_list()
        print("1 row added")

    # Clears all the data entered in the entries
    def clear_text(self):
        entries = self.get_entry_object()
        for i in range(0, len(entries)):
            try:
                entries[i].delete(0, tk.END)
            except AttributeError:
                pass

    # Returns the item selected in the listbox
    def select_item(self):
        index = self.Scrolledlistbox3.curselection()[0]
        selected_item = self.Scrolledlistbox3.get(index)
        return selected_item

    # Removes the item selected in the listbox
    def remove_item(self):
        selected = self.select_item()
        print(selected[0])
        self.data.remove("dept", selected[0])
        self.populate_list()
        print("Selected Item deleted")

    # Updates the item selected in list box with the values entered in Entry boxes
    def update_item(self):
        selected = self.select_item()
        values = self.get_entry_object()
        # id of new_values is as same as the old value
        new_values = [selected[0]]
        for val in values[1:]:
            new_values.append(val.get())
        self.data.update("dept", new_values)
        self.clear_text()
        self.populate_list()
        print("Selected Item Updated")

    # Updates the list box with the current content of the table
    def populate_list(self):
        self.Scrolledlistbox3.delete(0, tk.END)
        for row in self.data.fetch("dept"):
            self.Scrolledlistbox3.insert(tk.END, row)
        self.count = self.data.get_count("dept")
Beispiel #20
0
    def select_combo_method(self, event=""):
        # form lakhay ne aavse.,';
        self.firstname = Label(self.lf2,
                               text='firstname',
                               bd=2,
                               fg="black",
                               bg=self.bgclr1,
                               font=(self.f1, 15),
                               relief=GROOVE)
        self.middlename = Label(self.lf2,
                                text='middlename',
                                bd=2,
                                fg="black",
                                bg=self.bgclr1,
                                font=(self.f1, 15),
                                relief=GROOVE)
        self.lastname = Label(self.lf2,
                              text='lastname',
                              bd=2,
                              fg="black",
                              bg=self.bgclr1,
                              font=(self.f1, 15),
                              relief=GROOVE)
        self.salary = Label(self.lf2,
                            text='salary',
                            bd=2,
                            fg="black",
                            bg=self.bgclr1,
                            font=(self.f1, 15),
                            relief=GROOVE)
        self.phoneno = Label(self.lf2,
                             text='phoneno',
                             bd=2,
                             fg="black",
                             bg=self.bgclr1,
                             font=(self.f1, 15),
                             relief=GROOVE)
        self.address = Label(self.lf2,
                             text='address',
                             bd=2,
                             fg="black",
                             bg=self.bgclr1,
                             font=(self.f1, 15),
                             relief=GROOVE)
        self.email = Label(self.lf2,
                           text='email',
                           bd=2,
                           fg="black",
                           bg=self.bgclr1,
                           font=(self.f1, 15),
                           relief=GROOVE)
        self.password = Label(self.lf2,
                              text='password',
                              bd=2,
                              fg="black",
                              bg=self.bgclr1,
                              font=(self.f1, 15),
                              relief=GROOVE)
        self.dob = Label(self.lf2,
                         text='DOB',
                         bd=2,
                         fg="black",
                         bg=self.bgclr1,
                         font=(self.f1, 15),
                         relief=GROOVE)
        self.category = Label(self.lf2,
                              text="Category",
                              bd=2,
                              fg="black",
                              bg=self.bgclr1,
                              font=(self.f1, 15),
                              relief=GROOVE)
        self.bloodgroup = Label(self.lf2,
                                text="Blood-group",
                                bd=2,
                                fg="black",
                                bg=self.bgclr1,
                                font=(self.f1, 15),
                                relief=GROOVE)
        self.cast = Label(self.lf2,
                          text="Cast",
                          bd=2,
                          fg="black",
                          bg=self.bgclr1,
                          font=(self.f1, 15),
                          relief=GROOVE)
        self.subject = Label(self.lf2,
                             text="Subjects/Post",
                             bd=2,
                             fg="black",
                             bg=self.bgclr1,
                             font=(self.f1, 15),
                             relief=GROOVE)

        self.firstnamevar = StringVar()
        self.firstnameentry = Entry(self.lf2,
                                    textvariable=self.firstnamevar,
                                    font=(self.f1, 10))
        self.middlenamevar = StringVar()
        self.middlenameentry = Entry(self.lf2,
                                     textvariable=self.middlenamevar,
                                     font=(self.f1, 10))
        self.lastnamevar = StringVar()
        self.lastnameentry = Entry(self.lf2,
                                   textvariable=self.lastnamevar,
                                   font=(self.f1, 10))
        self.salaryvar = StringVar()
        self.salaryentry = Entry(self.lf2,
                                 textvariable=self.salaryvar,
                                 font=(self.f1, 10))
        self.phonenovar = StringVar()
        self.phonenoentry = Entry(self.lf2,
                                  textvariable=self.phonenovar,
                                  font=(self.f1, 10))
        self.emailvar = StringVar()
        self.emailentry = Entry(self.lf2,
                                textvariable=self.emailvar,
                                font=(self.f1, 10))
        self.passwordvar = StringVar()
        self.passwordentry = Entry(self.lf2,
                                   textvariable=self.passwordvar,
                                   show="*",
                                   font=(self.f1, 10))
        self.addressentry = Text(self.lf2, width=20, height=3, wrap=WORD)
        self.dobvar = StringVar()
        self.dobentry = DateEntry(self.lf2,
                                  state="readonly",
                                  width=12,
                                  background='darkblue',
                                  date_pattern='dd/mm/yyyy',
                                  foreground='white',
                                  borderwidth=2)
        self.categoryvar = StringVar()
        self.categoryentry = ttk.Combobox(
            self.lf2,
            state="readonly",
            values=['GENERAL', 'SC', 'ST', 'OBC'],
            textvariable=self.categoryvar,
            font=(self.f1, 10))
        self.categoryvar.set("SELECT CATEGORY")
        self.bloodgroupvar = StringVar()
        self.bloodgroupentry = ttk.Combobox(
            self.lf2,
            state="readonly",
            values=['o+', 'o-', 'b+', 'b-', 'ab+', 'ab-'],
            textvariable=self.bloodgroupvar,
            font=(self.f1, 10))
        self.bloodgroupvar.set("SELECT BLOOD-GROUP")
        self.castvar = StringVar()
        self.castentry = Entry(self.lf2, textvariable=self.castvar, font=50)
        self.subjectvar = StringVar()
        self.subjectentry = Entry(self.lf2,
                                  textvariable=self.subjectvar,
                                  font=50)

        self.firstname.place(x=87.5, y=52)
        self.firstnameentry.place(x=359.37, y=52)
        self.middlename.place(x=87.5, y=102)
        self.middlenameentry.place(x=359.37, y=102)
        self.lastname.place(x=87.5, y=152)
        self.lastnameentry.place(x=359.37, y=152)
        self.salary.place(x=87.5, y=202)
        self.salaryentry.place(x=359.37, y=202)
        self.phoneno.place(x=87.5, y=252)
        self.phonenoentry.place(x=359.37, y=252)
        self.email.place(x=87.5, y=302)
        self.emailentry.place(x=359.37, y=302)
        self.password.place(x=87.5, y=352)
        self.passwordentry.place(x=359.37, y=352)
        self.address.place(x=631.25, y=352)
        self.addressentry.place(x=903.125, y=352)
        self.dob.place(x=631.25, y=52)
        self.dobentry.place(x=903.125, y=52)
        self.category.place(x=631.25, y=102)
        self.categoryentry.place(x=903.125, y=102)
        self.bloodgroup.place(x=631.25, y=152)
        self.bloodgroupentry.place(x=903.125, y=152)
        self.cast.place(x=631.25, y=202)
        self.castentry.place(x=903.125, y=202)
        self.subject.place(x=631.25, y=252)
        self.subjectentry.place(x=903.125, y=252)
        self.guide = Label(
            self.lf2,
            text="(if multiple seperate it with ',' \n for ex:maths,science)",
            font=(self.f1, 8))
        self.guide.place(x=903.125, y=280)
        self.guide.config(state='disabled')

        rowcounter = "select count(*) from staff;"
        rc = self.conn.execute(rowcounter).fetchone()
        self.adminvar = IntVar()
        self.admin = Checkbutton(self.lf2,
                                 bg=self.bgclr1,
                                 text='admin',
                                 variable=self.adminvar)
        self.admin.place(x=175, y=402)
        self.authority_value = "abcd"

        self.update_query = "select * from staff where empno=" + str(
            self.select_user_combo.get())
        self.update_query_tuple = self.conn.execute(
            self.update_query).fetchone()

        self.firstnamevar.set(self.update_query_tuple[1])
        self.middlenamevar.set(self.update_query_tuple[2])
        self.lastnamevar.set(self.update_query_tuple[3])
        self.salaryvar.set(self.update_query_tuple[4])
        self.phonenovar.set(self.update_query_tuple[5])
        self.addressentry.insert(END, self.update_query_tuple[6])
        self.emailvar.set(self.update_query_tuple[7])

        if self.update_query_tuple[8] == 'admin':
            if rc[0] == 1:
                self.admin.config(state='disabled')
            self.adminvar.set(1)
        else:
            self.adminvar.set(0)
        self.passwordvar.set(self.update_query_tuple[10])
        self.dobvar.set(self.update_query_tuple[13])
        self.categoryvar.set(self.update_query_tuple[14])
        self.bloodgroupvar.set(self.update_query_tuple[15])
        self.castvar.set(self.update_query_tuple[16])

        self.update_button = Button(self.lf2,
                                    text="Update",
                                    bg=self.bgclr2,
                                    bd=5,
                                    font=(self.f2, 20),
                                    command=self.update_button_method)
        self.update_button.place(x=400, y=432)

        self.reset_btn = Button(self.lf2,
                                text="Reset",
                                bg=self.bgclr2,
                                bd=5,
                                font=(self.f2, 20),
                                command=self.reset)
        self.reset_btn.place(x=645, y=432)
Beispiel #21
0
    def __init__(self, top=None):
        '''This class configures and populates the toplevel window.
           top is the toplevel containing window.'''
        _bgcolor = '#d9d9d9'  # X11 color: 'gray85'
        _fgcolor = '#000000'  # X11 color: 'black'
        _compcolor = '#d9d9d9'  # X11 color: 'gray85'
        _ana1color = '#d9d9d9'  # X11 color: 'gray85'
        _ana2color = '#ececec'  # Closest X11 color: 'gray92'

        top.geometry("497x804+552+110")
        top.minsize(120, 1)
        top.maxsize(3004, 1913)
        top.resizable(1, 1)
        top.title("New Toplevel")
        top.configure(background="#000328")

        self.email_l = tk.Label(top)
        self.email_l.place(relx=0.163, rely=0.100, height=22, width=183)
        self.email_l.configure(anchor='w')
        self.email_l.configure(background="#000000")
        self.email_l.configure(disabledforeground="#a3a3a3")
        self.email_l.configure(font="-family {Segoe UI} -size 12")
        self.email_l.configure(foreground="#ffffff")
        self.email_l.configure(padx="6")
        self.email_l.configure(text='''Enter your email id:''')

        self.email_e = tk.Entry(top)
        self.email_e.place(relx=0.163, rely=0.150, height=20, relwidth=0.551)
        self.email_e.configure(background="white")
        self.email_e.configure(disabledforeground="#a3a3a3")
        self.email_e.configure(font="TkFixedFont")
        self.email_e.configure(foreground="#000000")
        self.email_e.configure(insertbackground="black")

        self.username_e = tk.Entry(top)
        self.username_e.place(relx=0.163,
                              rely=0.250,
                              height=20,
                              relwidth=0.551)
        self.username_e.configure(background="white")
        self.username_e.configure(cursor="fleur")
        self.username_e.configure(disabledforeground="#a3a3a3")
        self.username_e.configure(font="TkFixedFont")
        self.username_e.configure(foreground="#000000")
        self.username_e.configure(insertbackground="black")

        self.username_l = tk.Label(top)
        self.username_l.place(relx=0.161, rely=0.200, height=21, width=150)
        self.username_l.configure(activeforeground="#000328")
        self.username_l.configure(anchor='w')
        self.username_l.configure(background="#000328")
        self.username_l.configure(disabledforeground="#a3a3a3")
        self.username_l.configure(font="-family {Segoe UI} -size 12")
        self.username_l.configure(foreground="#ffffff")
        self.username_l.configure(text='''Enter username:''')

        self.password_l = tk.Label(top)
        self.password_l.place(relx=0.165, rely=0.300, height=31, width=149)
        self.password_l.configure(anchor='w')
        self.password_l.configure(background="#000328")
        self.password_l.configure(cursor="fleur")
        self.password_l.configure(disabledforeground="#a3a3a3")
        self.password_l.configure(font="-family {Segoe UI} -size 12")
        self.password_l.configure(foreground="#ffffff")
        self.password_l.configure(text='''Enter password:''')

        self.password_e = tk.Entry(top)
        self.password_e.place(relx=0.163,
                              rely=0.350,
                              height=20,
                              relwidth=0.551)
        self.password_e.configure(background="white")
        self.password_e.configure(cursor="fleur")
        self.password_e.configure(disabledforeground="#a3a3a3")
        self.password_e.configure(font="TkFixedFont")
        self.password_e.configure(foreground="#000000")
        self.password_e.configure(insertbackground="black")

        self.confirm_l = tk.Label(top)
        self.confirm_l.place(relx=0.163, rely=0.400, height=32, width=149)
        self.confirm_l.configure(activeforeground="#000328")
        self.confirm_l.configure(anchor='w')
        self.confirm_l.configure(background="#000328")
        self.confirm_l.configure(disabledforeground="#a3a3a3")
        self.confirm_l.configure(font="-family {Segoe UI} -size 12")
        self.confirm_l.configure(foreground="#ffffff")
        self.confirm_l.configure(text='''Confirm Password:''')

        self.confirm_e = tk.Entry(top)
        self.confirm_e.place(relx=0.163, rely=0.450, height=20, relwidth=0.551)
        self.confirm_e.configure(background="white")
        self.confirm_e.configure(cursor="fleur")
        self.confirm_e.configure(disabledforeground="#a3a3a3")
        self.confirm_e.configure(font="TkFixedFont")
        self.confirm_e.configure(foreground="#000000")
        self.confirm_e.configure(insertbackground="black")

        self.dob = tk.Label(top)
        self.dob.place(relx=0.181, rely=0.500, height=31, width=171)
        self.dob.configure(anchor='w')
        self.dob.configure(background="#000328")
        self.dob.configure(disabledforeground="#a3a3a3")
        self.dob.configure(font="-family {Segoe UI} -size 12")
        self.dob.configure(foreground="#ffffff")
        self.dob.configure(text='''Enter Date of Birth''')

        self.cal = DateEntry(root,
                             width=30,
                             bg="darkblue",
                             fg="white",
                             year=2010)
        self.cal.place(relx=0.181, rely=0.550, height=31, width=171)

        self.address_l = tk.Label(top)
        self.address_l.place(relx=0.181, rely=0.600, height=31, width=171)
        self.address_l.configure(anchor='w')
        self.address_l.configure(background="#000328")
        self.address_l.configure(disabledforeground="#a3a3a3")
        self.address_l.configure(font="-family {Segoe UI} -size 12")
        self.address_l.configure(foreground="#ffffff")
        self.address_l.configure(text='''Enter Address''')

        self.address_e = tk.Entry(top)
        self.address_e.place(relx=0.163, rely=0.650, height=20, relwidth=0.551)
        self.address_e.configure(background="white")
        self.address_e.configure(cursor="fleur")
        self.address_e.configure(disabledforeground="#a3a3a3")
        self.address_e.configure(font="TkFixedFont")
        self.address_e.configure(foreground="#000000")
        self.address_e.configure(insertbackground="black")

        self.mobileno_l = tk.Label(top)
        self.mobileno_l.place(relx=0.181, rely=0.700, height=31, width=171)
        self.mobileno_l.configure(anchor='w')
        self.mobileno_l.configure(background="#000328")
        self.mobileno_l.configure(disabledforeground="#a3a3a3")
        self.mobileno_l.configure(font="-family {Segoe UI} -size 12")
        self.mobileno_l.configure(foreground="#ffffff")
        self.mobileno_l.configure(text='''Enter your mobile number''')

        self.mobileno_e = tk.Entry(top)
        self.mobileno_e.place(relx=0.163,
                              rely=0.750,
                              height=20,
                              relwidth=0.551)
        self.mobileno_e.configure(background="white")
        self.mobileno_e.configure(cursor="fleur")
        self.mobileno_e.configure(disabledforeground="#a3a3a3")
        self.mobileno_e.configure(font="TkFixedFont")
        self.mobileno_e.configure(foreground="#000000")
        self.mobileno_e.configure(insertbackground="black")

        self.age_warning = tk.Label(top)
        self.age_warning.place(relx=0.161, rely=0.81, height=21, width=84)
        self.age_warning.configure(background="#000328")
        self.age_warning.configure(cursor="fleur")
        self.age_warning.configure(disabledforeground="#a3a3a3")
        self.age_warning.configure(foreground="#ffffff")
        self.age_warning.configure(text='''dummy''')

        self.checkAge = tk.Checkbutton(top)
        self.checkAge.place(relx=0.584,
                            rely=0.781,
                            relheight=0.081,
                            relwidth=0.203)
        self.checkAge.configure(activebackground="#ececec")
        self.checkAge.configure(activeforeground="#000000")
        self.checkAge.configure(background="#000328")
        self.checkAge.configure(cursor="fleur")
        self.checkAge.configure(disabledforeground="#a3a3a3")
        self.checkAge.configure(foreground="#ffffff")
        self.checkAge.configure(highlightbackground="#d9d9d9")
        self.checkAge.configure(highlightcolor="black")
        self.checkAge.configure(justify='left')
        self.checkAge.configure(text='''dummy''')

        self.Submit = tk.Button(top)
        self.Submit.place(relx=0.300, rely=0.875, height=54, width=177)
        self.Submit.configure(activebackground="#ececec")
        self.Submit.configure(activeforeground="#000000")
        self.Submit.configure(background="#2ba5ff")
        self.Submit.configure(borderwidth="4")
        self.Submit.configure(cursor="fleur")
        self.Submit.configure(disabledforeground="#a3a3a3")
        self.Submit.configure(font="-family {Segoe UI} -size 14")
        self.Submit.configure(foreground="#000000")
        self.Submit.configure(highlightbackground="#d9d9d9")
        self.Submit.configure(highlightcolor="black")
        self.Submit.configure(pady="0")
        self.Submit.configure(text='''Register''')
Beispiel #22
0
class UpdateUser(Toplevel):
    def backf(self, event=""):
        self.destroy()
        self.root.deiconify()

    def c_w(self, event=""):
        m = messagebox.askyesno("School Software",
                                "Are you Want to Close Application?",
                                parent=self.root)
        if m > 0:
            query4 = "update staff set currentuser = 0 where currentuser = 1;"
            self.conn.execute(query4)
            self.conn.commit()
            self.main_root.destroy()
        else:
            return

    def update_button_method(self):
        #   """" ''' """     form  mathi  data -> database  ma  jase     """ ''' """
        try:
            a = self.firstnameentry.get().isalpha()
            if a:
                pass
            else:
                raise ValueError
        except:
            messagebox.showerror("School Software",
                                 "First name can't be number!")
            self.firstnamevar.set("")
            return

        try:
            a = self.middlenameentry.get().isalpha()
            if a:
                pass
            else:
                raise ValueError
        except:
            messagebox.showerror("School Software",
                                 "Middle name can't be number!")
            self.middlenamevar.set("")
            return

        try:
            a = self.lastnameentry.get().isalpha()
            if a:
                pass
            else:
                raise ValueError
        except:
            messagebox.showerror("School Software",
                                 "Last name can't be number!")
            self.lastnamevar.set("")
            return

        try:
            if (self.firstnameentry.get() == ""
                    or self.middlenameentry.get() == ""
                    or self.lastnameentry.get() == ""
                    or self.salaryentry.get() == ""
                    or self.phonenoentry.get() == ""
                    or self.addressentry.get(1.0, END) == "\n\n"
                    or self.emailentry.get() == ""
                    or self.passwordentry.get() == ""
                    or self.subjectentry.get() == ""
                    or self.castentry.get() == ""):
                raise AttributeError
        except:
            messagebox.showerror("School Software",
                                 "Any Entry Field Can't Be Empty")
            return

        try:
            subject = self.subjectentry.get().split(",")
            for i in range(0, len(subject)):
                if not subject[i].isalpha():
                    messagebox.showerror("School Software",
                                         "Subject Entry must be numeric")
                    self.subjectentry.focus_set()
                    return

        except:
            if not self.subjectentry.get().isalpha():
                messagebox.showerror("School Software",
                                     "Subject Entry must be numeric")
                self.subjectentry.focus_set()
                return

        try:
            self.sal = int(self.salaryentry.get())
            if self.sal >= 0:
                pass
            else:
                raise ValueError
        except:
            messagebox.showerror("School Software", "Salary must be numeric")
            self.salaryvar.set("")
            self.salaryentry.focus_set()
            return

        try:
            self.phno = int(self.phonenoentry.get())
            if self.phno >= 0:
                pass
            else:
                raise ValueError
        except:
            messagebox.showerror("School Software",
                                 "Phonenember must be numeric")
            self.phonenovar.set("")
            self.phonenoentry.focus_set()
            return

        try:
            self.phno1 = list(self.phonenoentry.get())
            if len(self.phno1) != 10:
                raise ValueError
        except:
            messagebox.showerror("School Software",
                                 "Phonenumber must be of 10-digit")
            self.phonenovar.set("")
            self.phonenoentry.focus_set()
            return

        try:
            self.phno2 = ('9', '8', '7', '6')
            if (self.phno1[0] not in self.phno2):
                raise ValueError
        except:
            messagebox.showerror("School Software",
                                 "Phonenumber must be valid")
            self.phonenovar.set("")
            self.phonenoentry.focus_set()
            return

        valid = validate_email(self.emailentry.get())
        if not valid:
            m = messagebox.showerror("Error", "email id must be valid")
            self.emailentry.focus_set()
            return

        try:
            if (self.dobentry.get_date() >= date.today()):
                raise ValueError
        except:
            messagebox.showerror("School Software", "Invalid date of birth!!")
            self.dobentry.focus_set()

        try:
            if (self.categoryentry.get() == "SELECT CATEGORY"):
                raise ValueError
        except:
            messagebox.showerror("School Software", "Please Select Category")
            self.categoryentry.focus_set()

        try:
            if (self.bloodgroupentry.get() == "SELECT BLOOD-GROUP"):
                raise ValueError
        except:
            messagebox.showerror("School Software",
                                 "Please Select Blood-group")
            self.bloodgroupentry.focus_set()

        if self.adminvar.get() == 1:
            self.authority_value = "admin"
        else:
            self.authority_value = "staff"

        self.answer = messagebox.askyesno(
            "School Software",
            "Do you really want to update user whose empno=" +
            str(self.select_user_combo.get()))

        if self.answer > 0:
            query = "update staff set fname=?, mname=?, lname=?, salary=?, phno=?, address=?, email=?, authority=?, password=?, date_of_birth=?, category=?, blood_group=?, cast=? where empno=?"
            self.conn.execute(
                query,
                (self.firstnameentry.get(), self.middlenameentry.get(),
                 self.lastnameentry.get(), self.salaryentry.get(),
                 self.phonenoentry.get(), self.addressentry.get(
                     1.0, END), self.emailentry.get(), self.authority_value +
                 '-' + self.subjectentry.get(), self.passwordentry.get(),
                 self.dobentry.get(), self.categoryentry.get(),
                 self.bloodgroupentry.get(), self.castentry.get()))
            self.conn.commit()
            messagebox.showinfo("School Software", "Operation Successful")
            self.select_user_combo.set("SELECT EMPNO")
            self.lf2.destroy()
        else:
            return

    def reset(self):

        self.firstnamevar.set("")
        self.firstnameentry.focus_set()
        self.middlenamevar.set("")
        self.lastnamevar.set("")
        self.salaryvar.set("")
        self.phonenovar.set("")
        self.emailvar.set("")
        self.passwordvar.set("")
        self.addressentry.delete(1.0, END)
        self.dobvar.set("")
        self.categoryvar.set("")
        self.bloodgroupvar.set("")
        self.castvar.set("")
        self.subjectvar.set("")
        self.dobvar.set(date.today())

    def select_combo_method(self, event=""):
        # form lakhay ne aavse.,';
        self.firstname = Label(self.lf2,
                               text='firstname',
                               bd=2,
                               fg="black",
                               bg=self.bgclr1,
                               font=(self.f1, 15),
                               relief=GROOVE)
        self.middlename = Label(self.lf2,
                                text='middlename',
                                bd=2,
                                fg="black",
                                bg=self.bgclr1,
                                font=(self.f1, 15),
                                relief=GROOVE)
        self.lastname = Label(self.lf2,
                              text='lastname',
                              bd=2,
                              fg="black",
                              bg=self.bgclr1,
                              font=(self.f1, 15),
                              relief=GROOVE)
        self.salary = Label(self.lf2,
                            text='salary',
                            bd=2,
                            fg="black",
                            bg=self.bgclr1,
                            font=(self.f1, 15),
                            relief=GROOVE)
        self.phoneno = Label(self.lf2,
                             text='phoneno',
                             bd=2,
                             fg="black",
                             bg=self.bgclr1,
                             font=(self.f1, 15),
                             relief=GROOVE)
        self.address = Label(self.lf2,
                             text='address',
                             bd=2,
                             fg="black",
                             bg=self.bgclr1,
                             font=(self.f1, 15),
                             relief=GROOVE)
        self.email = Label(self.lf2,
                           text='email',
                           bd=2,
                           fg="black",
                           bg=self.bgclr1,
                           font=(self.f1, 15),
                           relief=GROOVE)
        self.password = Label(self.lf2,
                              text='password',
                              bd=2,
                              fg="black",
                              bg=self.bgclr1,
                              font=(self.f1, 15),
                              relief=GROOVE)
        self.dob = Label(self.lf2,
                         text='DOB',
                         bd=2,
                         fg="black",
                         bg=self.bgclr1,
                         font=(self.f1, 15),
                         relief=GROOVE)
        self.category = Label(self.lf2,
                              text="Category",
                              bd=2,
                              fg="black",
                              bg=self.bgclr1,
                              font=(self.f1, 15),
                              relief=GROOVE)
        self.bloodgroup = Label(self.lf2,
                                text="Blood-group",
                                bd=2,
                                fg="black",
                                bg=self.bgclr1,
                                font=(self.f1, 15),
                                relief=GROOVE)
        self.cast = Label(self.lf2,
                          text="Cast",
                          bd=2,
                          fg="black",
                          bg=self.bgclr1,
                          font=(self.f1, 15),
                          relief=GROOVE)
        self.subject = Label(self.lf2,
                             text="Subjects/Post",
                             bd=2,
                             fg="black",
                             bg=self.bgclr1,
                             font=(self.f1, 15),
                             relief=GROOVE)

        self.firstnamevar = StringVar()
        self.firstnameentry = Entry(self.lf2,
                                    textvariable=self.firstnamevar,
                                    font=(self.f1, 10))
        self.middlenamevar = StringVar()
        self.middlenameentry = Entry(self.lf2,
                                     textvariable=self.middlenamevar,
                                     font=(self.f1, 10))
        self.lastnamevar = StringVar()
        self.lastnameentry = Entry(self.lf2,
                                   textvariable=self.lastnamevar,
                                   font=(self.f1, 10))
        self.salaryvar = StringVar()
        self.salaryentry = Entry(self.lf2,
                                 textvariable=self.salaryvar,
                                 font=(self.f1, 10))
        self.phonenovar = StringVar()
        self.phonenoentry = Entry(self.lf2,
                                  textvariable=self.phonenovar,
                                  font=(self.f1, 10))
        self.emailvar = StringVar()
        self.emailentry = Entry(self.lf2,
                                textvariable=self.emailvar,
                                font=(self.f1, 10))
        self.passwordvar = StringVar()
        self.passwordentry = Entry(self.lf2,
                                   textvariable=self.passwordvar,
                                   show="*",
                                   font=(self.f1, 10))
        self.addressentry = Text(self.lf2, width=20, height=3, wrap=WORD)
        self.dobvar = StringVar()
        self.dobentry = DateEntry(self.lf2,
                                  state="readonly",
                                  width=12,
                                  background='darkblue',
                                  date_pattern='dd/mm/yyyy',
                                  foreground='white',
                                  borderwidth=2)
        self.categoryvar = StringVar()
        self.categoryentry = ttk.Combobox(
            self.lf2,
            state="readonly",
            values=['GENERAL', 'SC', 'ST', 'OBC'],
            textvariable=self.categoryvar,
            font=(self.f1, 10))
        self.categoryvar.set("SELECT CATEGORY")
        self.bloodgroupvar = StringVar()
        self.bloodgroupentry = ttk.Combobox(
            self.lf2,
            state="readonly",
            values=['o+', 'o-', 'b+', 'b-', 'ab+', 'ab-'],
            textvariable=self.bloodgroupvar,
            font=(self.f1, 10))
        self.bloodgroupvar.set("SELECT BLOOD-GROUP")
        self.castvar = StringVar()
        self.castentry = Entry(self.lf2, textvariable=self.castvar, font=50)
        self.subjectvar = StringVar()
        self.subjectentry = Entry(self.lf2,
                                  textvariable=self.subjectvar,
                                  font=50)

        self.firstname.place(x=87.5, y=52)
        self.firstnameentry.place(x=359.37, y=52)
        self.middlename.place(x=87.5, y=102)
        self.middlenameentry.place(x=359.37, y=102)
        self.lastname.place(x=87.5, y=152)
        self.lastnameentry.place(x=359.37, y=152)
        self.salary.place(x=87.5, y=202)
        self.salaryentry.place(x=359.37, y=202)
        self.phoneno.place(x=87.5, y=252)
        self.phonenoentry.place(x=359.37, y=252)
        self.email.place(x=87.5, y=302)
        self.emailentry.place(x=359.37, y=302)
        self.password.place(x=87.5, y=352)
        self.passwordentry.place(x=359.37, y=352)
        self.address.place(x=631.25, y=352)
        self.addressentry.place(x=903.125, y=352)
        self.dob.place(x=631.25, y=52)
        self.dobentry.place(x=903.125, y=52)
        self.category.place(x=631.25, y=102)
        self.categoryentry.place(x=903.125, y=102)
        self.bloodgroup.place(x=631.25, y=152)
        self.bloodgroupentry.place(x=903.125, y=152)
        self.cast.place(x=631.25, y=202)
        self.castentry.place(x=903.125, y=202)
        self.subject.place(x=631.25, y=252)
        self.subjectentry.place(x=903.125, y=252)
        self.guide = Label(
            self.lf2,
            text="(if multiple seperate it with ',' \n for ex:maths,science)",
            font=(self.f1, 8))
        self.guide.place(x=903.125, y=280)
        self.guide.config(state='disabled')

        rowcounter = "select count(*) from staff;"
        rc = self.conn.execute(rowcounter).fetchone()
        self.adminvar = IntVar()
        self.admin = Checkbutton(self.lf2,
                                 bg=self.bgclr1,
                                 text='admin',
                                 variable=self.adminvar)
        self.admin.place(x=175, y=402)
        self.authority_value = "abcd"

        self.update_query = "select * from staff where empno=" + str(
            self.select_user_combo.get())
        self.update_query_tuple = self.conn.execute(
            self.update_query).fetchone()

        self.firstnamevar.set(self.update_query_tuple[1])
        self.middlenamevar.set(self.update_query_tuple[2])
        self.lastnamevar.set(self.update_query_tuple[3])
        self.salaryvar.set(self.update_query_tuple[4])
        self.phonenovar.set(self.update_query_tuple[5])
        self.addressentry.insert(END, self.update_query_tuple[6])
        self.emailvar.set(self.update_query_tuple[7])

        if self.update_query_tuple[8] == 'admin':
            if rc[0] == 1:
                self.admin.config(state='disabled')
            self.adminvar.set(1)
        else:
            self.adminvar.set(0)
        self.passwordvar.set(self.update_query_tuple[10])
        self.dobvar.set(self.update_query_tuple[13])
        self.categoryvar.set(self.update_query_tuple[14])
        self.bloodgroupvar.set(self.update_query_tuple[15])
        self.castvar.set(self.update_query_tuple[16])

        self.update_button = Button(self.lf2,
                                    text="Update",
                                    bg=self.bgclr2,
                                    bd=5,
                                    font=(self.f2, 20),
                                    command=self.update_button_method)
        self.update_button.place(x=400, y=432)

        self.reset_btn = Button(self.lf2,
                                text="Reset",
                                bg=self.bgclr2,
                                bd=5,
                                font=(self.f2, 20),
                                command=self.reset)
        self.reset_btn.place(x=645, y=432)

    def __init__(self, root, main_root):
        self.main_root = main_root
        self.root = root
        try:
            self.conn = sqlite3.connect('sinfo.db')

        except:
            messagebox.showerror(
                "School Project",
                "There is some error in connection of Database")
        Toplevel.__init__(self)
        self.lift()
        self.focus_force()
        self.grab_set()
        self.grab_release()
        self.bgclr1 = "#0080c0"
        self.bgclr2 = "#e7d95a"
        self.f1 = "Arial Bold"
        self.f2 = "times new roman"
        self.title("Update Staff")
        self.config(background=self.bgclr1)
        self.geometry("1350x700+0+0")
        self.resizable(False, False)

        ##====================================================frame 1===================================================

        imagel = Image.open("left-arrow.png")
        imagel = imagel.resize((60, 15))
        imgl = ImageTk.PhotoImage(imagel)

        self.lf1 = LabelFrame(self,
                              text="NAME",
                              bd=2,
                              fg="black",
                              bg=self.bgclr1,
                              font=(self.f1, 20),
                              relief=GROOVE)
        self.lf1.place(x=0, y=0, height=150, width=1350)
        bb = Button(self.lf1,
                    image=imgl,
                    bg=self.bgclr2,
                    bd=5,
                    font=(self.f1, 15),
                    command=self.backf)
        bb.place(x=10, y=10, height=25)
        ##==================================================frame 2=====================================================
        self.lf2 = LabelFrame(self,
                              text="Update User",
                              bd=2,
                              fg="black",
                              bg=self.bgclr1,
                              font=(self.f1, 20),
                              relief=GROOVE)
        self.lf2.place(x=0, y=150, height=550, width=1350)
        query1 = "select empno from staff where currentuser=0;"
        list1 = self.conn.execute(query1).fetchall()
        my_list = []
        for i in list1:
            my_list.append(i)

        self.select_user_combo = ttk.Combobox(self.lf2,
                                              state="readonly",
                                              values=my_list)
        self.select_user_combo.bind("<<ComboboxSelected>>",
                                    self.select_combo_method)
        self.select_user_combo.set("SELECT EMPNO")
        self.select_user_combo.place(x=500, y=10)

        self.protocol("WM_DELETE_WINDOW", self.c_w)
        self.mainloop()
Beispiel #23
0
s.configure('Dataout.Treeview', rowheight=20) 

a = Label(user_entry_frame ,text="Short Plu").pack(side = LEFT)
plu_entry = Entry(user_entry_frame)
# plu_entry.delete(0, END)
plu_entry.insert(0, "959714")
plu_entry.focus_set()
s_y = Scrollbar(data_out_frame)
s_x = Scrollbar(data_out_frame, orient=HORIZONTAL)
tv = ttk.Treeview(data_out_frame, style='Dataout.Treeview', yscrollcommand=s_y.set, xscrollcommand = s_x.set)
s_y.config(command=tv.yview)
s_x.config(command=tv.xview)
tk_var = StringVar() #tk_var is Tkinter variable
msg = Label(msg_frame ,textvariable=tk_var, bg = 'white', fg = 'blue')
pb = Progressbar(msg_frame, mode='determinate')
de = DateEntry(user_entry_frame)


user_entry_frame.pack(anchor = NW)
data_out_frame.pack(anchor = NW, fill = BOTH, expand = 1)
msg_frame.pack(anchor = NW, fill = BOTH)
plu_entry.pack(side = LEFT)
s_y.pack(side=RIGHT, fill=Y)
tv.pack(anchor = NW, fill = BOTH, expand = 1)
s_x.pack(fill=X)
pb.pack(fill=X)
msg.pack(fill=X, padx = 15, pady = 2)
de.pack(side = LEFT, padx = 5)


#passing function with argument to command trigger it right away. using partial to delay it until click
Beispiel #24
0
def searchstudent():
    """
    Submit Button Function
    """
    def submitsearch():
        id = idvar.get()
        name = namevar.get()
        mobile = mobilevar.get()
        email = emailvar.get()
        address = addressvar.get()
        gender = gendervar.get()
        dob = dobvar.get()
        addeddate = time.strftime("%d/%m/%Y")

        if (id != ''):
            strr = 'select *from studentdata where id=%s'
            mycursor.execute(strr, (id))
            data = mycursor.fetchall()
            studenttable.delete(*studenttable.get_children())
            for i in data:
                vv = [i[0], i[1], i[2], i[3], i[4], i[5], i[6], i[7], i[8]]
                studenttable.insert('', END, values=vv)

        elif (name != ''):
            strr = 'select *from studentdata where name=%s'
            mycursor.execute(strr, (name))
            data = mycursor.fetchall()
            studenttable.delete(*studenttable.get_children())
            for i in data:
                vv = [i[0], i[1], i[2], i[3], i[4], i[5], i[6], i[7], i[8]]
                studenttable.insert('', END, values=vv)

        elif (mobile != ''):
            strr = 'select *from studentdata where mobile=%s'
            mycursor.execute(strr, (mobile))
            data = mycursor.fetchall()
            studenttable.delete(*studenttable.get_children())
            for i in data:
                vv = [i[0], i[1], i[2], i[3], i[4], i[5], i[6], i[7], i[8]]
                studenttable.insert('', END, values=vv)

        elif (email != ''):
            strr = 'select *from studentdata where email=%s'
            mycursor.execute(strr, (email))
            data = mycursor.fetchall()
            studenttable.delete(*studenttable.get_children())
            for i in data:
                vv = [i[0], i[1], i[2], i[3], i[4], i[5], i[6], i[7], i[8]]
                studenttable.insert('', END, values=vv)

        elif (address != ''):
            strr = 'select *from studentdata where address=%s'
            mycursor.execute(strr, (address))
            data = mycursor.fetchall()
            studenttable.delete(*studenttable.get_children())
            for i in data:
                vv = [i[0], i[1], i[2], i[3], i[4], i[5], i[6], i[7], i[8]]
                studenttable.insert('', END, values=vv)

        elif (gender != ''):
            strr = 'select *from studentdata where gender=%s'
            mycursor.execute(strr, (gender))
            data = mycursor.fetchall()
            studenttable.delete(*studenttable.get_children())
            for i in data:
                vv = [i[0], i[1], i[2], i[3], i[4], i[5], i[6], i[7], i[8]]
                studenttable.insert('', END, values=vv)

        elif (dob != ''):
            strr = 'select *from studentdata where dob=%s'
            mycursor.execute(strr, (dob))
            data = mycursor.fetchall()
            studenttable.delete(*studenttable.get_children())
            for i in data:
                vv = [i[0], i[1], i[2], i[3], i[4], i[5], i[6], i[7], i[8]]
                studenttable.insert('', END, values=vv)

        elif (addeddate != ''):
            strr = 'select *from studentdata where addeddate=%s'
            mycursor.execute(strr, (addeddate))
            data = mycursor.fetchall()
            studenttable.delete(*studenttable.get_children())
            for i in data:
                vv = [i[0], i[1], i[2], i[3], i[4], i[5], i[6], i[7], i[8]]
                studenttable.insert('', END, values=vv)

    searchroot = Toplevel(master=DateEntryFrame)
    searchroot.grab_set()
    searchroot.geometry('390x460+212+110')
    searchroot.title('Search Sudent')
    searchroot.iconbitmap('icon.ico')
    searchroot.config(bg='tomato')
    searchroot.resizable(False, False)
    """
    Add Student Lables and Entries
    """
    idlable = Label(searchroot,
                    text='Search By ID :',
                    bg='gold2',
                    font='Helvatica 16 bold',
                    relief=GROOVE,
                    borderwidth=3,
                    width=16,
                    anchor='w')
    idlable.place(x=8, y=8)

    Namelable = Label(searchroot,
                      text='Search By Name :',
                      bg='gold2',
                      font='Helvatica 16 bold',
                      relief=GROOVE,
                      borderwidth=3,
                      width=16,
                      anchor='w')
    Namelable.place(x=8, y=58)

    Mobilelable = Label(searchroot,
                        text='Search By Mobile :',
                        bg='gold2',
                        font='Helvatica 16 bold',
                        relief=GROOVE,
                        borderwidth=3,
                        width=16,
                        anchor='w')
    Mobilelable.place(x=8, y=108)

    Emaillable = Label(searchroot,
                       text='Search By Email :',
                       bg='gold2',
                       font='Helvatica 16 bold',
                       relief=GROOVE,
                       borderwidth=3,
                       width=16,
                       anchor='w')
    Emaillable.place(x=8, y=158)

    Addresslable = Label(searchroot,
                         text='Search By Address :',
                         bg='gold2',
                         font='Helvatica 16 bold',
                         relief=GROOVE,
                         borderwidth=3,
                         width=16,
                         anchor='w')
    Addresslable.place(x=8, y=208)

    Genderlable = Label(searchroot,
                        text='Search By Gender :',
                        bg='gold2',
                        font='Helvatica 16 bold',
                        relief=GROOVE,
                        borderwidth=3,
                        width=16,
                        anchor='w')
    Genderlable.place(x=8, y=258)

    doblable = Label(searchroot,
                     text='Search By D.O.B :',
                     bg='gold2',
                     font='Helvatica 16 bold',
                     relief=GROOVE,
                     borderwidth=3,
                     width=16,
                     anchor='w')
    doblable.place(x=8, y=308)

    datelable = Label(searchroot,
                      text='Search By Date :',
                      bg='gold2',
                      font='Helvatica 16 bold',
                      relief=GROOVE,
                      borderwidth=3,
                      width=16,
                      anchor='w')
    datelable.place(x=8, y=348)
    """
    Search Student Entries
    """
    #Variables
    idvar = StringVar()
    namevar = StringVar()
    mobilevar = StringVar()
    emailvar = StringVar()
    addressvar = StringVar()
    gendervar = StringVar()
    gendervar.set('')
    dobvar = StringVar()
    datevar = StringVar()

    identry = Entry(searchroot,
                    font='times 10 bold',
                    borderwidth=4,
                    textvariable=idvar)
    identry.place(x=230, y=8)

    nameentry = Entry(searchroot,
                      font='times 10 bold',
                      borderwidth=4,
                      textvariable=namevar)
    nameentry.place(x=230, y=58)

    moblieentry = Entry(searchroot,
                        font='times 10 bold',
                        borderwidth=4,
                        textvariable=mobilevar)
    moblieentry.place(x=230, y=108)

    emailentry = Entry(searchroot,
                       font='times 10 bold',
                       borderwidth=4,
                       textvariable=emailvar)
    emailentry.place(x=230, y=158)

    addressentry = Entry(searchroot,
                         font='times 10 bold',
                         borderwidth=4,
                         textvariable=addressvar)
    addressentry.place(x=230, y=208)

    genderentry = OptionMenu(searchroot, gendervar, 'Male', 'Female', 'Other')
    genderentry.place(x=230, y=258)

    dobentry = DateEntry(searchroot,
                         font='times 10 bold',
                         borderwidth=4,
                         textvariable=dobvar)
    dobentry.place(x=230, y=308)
    dobvar.set('')

    dateentry = DateEntry(searchroot,
                          font='times 10 bold',
                          borderwidth=4,
                          textvariable=datevar)
    dateentry.place(x=230, y=358)
    datevar.set('')

    #Button For Submit
    submitbtn = Button(searchroot,
                       text='Search Student',
                       font='Times 12 bold',
                       width=17,
                       borderwidth=4,
                       bg='DodgerBlue4',
                       command=submitsearch)
    submitbtn.place(x=115, y=405)

    searchroot.mainloop()
Beispiel #25
0
class Echo(Frame):
    def __init__(self, parent):
        Frame.__init__(self, parent)
        self.parent = parent
        self.client = self.parent.client
        self.clientTextVar = StringVar()
        self.clientTextVar.set(self.client)

        self.loadData()

        f1 = Frame(self)
        f1.pack(fill=X)

        # Labels for each field
        LABEL_WIDTH1 = 6
        LABEL_WIDTH2 = 5
        LABEL_WIDTH3 = 5
        LABEL_WIDTH4 = 16
        LABEL_WIDTH5 = 5
        LABEL_WIDTH6 = 8
        LABEL_WIDTH7 = 8
        LABEL_WIDTH8 = 10

        Label(f1, anchor="w", width=LABEL_WIDTH1, text="Client").grid(row=0,
                                                                      column=0)
        Label(f1,
              anchor="w",
              width=LABEL_WIDTH2,
              textvariable=self.clientTextVar).grid(row=0, column=1)

        Label(f1, anchor="w", width=LABEL_WIDTH1, text="Date").grid(row=1,
                                                                    column=0)
        Label(f1, anchor="w", width=LABEL_WIDTH1, text="Tape").grid(row=2,
                                                                    column=0)

        self.date = DateEntry(f1)
        self.date.grid(row=1, column=1, padx=2)
        self.tape = Text(f1, width=12, height=1)
        self.tape.grid(row=2, column=1, padx=2)

        # Delete button
        self.delete = Button(f1, text="Delete", fg="Black", state="disabled")
        self.delete.grid(row=4, column=1)

        Label(f1, anchor="w", width=LABEL_WIDTH2, text="LBS").grid(row=1,
                                                                   column=2)
        Label(f1, anchor="w", width=LABEL_WIDTH2, text="KGS").grid(row=2,
                                                                   column=2)
        Label(f1, anchor="w", width=LABEL_WIDTH2, text="BSA").grid(row=3,
                                                                   column=2)
        Label(f1, anchor="w", width=LABEL_WIDTH2, text="HR").grid(row=4,
                                                                  column=2)
        Label(f1, anchor="w", width=LABEL_WIDTH2, text="RR").grid(row=5,
                                                                  column=2)

        self.lbs = Text(f1, width=4, height=1)
        self.lbs.grid(row=1, column=3, padx=2)
        self.kgs = Text(f1, width=4, height=1)
        self.kgs.grid(row=2, column=3, padx=2)
        self.bsa = Text(f1, width=4, height=1)
        self.bsa.grid(row=3, column=3, padx=2)
        self.hr = Text(f1, width=4, height=1)
        self.hr.grid(row=4, column=3, padx=2)
        self.rr = Text(f1, width=4, height=1)
        self.rr.grid(row=5, column=3, padx=2)

        Label(f1, anchor="w", width=LABEL_WIDTH3, text="Ao").grid(row=1,
                                                                  column=4)
        Label(f1, anchor="w", width=LABEL_WIDTH3, text="LA").grid(row=2,
                                                                  column=4)
        Label(f1, anchor="w", width=LABEL_WIDTH3, text="LA2").grid(row=3,
                                                                   column=4)
        Label(f1, anchor="w", width=LABEL_WIDTH3, text="LA2D").grid(row=4,
                                                                    column=4)
        Label(f1, anchor="w", width=LABEL_WIDTH3, text="EPSS").grid(row=5,
                                                                    column=4)

        self.ao = Text(f1, width=4, height=1)
        self.ao.grid(row=1, column=5, padx=2)
        self.la = Text(f1, width=4, height=1)
        self.la.grid(row=2, column=5, padx=2)
        self.la2 = Text(f1, width=4, height=1)
        self.la2.grid(row=3, column=5, padx=2)
        self.la2d = Text(f1, width=4, height=1)
        self.la2d.grid(row=4, column=5, padx=2)
        self.epss = Text(f1, width=4, height=1)
        self.epss.grid(row=5, column=5, padx=2)

        Label(f1, anchor="w", width=LABEL_WIDTH4,
              text="Calculation Group").grid(row=1, column=6)
        self.calcgroup = ttk.Combobox(f1,
                                      width=LABEL_WIDTH4,
                                      values=CLINICIANS)
        self.calcgroup.grid(row=2, column=6, padx=20)

        Label(f1, anchor="w", width=LABEL_WIDTH5, text="RV").grid(row=1,
                                                                  column=7)
        Label(f1, anchor="w", width=LABEL_WIDTH5, text="IVS").grid(row=2,
                                                                   column=7)
        Label(f1, anchor="w", width=LABEL_WIDTH5, text="LVID").grid(row=3,
                                                                    column=7)
        Label(f1, anchor="w", width=LABEL_WIDTH5, text="LVW").grid(row=4,
                                                                   column=7)
        Label(f1, anchor="w", width=LABEL_WIDTH5, text="VIDX").grid(row=5,
                                                                    column=7)

        Label(f1, width=LABEL_WIDTH6, text="Systole").grid(row=0, column=8)

        self.rv = CustomText(f1, width=LABEL_WIDTH6, height=1)
        self.rv.grid(row=1, column=8, padx=2)
        self.ivs = CustomText(f1, width=LABEL_WIDTH6, height=1)
        self.ivs.grid(row=2, column=8, padx=2)
        self.lvid = CustomText(f1, width=LABEL_WIDTH6, height=1)
        self.lvid.grid(row=3, column=8, padx=2)
        self.lvw = CustomText(f1, width=LABEL_WIDTH6, height=1)
        self.lvw.grid(row=4, column=8, padx=2)
        self.vidxtext = StringVar()
        self.vidx = Entry(f1,
                          textvariable=self.vidxtext,
                          width=LABEL_WIDTH8,
                          state='readonly')
        self.vidx.grid(row=5, column=8, padx=2)

        Label(f1, width=LABEL_WIDTH7, text="Diastole").grid(row=0, column=9)

        self.rv2 = CustomText(f1, width=LABEL_WIDTH7, height=1)
        self.rv2.grid(row=1, column=9, padx=2)
        self.ivs2 = CustomText(f1, width=LABEL_WIDTH7, height=1)
        self.ivs2.grid(row=2, column=9, padx=2)
        self.lvid2 = CustomText(f1, width=LABEL_WIDTH7, height=1)
        self.lvid2.grid(row=3, column=9, padx=2)
        self.lvw2 = CustomText(f1, width=LABEL_WIDTH7, height=1)
        self.lvw2.grid(row=4, column=9, padx=2)
        self.vidxtext2 = StringVar()
        self.vidx2 = Entry(f1,
                           textvariable=self.vidxtext2,
                           width=LABEL_WIDTH8,
                           state='readonly')
        self.vidx2.grid(row=5, column=9, padx=2)

        self.rv.bind("<<TextModified>>", self.updateDeltas)
        self.rv2.bind("<<TextModified>>", self.updateDeltas)
        self.ivs.bind("<<TextModified>>", self.updateDeltas)
        self.ivs2.bind("<<TextModified>>", self.updateDeltas)
        self.lvid.bind("<<TextModified>>", self.updateDeltas)
        self.lvid2.bind("<<TextModified>>", self.updateDeltas)
        self.lvw.bind("<<TextModified>>", self.updateDeltas)
        self.lvw2.bind("<<TextModified>>", self.updateDeltas)

        Label(f1, width=LABEL_WIDTH8, text="Δ").grid(row=0, column=10)

        self.delt1 = StringVar()
        self.delt2 = StringVar()
        self.delt3 = StringVar()
        self.delt4 = StringVar()
        self.ivs3 = Entry(f1,
                          textvariable=self.delt1,
                          width=LABEL_WIDTH8,
                          state='readonly')
        self.ivs3.grid(row=2, column=10, padx=2)
        self.lvid3 = Entry(f1,
                           textvariable=self.delt2,
                           width=LABEL_WIDTH8,
                           state='readonly')
        self.lvid3.grid(row=3, column=10, padx=2)
        self.lvw3 = Entry(f1,
                          textvariable=self.delt3,
                          width=LABEL_WIDTH8,
                          state='readonly')
        self.lvw3.grid(row=4, column=10, padx=2)
        self.vidx3 = Entry(f1,
                           textvariable=self.delt4,
                           width=LABEL_WIDTH8,
                           state='readonly')
        self.vidx3.grid(row=5, column=10, padx=2)

        self.indices = Button(f1,
                              text="Indices",
                              fg="Black",
                              command=self.indices)
        self.indices.grid(row=2, column=11)
        self.submit = Button(f1,
                             text="Submit",
                             fg="Black",
                             command=self.submit)
        self.submit.grid(row=3, column=11)
        self.clearButton = Button(f1,
                                  text="New",
                                  fg="Black",
                                  command=self.clearFields)
        self.clearButton.grid(row=4, column=11)

        # Fills with the form information.
        f2 = ScrollableFrame(self, height=150)

        # Listbox all the basic pet information
        self.numEntries = 0
        self.listBox = ttk.Treeview(f2.scrollable_frame,
                                    columns=list(self.data.columns),
                                    show='headings')

        i = 0
        for col in self.data.columns[1:]:
            self.listBox.heading(i, text=col)
            self.listBox.column(i, width=columnWidth(len(self.data.columns)))
            i += 1
        for item in self.data.values:
            if (item[0] == self.client):
                self.listBox.insert("", "end", values=list(item)[1:])
                self.numEntries += 1
        self.listBox.configure(height=max(self.numEntries, 6))

        # Get info on click
        self.listBox.bind("<Double-1>", self.onSelection)

        self.listBox.pack(fill=BOTH, expand=True)
        f2.pack(fill=BOTH, expand=True, pady=10)

    def updateDeltas(self, event=None):
        #TODO: Find out how these delts work
        try:
            self.delt1.set(
                float(self.ivs.get("1.0", "end-1c")) -
                float(self.ivs2.get("1.0", "end-1c")))
        except ValueError:
            self.delt1.set("")
        try:
            self.delt2.set(
                float(self.lvid.get("1.0", "end-1c")) -
                float(self.lvid2.get("1.0", "end-1c")))
        except ValueError:
            self.delt2.set("")
        try:
            self.delt3.set(
                float(self.lvw.get("1.0", "end-1c")) -
                float(self.lvw2.get("1.0", "end-1c")))
        except ValueError:
            self.delt3.set("")

    def loadData(self):
        # Read data
        if path.exists(DATA_PATH_ECHO):
            self.data = pd.read_pickle(DATA_PATH_ECHO)
        else:
            self.initializeData()

    def initializeData(self):
        d = {
            'ClientNum': [],
            'Date': [],
            'Tape': [],
            'LBS': [],
            'HR': [],
            'RR': [],
            'RVd': [],
            'IVSd': [],
            'LVIDd': [],
            'LVWd': [],
            'RVs': [],
            'IVSs': [],
            'LVIDs': [],
            'LVWs': [],
            'Ao': [],
            'LA': [],
            'LAm': [],
            'EPSS': [],
            'SAxLA D': [],
            'SAx Ao D': [],
            'SAx LA A': [],
            'LAx LA D': [],
            'Dep': [],
            'Len': [],
            'Gir': [],
            'Wld': []
        }
        self.data = pd.DataFrame(d)

    def onSelection(self, event=None):
        if self.listBox.selection():
            item = self.listBox.selection()[0]
            values = self.listBox.item(item, "values")
            self.fillFields(values)
            self.delete.configure(state="normal",
                                  command=lambda: self.deleteDataItem(item))
            self.submit.configure(text="Modify",
                                  command=lambda: self.modify(item))

    def fillFields(self, values):
        self.date.set_date(values[0])
        setText(self.tape, values[1])
        setText(self.lbs, values[2])
        setText(self.kgs, "")  #TODO: Where are some of these fields stored?
        setText(self.bsa, "")
        setText(self.hr, values[3])
        setText(self.rr, values[4])
        setText(self.ao, values[13])
        setText(self.la, values[14])
        setText(self.la2, "")
        setText(self.la2d, "")
        setText(self.epss, values[16])
        self.calcgroup.set("")
        setText(self.rv, values[9])
        setText(self.rv2, values[5])
        setText(self.ivs, values[10])
        setText(self.ivs2, values[6])
        setText(self.lvid, values[11])
        setText(self.lvid2, values[7])
        setText(self.lvw, values[12])
        setText(self.lvw2, values[8])
        self.vidxtext.set("")
        self.vidxtext2.set("")
        self.updateDeltas()

    def clearFields(self):
        self.date.set_date(date.today())
        setText(self.tape, "")
        setText(self.lbs, "")
        setText(self.kgs, "")
        setText(self.bsa, "")
        setText(self.hr, "")
        setText(self.rr, "")
        setText(self.ao, "")
        setText(self.la, "")
        setText(self.la2, "")
        setText(self.la2d, "")
        setText(self.epss, "")
        self.calcgroup.set("")
        setText(self.rv, "")
        setText(self.rv2, "")
        setText(self.ivs, "")
        setText(self.ivs2, "")
        self.delt1.set("")
        setText(self.lvid, "")
        setText(self.lvid2, "")
        self.delt2.set("")
        setText(self.lvw, "")
        setText(self.lvw2, "")
        self.delt3.set("")
        self.vidxtext.set("")
        self.vidxtext2.set("")
        self.delt4.set("")

        self.delete.configure(state="disabled", command=None)
        self.submit.configure(text="Submit", command=self.submit)

    def deleteDataItem(self, item):
        row = self.listBox.index(item)
        self.listBox.delete(item)

        self.numEntries -= 1
        self.listBox.configure(height=max(self.numEntries, 6))

        self.data = self.data.drop(
            self.data[self.data["ClientNum"] == self.client].index[row])
        self.saveData()
        self.clearFields()

    def modify(self, item):
        moddedData = {
            'ClientNum': self.client,
            'Date': self.date.get(),
            'Tape': self.tape.get("1.0", "end-1c"),
            'LBS': self.lbs.get("1.0", "end-1c"),
            'HR': self.hr.get("1.0", "end-1c"),
            'RR': self.rr.get("1.0", "end-1c"),
            'RVd': self.rv2.get("1.0", "end-1c"),
            'IVSd': self.ivs2.get("1.0", "end-1c"),
            'LVIDd': self.lvid2.get("1.0", "end-1c"),
            'LVWd': self.lvw2.get("1.0", "end-1c"),
            'RVs': self.rv.get("1.0", "end-1c"),
            'IVSs': self.ivs.get("1.0", "end-1c"),
            'LVIDs': self.lvid.get("1.0", "end-1c"),
            'LVWs': self.lvw.get("1.0", "end-1c"),
            'Ao': self.ao.get("1.0", "end-1c"),
            'LA': self.la.get("1.0", "end-1c"),
            'LAm': "",  # TODO: What are these fields?
            'EPSS': "",
            'SAxLA D': "",
            'SAx Ao D': "",
            'SAx LA A': "",
            'LAx LA D': "",
            'Dep': "",
            'Len': "",
            'Gir': "",
            'Wld': ""
        }
        self.listBox.item(item, values=list(moddedData.values())[1:])

        row = self.listBox.index(item)

        index = self.data[self.data["ClientNum"] == self.client].index[row]
        self.data.loc[index] = list(moddedData.values())

        self.clearFields()

        self.saveData()

    def indices(self):
        print("Indices")

    def submit(self):
        newData = {
            'ClientNum': self.client,
            'Date': self.date.get(),
            'Tape': self.tape.get("1.0", "end-1c"),
            'LBS': self.lbs.get("1.0", "end-1c"),
            'HR': self.hr.get("1.0", "end-1c"),
            'RR': self.rr.get("1.0", "end-1c"),
            'RVd': self.rv2.get("1.0", "end-1c"),
            'IVSd': self.ivs2.get("1.0", "end-1c"),
            'LVIDd': self.lvid2.get("1.0", "end-1c"),
            'LVWd': self.lvw2.get("1.0", "end-1c"),
            'RVs': self.rv.get("1.0", "end-1c"),
            'IVSs': self.ivs.get("1.0", "end-1c"),
            'LVIDs': self.lvid.get("1.0", "end-1c"),
            'LVWs': self.lvw.get("1.0", "end-1c"),
            'Ao': self.ao.get("1.0", "end-1c"),
            'LA': self.la.get("1.0", "end-1c"),
            'LAm': "",  # TODO: What are these fields?
            'EPSS': "",
            'SAxLA D': "",
            'SAx Ao D': "",
            'SAx LA A': "",
            'LAx LA D': "",
            'Dep': "",
            'Len': "",
            'Gir': "",
            'Wld': ""
        }

        self.listBox.insert("", "end", values=list(newData.values())[1:])
        self.data = self.data.append(newData, ignore_index=True)
        self.clearFields()

        self.numEntries += 1
        self.listBox.configure(height=max(self.numEntries, 6))

        self.saveData()

    def updateClient(self, client):
        if len(client) > 2:
            self.client = client[1]
            self.clientTextVar.set(client[2])
            self.listBox.delete(*self.listBox.get_children())
            self.numEntries = 0
            for item in self.data.values:
                if (item[0] == self.client):
                    self.listBox.insert("", "end", values=list(item)[1:])
                    self.numEntries += 1
            self.listBox.configure(height=max(self.numEntries, 6))
        else:
            self.client = None
            self.clientTextVar.set('')
            self.listBox.delete(*self.listBox.get_children())
            self.numEntries = 0
            self.listBox.configure(height=max(self.numEntries, 6))

    def saveData(self):
        saveData(self.data, DATA_PATH_ECHO)

    def modifiedClient(self, client):
        # We need to update the corresponding client number here when it's updated in Client
        for item in self.data.values:
            if (item[0] == self.client):
                item[0] = client[1]
        self.updateClient(client)
        self.saveData()
Beispiel #26
0
def addstudent():
    """
    Submit Button Function
    """
    def submitadd():
        global mycursor
        global con

        id = idvar.get()
        name = namevar.get()
        mobile = mobilevar.get()
        email = emailvar.get()
        address = addressvar.get()
        gender = gendervar.get()
        dob = dobvar.get()
        addedtime = time.strftime("%I:%M:%S-%p")
        addeddate = time.strftime("%d/%m/%Y")
        try:
            strr = 'INSERT INTO studentdata values(%s,%s,%s,%s,%s,%s,%s,%s,%s)'
            val = (id, name, mobile, email, address, gender, dob, addeddate,
                   addedtime)
            mycursor.execute(strr, val)
            con.commit()
            res = messagebox.askyesnocancel(
                'Notificatrions',
                'Id {} Name {} Added sucessfully.. and do you want to clean the form'
                .format(id, name),
                parent=addroot)
            if (res == True):
                idvar.set('')
                namevar.set('')
                mobilevar.set('')
                emailvar.set('')
                addressvar.set('')
                gendervar.set('Choose Gender')
                dobvar.set('')
            else:
                pass
        except:
            messagebox.showerror(
                'Invalid ID or database',
                'ID already exit try another ID Or\nMay be you are not connected to database.',
                parent=addroot)
        strr = 'select *from studentdata'
        mycursor.execute(strr)
        data = mycursor.fetchall()
        studenttable.delete(*studenttable.get_children())
        for i in data:
            vv = [i[0], i[1], i[2], i[3], i[4], i[5], i[6], i[7], i[8]]
            studenttable.insert('', END, values=vv)

    addroot = Toplevel(master=DateEntryFrame)
    addroot.grab_set()
    addroot.geometry('390x410+212+110')
    addroot.title('Add Sudent')
    addroot.iconbitmap('icon.ico')
    addroot.config(bg='DodgerBlue4')
    addroot.resizable(False, False)
    """
    Add Student Lables and Entries
    """
    idlable = Label(addroot,
                    text='Enter ID :',
                    bg='gold2',
                    font='Helvatica 16 bold',
                    relief=GROOVE,
                    borderwidth=3,
                    width=12,
                    anchor='w')
    idlable.place(x=8, y=8)

    Namelable = Label(addroot,
                      text='Enter Name :',
                      bg='gold2',
                      font='Helvatica 16 bold',
                      relief=GROOVE,
                      borderwidth=3,
                      width=12,
                      anchor='w')
    Namelable.place(x=8, y=58)

    Mobilelable = Label(addroot,
                        text='Enter Mobile :',
                        bg='gold2',
                        font='Helvatica 16 bold',
                        relief=GROOVE,
                        borderwidth=3,
                        width=12,
                        anchor='w')
    Mobilelable.place(x=8, y=108)

    Emaillable = Label(addroot,
                       text='Enter Email :',
                       bg='gold2',
                       font='Helvatica 16 bold',
                       relief=GROOVE,
                       borderwidth=3,
                       width=12,
                       anchor='w')
    Emaillable.place(x=8, y=158)

    Addresslable = Label(addroot,
                         text='Enter Address :',
                         bg='gold2',
                         font='Helvatica 16 bold',
                         relief=GROOVE,
                         borderwidth=3,
                         width=12,
                         anchor='w')
    Addresslable.place(x=8, y=208)

    Genderlable = Label(addroot,
                        text='Enter Gender :',
                        bg='gold2',
                        font='Helvatica 16 bold',
                        relief=GROOVE,
                        borderwidth=3,
                        width=12,
                        anchor='w')
    Genderlable.place(x=8, y=258)

    doblable = Label(addroot,
                     text='Enter D.O.B :',
                     bg='gold2',
                     font='Helvatica 16 bold',
                     relief=GROOVE,
                     borderwidth=3,
                     width=12,
                     anchor='w')
    doblable.place(x=8, y=308)
    """
    Add Student Entries
    """
    #Variables
    idvar = StringVar()
    namevar = StringVar()
    mobilevar = StringVar()
    emailvar = StringVar()
    addressvar = StringVar()
    gendervar = StringVar()
    gendervar.set('')
    dobvar = StringVar()
    dobvar.set('')

    identry = Entry(addroot,
                    font='times 12 bold',
                    borderwidth=4,
                    textvariable=idvar)
    identry.place(x=210, y=8)

    nameentry = Entry(addroot,
                      font='times 12 bold',
                      borderwidth=4,
                      textvariable=namevar)
    nameentry.place(x=210, y=58)

    moblieentry = Entry(addroot,
                        font='times 12 bold',
                        borderwidth=4,
                        textvariable=mobilevar)
    moblieentry.place(x=210, y=108)

    emailentry = Entry(addroot,
                       font='times 12 bold',
                       borderwidth=4,
                       textvariable=emailvar)
    emailentry.place(x=210, y=158)

    addressentry = Entry(addroot,
                         font='times 12 bold',
                         borderwidth=4,
                         textvariable=addressvar)
    addressentry.place(x=210, y=208)

    genderentry = OptionMenu(addroot, gendervar, 'Male', 'Female', 'Other')
    genderentry.place(x=210, y=258)

    dobentry = DateEntry(addroot,
                         font='times 12 bold',
                         borderwidth=4,
                         textvariable=dobvar)
    dobentry.place(x=210, y=308)

    #Button For Submit
    submitbtn = Button(addroot,
                       text='Submit',
                       font='Times 12 bold',
                       width=17,
                       borderwidth=4,
                       bg='red',
                       command=submitadd)
    submitbtn.place(x=115, y=360)

    addroot.mainloop()
    def __init__(self, parent, row_number, has_client_id, init_state=None):

        # Main variables
        self.period = ['Тек. месяц', 'Даты']

        self.spent_var = BooleanVar(
            value=(init_state['spent'] if init_state else False))
        self.impressions_var = BooleanVar(
            value=(init_state['impressions'] if init_state else False))
        self.clicks_var = BooleanVar(
            value=(init_state['clicks'] if init_state else False))
        self.reach_var = BooleanVar(
            value=(init_state['reach'] if init_state else False))
        self.views_var = BooleanVar(
            value=(init_state['views'] if init_state else False))
        self.period_var = StringVar(
            value=(init_state['period'] if init_state else self.period[0]))

        # Widgets
        self.widgets = {
            1:
            Entry(parent, width=50),
            2:
            Checkbutton(parent, variable=self.spent_var),
            3:
            Checkbutton(parent, variable=self.impressions_var),
            4:
            Checkbutton(parent, variable=self.clicks_var),
            5:
            Checkbutton(parent, variable=self.reach_var),
            6:
            Checkbutton(parent, variable=self.views_var),
            7:
            OptionMenu(parent,
                       self.period_var,
                       *self.period,
                       command=lambda value: self.dates_block_edit(value)),
            8:
            DateEntry(parent, date_pattern="dd.mm.y", locale='ru_RU', day=1),
            9:
            DateEntry(parent,
                      date_pattern="dd.mm.y",
                      locale='ru_RU',
                      day=self.ldom())
        }

        if has_client_id:
            self.widgets.update({0: Entry(parent, width=50)})

        # Initializing Entry and DateEntry fields
        if init_state:
            self.widgets[1].insert(0, init_state['id'])

            self.widgets[8].set_date(init_state['dates'][0])
            self.widgets[9].set_date(init_state['dates'][1])

            if has_client_id:
                self.widgets[0].insert(0, init_state['client_id'])
                self.widgets[0].config(state='disabled')

            # Disabling editing mode
            for i in range(1, 8):
                self.widgets[i].config(state='disabled')

        self.widgets[8].config(state='disabled')
        self.widgets[9].config(state='disabled')

        self.grid(row_number)
def update_record():
    ud = StringVar()
    root.destroy()
    if id_update.get() >= 1:

        def database():
            un = entry_1.get()
            ua = entry_2.get()
            dis = ud.get()
            uc = entry_4.get()
            sd = start_date_update.get()
            ed = end_date_update.get()
            id_u = id_update.get()
            try:
                conn = sql.connect('covid_analasys.db')
                cur = conn.cursor()
                cur.execute(
                    "Update patients set fullname = ?, address = ?, district = ?, contact = ?, start_date = ?, end_date = ? where id = ?",
                    (un, ua, dis, uc, sd, ed, id_u))
                conn.commit()
                conn.close()
                root1.destroy()
            except IntegrityError:
                return 'Invalid Input'

        root1 = Tk()
        root1.geometry("550x500")
        root1.title('Covid Patients')
        root1.configure(background="light blue")
        label_0 = Label(root1,
                        text="Update Patient Details",
                        width=20,
                        font=("bold", 20),
                        bg="light blue")
        label_0.place(x=90, y=60)

        label_1 = Label(root1,
                        text="FullName",
                        width=20,
                        font=("bold", 10),
                        bg="light blue")
        label_1.place(x=70, y=130)
        entry_1 = Entry(root1)
        entry_1.grid()
        entry_1.place(x=240, y=130)

        label_2 = Label(root1,
                        text="Address",
                        width=20,
                        font=("bold", 10),
                        bg="light blue")
        label_2.place(x=70, y=180)
        entry_2 = Entry(root1)
        entry_2.grid()
        entry_2.place(x=240, y=180)

        label_3 = Label(root1,
                        text="Districts",
                        width=20,
                        font=("bold", 10),
                        bg="light blue")
        label_3.place(x=70, y=230)
        list_of_districts = [
            'Chennai', 'Kanchipuram', 'Chengalpet', 'Tiruvallur'
        ]
        districts = OptionMenu(root1, ud, *list_of_districts)
        districts.config(width=15)
        ud.set('Select your District')
        districts.place(x=240, y=230)

        label_4 = Label(root1,
                        text="Contact",
                        width=20,
                        font=("bold", 10),
                        bg="light blue")
        label_4.place(x=70, y=280)
        entry_4 = Entry(root1)
        entry_4.grid()
        entry_4.place(x=240, y=280)

        label_5 = Label(root1,
                        text="Start Date",
                        width=20,
                        font=("bold", 10),
                        bg="light blue")
        label_5.place(x=70, y=330)
        start_date_update = DateEntry(root1,
                                      width=30,
                                      bg="darkblue",
                                      fg="white",
                                      date_pattern='dd/mm/yyyy')
        start_date_update.grid()
        start_date_update.place(x=240, y=330)

        label_6 = Label(root1,
                        text="End Date",
                        width=20,
                        font=("bold", 10),
                        bg="light blue")
        label_6.place(x=70, y=380)
        end_date_update = DateEntry(root1,
                                    width=30,
                                    bg="darkblue",
                                    fg="white",
                                    day=datetime.now().day + 10,
                                    date_pattern='dd/mm/yyyy')
        end_date_update.grid()
        end_date_update.place(x=240, y=380)

        Button(root1,
               text='Update',
               width=20,
               bg="orange",
               fg='white',
               command=database).place(x=180, y=450)
        root1.mainloop()
    else:
        pass
    def load_view_purchase_form(self):
        for index in range(1, 9):
            self.menubar.entryconfig(index, state=tk.DISABLED)

        self.show_menu(MainForm.is_admin_user)
        self.update_username()

        self.reload_lookup()

        # ********** Sub Containers *********
        top_container = tk.Frame(self.content_container, padx=2, pady=1, relief=tk.RIDGE, bg=self.clr_yellow)
        top_container.pack(fill='both', expand=True, side=tk.TOP)

        bottom_container = tk.Frame(self.content_container, padx=2, pady=1, relief=tk.RIDGE, bg=self.clr_yellow)
        bottom_container.pack(fill='both', expand=True, side=tk.TOP)

        # top_container elements
        top_button_container = tk.Frame(top_container, bd=2, relief=tk.RIDGE, bg=self.clr_yellow)
        top_button_container.pack(fill='both', expand=True, side=tk.TOP)

        purchase_tree_container = tk.Frame(top_container, bd=2, pady=3, bg=self.clr_yellow, relief=tk.RIDGE)
        purchase_tree_container.pack(fill='both', expand=True, side=tk.TOP)

        # bottom_container elements
        purchase_details_container = tk.Frame(bottom_container, bd=2, relief=tk.RIDGE, bg=self.clr_yellow)
        purchase_details_container.pack(fill='both', expand=True, side=tk.LEFT)

        purchase_summary_container = tk.Frame(bottom_container, bd=2, relief=tk.RIDGE, bg=self.clr_yellow)
        purchase_summary_container.pack(fill='both', expand=True, anchor='w', side=tk.RIGHT)

        purchase_summary_tree_container = tk.Frame(bottom_container, bd=2, relief=tk.RIDGE, bg=self.clr_yellow)
        purchase_summary_tree_container.pack(fill='both', expand=True, side=tk.RIGHT)

        # ********** top_button_container elements *********
        lbl_from_date = tk.Label(top_button_container, text='From Date:', bg=self.clr_yellow)
        lbl_from_date.grid(row=0, column=0, sticky="nw", padx=1, pady=1)
        self.from_date = DateEntry(top_button_container, date_pattern='yyyy-mm-dd', background='yellow',
                                   foreground='black', borderwidth=2, width=10)
        self.from_date.grid(row=1, column=0, sticky="sw", padx=2, pady=1, ipady=3)

        lbl_to_date = tk.Label(top_button_container, text='To Date:', bg=self.clr_yellow)
        lbl_to_date.grid(row=0, column=1, sticky="nw", padx=1, pady=1)
        self.to_date = DateEntry(top_button_container, date_pattern='yyyy-mm-dd', background='yellow',
                                 foreground='black', borderwidth=2, width=10)
        self.to_date.grid(row=1, column=1, sticky="sw", padx=2, pady=1, ipady=3)

        lbl_search_product_code = tk.Label(top_button_container, text="Product Code:", bg=self.clr_yellow)
        lbl_search_product_code.grid(row=0, column=2, columnspan=3, sticky="nw", padx=1, pady=1)

        self.ety_filter_product_code_1 = MaxLengthEntry(top_button_container, maxlength=3, width=4,
                                                        textvariable=self.var_search_product_code_1)
        self.ety_filter_product_code_1.grid(row=1, column=2, sticky="nw", padx=2, pady=2, ipady=5)
        self.ety_filter_product_code_1.bind('<Return>', lambda event: self.validate_entry(event, 3))

        self.ety_filter_product_code_2 = MaxLengthEntry(top_button_container, maxlength=3, width=4,
                                                        textvariable=self.var_search_product_code_2)
        self.ety_filter_product_code_2.grid(row=1, column=3, sticky="nw", padx=2, pady=2, ipady=5)
        self.ety_filter_product_code_2.bind('<Return>', lambda event: self.validate_entry(event, 3))

        self.ety_filter_product_code_3 = MaxLengthEntry(top_button_container, maxlength=2, width=3,
                                                        textvariable=self.var_search_product_code_3)
        self.ety_filter_product_code_3.grid(row=1, column=4, sticky="nw", padx=2, pady=2, ipady=5)
        self.ety_filter_product_code_3.bind('<Return>', lambda event: self.validate_entry(event, 2))

        self.ety_filter_product_code_4 = MaxLengthEntry(top_button_container, maxlength=4, width=5,
                                                        textvariable=self.var_search_product_code_4)
        self.ety_filter_product_code_4.grid(row=1, column=5, sticky="nw", padx=2, pady=2, ipady=5)
        self.ety_filter_product_code_4.bind('<Return>', lambda event: self.validate_entry(event, 4))

        filter_lbl_garment_name = tk.Label(top_button_container, text="Garment Name:", bg=self.clr_yellow)
        filter_lbl_garment_name.grid(row=0, column=6, sticky="nw", padx=1, pady=1)
        self.ety_filter_garment_name = AutocompleteEntry(top_button_container, width=15,
                                                         completevalues=self.garment_list)
        self.ety_filter_garment_name.grid(row=1, column=6, sticky="nw", padx=2, pady=1, ipady=6)
        self.ety_filter_garment_name.bind("<Return>", lambda event: self.filter_purchase(event))

        filter_lbl_product_name = tk.Label(top_button_container, text="Name:", bg=self.clr_yellow)
        filter_lbl_product_name.grid(row=0, column=7, sticky="nw", padx=1, pady=1)
        self.ety_filter_product_name = AutocompleteEntry(top_button_container, width=18,
                                                         completevalues=self.product_name_list)
        self.ety_filter_product_name.grid(row=1, column=7, sticky="nw", padx=2, pady=1, ipady=6)
        self.ety_filter_product_name.bind("<Return>", lambda event: self.filter_purchase(event))

        filter_lbl_product_type = tk.Label(top_button_container, text="Type:", bg=self.clr_yellow)
        filter_lbl_product_type.grid(row=0, column=8, sticky="nw", padx=1, pady=1)
        self.ety_filter_product_type = AutocompleteEntry(top_button_container, width=20,
                                                         completevalues=self.product_type_list)
        self.ety_filter_product_type.grid(row=1, column=8, sticky="nw", padx=2, pady=1, ipady=6)
        self.ety_filter_product_type.bind("<Return>", lambda event: self.filter_purchase(event))

        filter_lbl_product_size = tk.Label(top_button_container, text="Size:", bg=self.clr_yellow)
        filter_lbl_product_size.grid(row=0, column=9, sticky="nw", padx=1, pady=1)
        self.ety_filter_product_size = AutocompleteEntry(top_button_container, width=12,
                                                         completevalues=self.product_size_list)
        self.ety_filter_product_size.grid(row=1, column=9, sticky="nw", padx=2, pady=1, ipady=6)
        self.ety_filter_product_size.bind("<Return>", lambda event: self.filter_purchase(event))

        filter_lbl_product_price = tk.Label(top_button_container, text="Price:", bg=self.clr_yellow)
        filter_lbl_product_price.grid(row=0, column=10, sticky="nw", padx=1, pady=1)
        self.ety_filter_product_sell_price = AutocompleteEntry(top_button_container, width=10,
                                                               completevalues=self.product_sell_price_list)
        self.ety_filter_product_sell_price.grid(row=1, column=10, sticky="nw", padx=2, pady=1, ipady=6)
        self.ety_filter_product_sell_price.bind("<Return>", lambda event: self.filter_purchase(event))

        chk_include_date = tk.Checkbutton(top_button_container, text='Include Date', variable=self.var_include_date,
                                          onvalue=1, offvalue=0, bg=self.clr_yellow)
        chk_include_date.grid(row=0, column=11, columnspan=2, sticky="sw", padx=2, pady=1)

        btn_filter = tk.Button(top_button_container, text="Apply Filter", bg=self.clr_fuchsia, fg='white',
                               command=self.filter_purchase)
        btn_filter.grid(row=1, column=11, sticky="sw", padx=2, pady=1)

        btn_clear_filter = tk.Button(top_button_container, text="Clear", command=self.reload_purchase)
        btn_clear_filter.grid(row=1, column=12, sticky="news", padx=2, pady=1)

        # ********** tree_containers elements *********
        header = ('#', 'PURCHASE_DATE', 'GARMENT_NAME', 'PRODUCT_CODE', 'PRODUCT_NAME', 'PRODUCT_TYPE',
                  'SIZE', 'PRICE', 'QTY', 'AMOUNT', '')
        self.purchase_tree = ttk.Treeview(purchase_tree_container, columns=header, height=8, show="headings",
                                          selectmode="browse")
        vsb = ttk.Scrollbar(purchase_tree_container, orient="vertical", command=self.purchase_tree.yview)
        hsb = ttk.Scrollbar(purchase_tree_container, orient="horizontal", command=self.purchase_tree.xview)

        self.purchase_tree.configure(yscrollcommand=vsb.set, xscrollcommand=hsb.set)
        style = ttk.Style()
        style.configure("Treeview.Heading", font=('Calibri', 12))
        style.configure("Treeview", font=('Calibri', 12), rowheight=25)

        self.purchase_tree.configure(yscrollcommand=vsb.set, xscrollcommand=hsb.set)
        self.purchase_tree.grid(column=0, row=0, sticky='nsew', in_=purchase_tree_container)

        vsb.grid(column=1, row=0, sticky='ns', in_=purchase_tree_container)
        hsb.grid(column=0, row=1, sticky='ew', in_=purchase_tree_container)

        purchase_tree_container.grid_columnconfigure(0, weight=1)
        purchase_tree_container.grid_rowconfigure(0, weight=1)

        self.purchase_tree.heading("0", text="#")
        self.purchase_tree.heading("1", text="PURCHASE_DATE")
        self.purchase_tree.heading("2", text="GARMENT_NAME")
        self.purchase_tree.heading("3", text="PRODUCT_CODE")
        self.purchase_tree.heading("4", text="PRODUCT_NAME")
        self.purchase_tree.heading("5", text="PRODUCT_TYPE")
        self.purchase_tree.heading("6", text="SIZE")
        self.purchase_tree.heading("7", text="PRICE")
        self.purchase_tree.heading("8", text="QTY")
        self.purchase_tree.heading("9", text="AMOUNT")

        self.purchase_tree.column(0, anchor='center', width="20")
        self.purchase_tree.column(1, anchor=tk.W, width="120")
        self.purchase_tree.column(2, anchor=tk.W, width="200")
        self.purchase_tree.column(3, anchor=tk.W, width="120")
        self.purchase_tree.column(4, anchor=tk.W, width="140")
        self.purchase_tree.column(5, anchor=tk.W, width="180")
        self.purchase_tree.column(6, anchor='center', width="80")
        self.purchase_tree.column(7, anchor=tk.E, width="80")
        self.purchase_tree.column(8, anchor='center', width="50")
        self.purchase_tree.column(9, anchor=tk.E, width="120")
        self.purchase_tree.column(10, anchor='center', width="2")

        self.reload_purchase()

        numeric_cols = ['#', 'PRICE', 'QTY', 'AMOUNT']
        for col in header:
            if col in numeric_cols:
                self.purchase_tree.heading(col, text=col,
                                           command=lambda _col=col: self.sort_treeview(
                                               self.purchase_tree, _col,
                                               numeric_sort=True, reverse=False))
            else:
                self.purchase_tree.heading(col, text=col,
                                           command=lambda _col=col: self.sort_treeview(
                                               self.purchase_tree, _col,
                                               numeric_sort=False, reverse=False))

        self.purchase_tree.tag_configure("evenrow", background='#fbefcc')
        self.purchase_tree.tag_configure("oddrow", background='white', foreground='black')
        self.purchase_tree.bind('<<TreeviewSelect>>', self.on_tree_select)

        # ********** Purchase Details *********
        purchase_details_container.grid_columnconfigure(0, weight=1)
        purchase_details_container.grid_columnconfigure(3, weight=1)

        lbl_purchase_details = tk.Label(purchase_details_container, text="Product Details", bg=self.clr_blueiris,
                                        fg="white")
        lbl_purchase_details.grid(row=0, column=1, columnspan=2, sticky="news", padx=3, pady=3)
        lbl_purchase_details.config(font=("Calibri bold", 12))

        lbl_purchase_date = tk.Label(purchase_details_container, text="Purchase Date: ", bg=self.clr_yellow)
        lbl_purchase_date.grid(row=1, column=1, sticky="nw", padx=3, pady=1)
        ety_purchase_date = tk.Entry(purchase_details_container, width=15, textvariable=self.var_purchase_date,
                                     state='disabled')
        ety_purchase_date.grid(row=1, column=2, sticky="nw", padx=3, pady=1)

        lbl_garment_name = tk.Label(purchase_details_container, text="Garment Name: ", bg=self.clr_yellow)
        lbl_garment_name.grid(row=2, column=1, sticky="nw", padx=3, pady=1)
        ety_garment_name = tk.Entry(purchase_details_container, textvariable=self.var_garment_name, state='disabled')
        ety_garment_name.grid(row=2, column=2, sticky="nw", padx=3, pady=1)

        lbl_product_code = tk.Label(purchase_details_container, text="Product Code: ", bg=self.clr_yellow)
        lbl_product_code.grid(row=3, column=1, sticky="nw", padx=3, pady=1)
        ety_product_code = tk.Entry(purchase_details_container, width=15, textvariable=self.var_product_code,
                                    state='disabled')
        ety_product_code.grid(row=3, column=2, sticky="nw", padx=3, pady=1)

        lbl_product_name = tk.Label(purchase_details_container, text="Product Name: ", bg=self.clr_yellow)
        lbl_product_name.grid(row=4, column=1, sticky="nw", padx=3, pady=1)
        ety_product_name = tk.Entry(purchase_details_container, textvariable=self.var_product_name, state='disabled')
        ety_product_name.grid(row=4, column=2, sticky="nw", padx=3, pady=1)

        lbl_product_type = tk.Label(purchase_details_container, text="Product Type: ", bg=self.clr_yellow)
        lbl_product_type.grid(row=5, column=1, sticky="nw", padx=3, pady=1)
        ety_product_type = tk.Entry(purchase_details_container, textvariable=self.var_product_type, state='disabled')
        ety_product_type.grid(row=5, column=2, sticky="nw", padx=3, pady=1)

        lbl_product_size = tk.Label(purchase_details_container, text="Size: ", bg=self.clr_yellow)
        lbl_product_size.grid(row=6, column=1, sticky="nw", padx=3, pady=1)
        ety_product_size = tk.Entry(purchase_details_container, width=10, textvariable=self.var_product_size,
                                    state='disabled')
        ety_product_size.grid(row=6, column=2, sticky="nw", padx=3, pady=1)

        lbl_selling_price = tk.Label(purchase_details_container, text="Price: ", bg=self.clr_yellow)
        lbl_selling_price.grid(row=7, column=1, sticky="nw", padx=3, pady=1)
        ety_selling_price = tk.Entry(purchase_details_container, width=10, textvariable=self.var_selling_price,
                                     state='disabled')
        ety_selling_price.grid(row=7, column=2, sticky="nw", padx=3, pady=1)

        lbl_quantity = tk.Label(purchase_details_container, text="Quantity: ", bg=self.clr_yellow)
        lbl_quantity.grid(row=8, column=1, sticky="nw", padx=3, pady=1)
        ety_quantity = tk.Entry(purchase_details_container, width=5, textvariable=self.var_quantity, state='disabled')
        ety_quantity.grid(row=8, column=2, sticky="nw", padx=3, pady=1)

        lbl_amount = tk.Label(purchase_details_container, text="Amount: ", bg=self.clr_yellow)
        lbl_amount.grid(row=9, column=1, sticky="nw", padx=3, pady=1)
        ety_amount = tk.Entry(purchase_details_container, width=10, textvariable=self.var_amount, state='disabled')
        ety_amount.grid(row=9, column=2, sticky="nw", padx=3, pady=1)

        purchase_summary_container.grid_columnconfigure(0, weight=1)
        purchase_summary_container.grid_columnconfigure(2, weight=1)

        lbl_purchase_summary = tk.Label(purchase_summary_container, text="Purchase Summary", bg=self.clr_blueiris,
                                        fg="white")
        lbl_purchase_summary.grid(row=0, column=1, sticky="news", padx=3, pady=3)
        lbl_purchase_summary.config(font=("Calibri bold", 14))

        lbl_purchase_date = tk.Label(purchase_summary_container, text="Purchase Date:", bg=self.clr_yellow)
        lbl_purchase_date.grid(row=1, column=1, sticky="nw", padx=3, pady=1)
        ety_purchase_date = tk.Entry(purchase_summary_container, width=12, textvariable=self.var_purchase_date,
                                     state='disabled')
        ety_purchase_date.grid(row=2, column=1, sticky="nw", padx=3, pady=1, ipady=6)

        lbl_total_quantity = tk.Label(purchase_summary_container, text="Total Quantity:", bg=self.clr_yellow)
        lbl_total_quantity.grid(row=3, column=1, sticky="nw", padx=3, pady=1)
        ety_total_quantity = tk.Entry(purchase_summary_container, width=12, textvariable=self.var_total_quantity,
                                      state='disabled')
        ety_total_quantity.grid(row=4, column=1, sticky="nw", padx=3, pady=1, ipady=6)

        lbl_total_amount = tk.Label(purchase_summary_container, text="Total Amount:", bg=self.clr_yellow)
        lbl_total_amount.grid(row=5, column=1, sticky="nw", padx=3, pady=1)
        ety_total_amount = tk.Entry(purchase_summary_container, width=12, textvariable=self.var_total_amount,
                                    state='disabled')
        ety_total_amount.grid(row=6, column=1, sticky="nw", padx=3, pady=1, ipady=6)
        self.var_total_amount.set(format_currency(0, 'INR', locale='en_IN'))

        btn_get_purchase_summary = tk.Button(purchase_summary_container, text="Get Purchase Summary",
                                             bg=self.clr_fuchsia, fg='white', command=self.get_purchase_summary)
        btn_get_purchase_summary.grid(row=7, column=1, sticky="news", padx=3, pady=10)

        # monthly_summary_tree_container
        summary_tree = tk.Frame(purchase_summary_tree_container, pady=1, relief=tk.RIDGE, bg=self.clr_yellow)
        summary_tree.pack(fill='both', expand=True, side=tk.RIGHT)

        header = ('#', 'PRODUCT_CODE', 'PRODUCT', 'TYPE', 'SIZE', 'PRICE', 'QTY', 'AMOUNT', '')
        self.summary_tree = ttk.Treeview(summary_tree, columns=header, height=5, show="headings",
                                         selectmode="browse")
        vsb = ttk.Scrollbar(summary_tree, orient="vertical", command=self.summary_tree.yview)
        hsb = ttk.Scrollbar(summary_tree, orient="horizontal", command=self.summary_tree.xview)

        self.summary_tree.configure(yscrollcommand=vsb.set, xscrollcommand=hsb.set)
        self.summary_tree.grid(column=0, row=0, sticky='nsew')

        vsb.grid(column=1, row=0, sticky='ns')
        hsb.grid(column=0, row=1, sticky='ew')

        summary_tree.grid_columnconfigure(0, weight=1)
        summary_tree.grid_rowconfigure(0, weight=1)

        self.summary_tree.heading("0", text="#")
        self.summary_tree.heading("1", text="PRODUCT_CODE")
        self.summary_tree.heading("2", text="PRODUCT")
        self.summary_tree.heading("3", text="TYPE")
        self.summary_tree.heading("4", text="SIZE")
        self.summary_tree.heading("5", text="PRICE")
        self.summary_tree.heading("6", text="QTY")
        self.summary_tree.heading("7", text="AMOUNT")
        self.summary_tree.heading("8", text="")

        self.summary_tree.column(0, anchor='center', minwidth=30, width=30)
        self.summary_tree.column(1, anchor=tk.W, minwidth=50, width=120)
        self.summary_tree.column(2, anchor=tk.W, minwidth=80, width=100)  # Product
        self.summary_tree.column(3, anchor=tk.W, minwidth=130, width=130)  # Type
        self.summary_tree.column(4, anchor='center', minwidth=50, width=50)    # Size
        self.summary_tree.column(5, anchor=tk.E, minwidth=60, width=60)  # Price
        self.summary_tree.column(6, anchor='center', minwidth=40, width=40)  # Qty
        self.summary_tree.column(7, anchor=tk.E, minwidth=80, width=80)  # Amount
        self.summary_tree.column(8, anchor='center', width=1)
        self.summary_tree["displaycolumns"] = (0, 1, 2, 3, 4, 5, 6, 7, 8)

        numeric_cols = ['#', 'PRICE', 'QTY', 'AMOUNT']
        for col in header:
            if col in numeric_cols:
                self.summary_tree.heading(col, text=col,
                                          command=lambda _col=col: self.sort_treeview(
                                               self.summary_tree, _col,
                                               numeric_sort=True, reverse=False))
            else:
                self.summary_tree.heading(col, text=col,
                                          command=lambda _col=col: self.sort_treeview(
                                               self.summary_tree, _col,
                                               numeric_sort=False, reverse=False))

        self.summary_tree.tag_configure("evenrow", background='#fbefcc')
        self.summary_tree.tag_configure("oddrow", background='white', foreground='black')
Beispiel #30
0
class placeOrder:
    """This class contains method and attributes of the system that allows user to rent a car"""
    def __init__(self, user):
        self.wn = tk.ThemedTk()
        self.wn.configure(bg="#6262ED")
        self.wn.title("Rent a car")
        self.wn.geometry("650x450+200+50")

        self.item_index = ""
        self.my_index = 1

        self.user = user

        self.wn.get_themes()
        self.wn.set_theme('plastik')

        self.item = Admn.Admin()
        self.order = Orders.Order()

        #==========================Frame1==============================#
        self.frame1 = Frame(self.wn)
        self.frame1.place(x=10, y=10)
        self.frame1.configure(bg="#6262ED")

        self.lbl_add = Label(self.frame1,
                             font=("Calibri", 14, "bold"),
                             text="Address:",
                             bg="#6262ED")
        self.lbl_add.grid(row=0, column=0)

        self.combo_tbl1 = ttk.Combobox(self.frame1, state='readonly', width=20)
        self.combo_tbl1.grid(row=0, column=1, padx=5)
        self.combo_tbl1['values'] = self.order.all_address()

        self.btn1 = Button(self.frame1,
                           text='Search',
                           font=('Calibri', 11, "bold"),
                           fg="white",
                           background='#6262ED',
                           width=12,
                           bd=1,
                           command=self.search)
        self.btn1.grid(row=0, column=2, padx=10)

        #==========================Frame2==============================#
        self.frame2 = Frame(self.wn, bg="#6262ED")
        self.frame2.place(x=10, y=50)

        self.cars_tree = ttk.Treeview(self.frame2,
                                      columns=('Brand', 'Model', 'Price',
                                               'Address'))
        self.cars_tree.grid(row=0, column=0)
        self.cars_tree['show'] = 'headings'
        self.cars_tree.column('Brand', width=150, anchor='center')
        self.cars_tree.column('Model', width=150, anchor='center')
        self.cars_tree.column('Price', width=150, anchor='center')
        self.cars_tree.column('Address', width=155, anchor='center')
        self.cars_tree.heading('Brand', text="Brand")
        self.cars_tree.heading('Model', text="Model")
        self.cars_tree.heading('Price', text="Price")
        self.cars_tree.heading('Address', text="Address")
        self.cars_tree.bind("<Double-1>", self.select_item)

        self.vsb = ttk.Scrollbar(self.frame2,
                                 orient="vertical",
                                 command=self.cars_tree.yview)
        self.vsb.place(x=591, y=2, height=225)

        self.cars_tree.configure(yscrollcommand=self.vsb.set)

        #==========================Frame3==============================#
        self.frame3 = Frame(self.wn, bg="#6262ED")
        self.frame3.place(x=10, y=300)

        self.lbl_brand = Label(self.frame3,
                               font=("Calibri", 14, "bold"),
                               text="Brand:",
                               bg="#6262ED")
        self.lbl_brand.grid(row=0, column=0)

        self.lbl_model = Label(self.frame3,
                               font=("Calibri", 14, "bold"),
                               text="Model:",
                               bg="#6262ED")
        self.lbl_model.grid(row=1, column=0)

        self.ent_cbrand = ttk.Entry(self.frame3,
                                    font=("Verdana", 12),
                                    state="readonly")
        self.ent_cbrand.grid(row=0, column=1, padx=10)

        self.ent_cmodel = ttk.Entry(self.frame3,
                                    font=("Verdana", 12),
                                    state="readonly")
        self.ent_cmodel.grid(row=1, column=1, padx=10)

        self.lbl_price = Label(self.frame3,
                               font=("Calibri", 14, "bold"),
                               text="Price:",
                               bg="#6262ED")
        self.lbl_price.grid(row=2, column=0)

        self.ent_cprice = ttk.Entry(self.frame3,
                                    font=("Verdana", 12),
                                    state="readonly")
        self.ent_cprice.grid(row=2, column=1, padx=10)

        self.lbl_date = Label(self.frame3,
                              font=("Calibri", 14, "bold"),
                              text="Pick up Date:",
                              bg="#6262ED")
        self.lbl_date.grid(row=0, column=3)

        self.cal = DateEntry(self.frame3,
                             width=12,
                             background='darkblue',
                             foreground='white',
                             borderwidth=2,
                             state="readonly")
        self.cal.grid(row=0, column=4)

        self.lbl_days = Label(self.frame3,
                              font=("Calibri", 14, "bold"),
                              text="Days:",
                              bg="#6262ED")
        self.lbl_days.grid(row=1, column=3)

        self.combo_tbl2 = ttk.Combobox(self.frame3, state='readonly', width=11)
        self.combo_tbl2.grid(row=1, column=4, padx=5)
        self.combo_tbl2['values'] = [
            '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12',
            '13', '14', '15'
        ]

        self.btn1 = Button(self.wn,
                           text="Order",
                           font=('Calibri', 11, "bold"),
                           fg="white",
                           background='#6262ED',
                           borderwidth=0.5,
                           width=15,
                           command=self.submitOrder)
        self.btn1.place(x=260, y=400)

        self.show_menu()

        self.wn.mainloop()

    def search(self):
        key = self.combo_tbl1.get()
        items = self.order.searchBy_Add(key)
        self.cars_tree.delete(*self.cars_tree.get_children())
        for i in items:
            self.cars_tree.insert("",
                                  "end",
                                  text=i[0],
                                  value=(i[1], i[2], i[3], i[4] + ', Nepal'))

    def select_item(self, event):
        self.ent_cbrand.configure(state="normal")
        self.ent_cmodel.configure(state="normal")
        self.ent_cprice.configure(state="normal")

        selected_item = self.cars_tree.selection()[0]
        self.item_index = self.cars_tree.item(selected_item, 'text')
        item_data = self.cars_tree.item(selected_item, 'values')
        self.ent_cbrand.delete(0, END)
        self.ent_cbrand.insert(0, item_data[0])
        self.ent_cmodel.delete(0, END)
        self.ent_cmodel.insert(0, item_data[1])
        self.ent_cprice.delete(0, END)
        self.ent_cprice.insert(0, item_data[2])
        self.ent_cbrand.bind("<1>", self.entry_bind)
        self.ent_cmodel.bind("<1>", self.entry_bind)
        self.ent_cprice.bind("<1>", self.entry_bind)

    def entry_bind(self, event):
        self.ent_cbrand.configure(state="readonly")
        self.ent_cmodel.configure(state="readonly")
        self.ent_cprice.configure(state="readonly")

    def show_menu(self):
        my_menu = Menu(self.wn, bg="#6262ED")
        self.wn.config(menu=my_menu)
        file_menu = Menu(my_menu)
        my_menu.add_cascade(label="Menu", menu=file_menu)
        file_menu.add_cascade(label="Parking", command=self.openParking)
        file_menu.add_cascade(label="History", command=self.openHistory)
        file_menu.add_cascade(label="Log Out", command=self.logOut)

    def submitOrder(self):
        cid = self.cars_tree.item(self.cars_tree.selection()[0], 'text')
        date = self.cal.get_date()
        days = self.combo_tbl2.get()
        user = self.user[1]

        if self.order.add_order(cid, date, days, user):
            messagebox.showinfo("Ordered", "Order Placed")
        else:
            messagebox.showerror("Error", "Something went wrong")

    def openHistory(self):
        user = self.user
        self.wn.destroy()
        iv = userMenu.Transaction(user)

    def openParking(self):
        self.wn.destroy()
        iv = userParking.Parking(self.user)

    def logOut(self):
        ans = messagebox.askquestion("Log Out",
                                     "Are you sure you want to log out?")
        if ans == "yes":
            self.wn.destroy()
            import loginWn