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 __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])
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)
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)
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)
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))
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
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)
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)
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)
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)
# ############################ 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)
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)
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")
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, 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''')
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()
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
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()
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()
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')
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