Advertisement
Guest User

project

a guest
Mar 28th, 2020
556
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 33.99 KB | None | 0 0
  1. from tkinter import *
  2. import tkinter as tk
  3. from tkinter import ttk, messagebox
  4. import pymysql
  5.  
  6.  
  7. class win1:
  8.     def __init__(self, root):
  9.         self.root = root
  10.         self.root.title("141")
  11.         self.root.geometry("1350x700+0+0")
  12.         self.frame = tk.Frame(self.root)
  13.         self.butnew("open personal", "2", Student)
  14.         self.butnew("open Family", "3", Family)
  15.         self.frame.pack()
  16.  
  17.     def butnew(self, text, number, _class):
  18.         tk.Button(self.frame, text=text, command=lambda: self.new_window(number, _class)).pack()
  19.  
  20.     def new_window(self, number, _class):
  21.         self.new = tk.Toplevel(self.root)
  22.         _class(self.new, number)
  23.  
  24.  
  25. class Student:
  26.     def __init__(self, root, number):
  27.         self.root = root
  28.         self.root.title("Human Data Management System")
  29.         self.root.geometry("1350x700+0+0")
  30.  
  31.         title = Label(self.root, text="Personal Data", bd=10, relief=GROOVE, font=("times new roman", 40, "bold"),
  32.                       bg="Aqua", fg="black")
  33.         title.pack(side=TOP, fill=X)
  34.  
  35.  
  36.         #Abcbtn= Button(btn_Frame, text="open", width=10, command=self.open_win).grid(row=0, column=0, padx=10,
  37. #                                                                        pady=10)
  38.     #def open_win():
  39.  
  40.  
  41. # All Variables
  42.         self.nationalid_var = StringVar()
  43.         self.name_var = StringVar()
  44.         self.email_var = StringVar()
  45.         self.gender_var = StringVar()
  46.         self.bloodgroup_var = StringVar()
  47.         self.contact_var = StringVar()
  48.         self.dob_var = StringVar()
  49.         self.qualification_var = StringVar()
  50.  
  51.         self.search_by = StringVar()
  52.         self.search_txt = StringVar()
  53.  
  54.         # Manage Frame
  55.         Manage_Frame = Frame(self.root, bd=4, relief=RIDGE, bg="Aquamarine")
  56.         Manage_Frame.place(x=20, y=100, width=450, height=580)
  57.  
  58.         m_title = Label(Manage_Frame, text="Manage Data", bg="Aquamarine", fg="black",
  59.                         font=("times new roman", 30, "bold"))
  60.         m_title.grid(row=0, columnspan=2, pady=20)
  61.  
  62.         lbl_roll = Label(Manage_Frame, text="National ID", bg="Aquamarine", fg="black",
  63.                          font=("times new roman", 20, "bold"))
  64.         lbl_roll.grid(row=1, column=0, pady=2, padx=20, sticky="w")
  65.  
  66.         txt_Roll = Entry(Manage_Frame, textvariable=self.nationalid_var, font=("times new roman", 15, "bold"), bd=5,
  67.                          relief=GROOVE)
  68.         txt_Roll.grid(row=1, column=1, pady=2, padx=20, sticky="w")
  69.  
  70.         lbl_name = Label(Manage_Frame, text="Name", bg="Aquamarine", fg="black", font=("times new roman", 20, "bold"))
  71.         lbl_name.grid(row=2, column=0, pady=2, padx=20, sticky="w")
  72.  
  73.         txt_name = Entry(Manage_Frame, textvariable=self.name_var, font=("times new roman", 15, "bold"), bd=5,
  74.                          relief=GROOVE)
  75.         txt_name.grid(row=2, column=1, pady=2, padx=20, sticky="w")
  76.  
  77.         lbl_Email = Label(Manage_Frame, text="Email", bg="Aquamarine", fg="black", font=("times new roman", 20, "bold"))
  78.         lbl_Email.grid(row=3, column=0, pady=2, padx=20, sticky="w")
  79.         txt_Email = Entry(Manage_Frame, textvariable=self.email_var, font=("times new roman", 15, "bold"), bd=5,
  80.                           relief=GROOVE)
  81.         txt_Email.grid(row=3, column=1, pady=2, padx=20, sticky="w")
  82.  
  83.         lbl_Gender = Label(Manage_Frame, text="Gender", bg="Aquamarine", fg="black",
  84.                            font=("times new roman", 20, "bold"))
  85.         lbl_Gender.grid(row=4, column=0, pady=2, padx=20, sticky="w")
  86.  
  87.         combo_gender = ttk.Combobox(Manage_Frame, textvariable=self.gender_var, font=("times new roman", 13, "bold"),
  88.                                     state='readonly')
  89.         combo_gender['values'] = ("male", "female", "other")
  90.         combo_gender.grid(row=4, column=1, padx=20, pady=2)
  91.  
  92.         lbl_Bloodgroup = Label(Manage_Frame, text="Blood Group", bg="Aquamarine", fg="black",
  93.                                font=("times new roman", 20, "bold"))
  94.         lbl_Bloodgroup.grid(row=5, column=0, pady=2, padx=20, sticky="w")
  95.         # txt_Bloodgroup = Entry(Manage_Frame, textvariable=self.bloodgroup_var, font=("times new roman", 15, "bold"), bd=5,relief=GROOVE)
  96.         # txt_Bloodgroup.grid(row=5, column=1, pady=10, padx=20, sticky="w")
  97.  
  98.         combo_bloodgroup = ttk.Combobox(Manage_Frame, textvariable=self.bloodgroup_var,
  99.                                         font=("times new roman", 13, "bold"), state='readonly')
  100.         combo_bloodgroup['values'] = ("A+", "A-", "B+", "B-", "AB+", "AB-", "O+", "O-")
  101.         combo_bloodgroup.grid(row=5, column=1, padx=20, pady=2)
  102.  
  103.         lbl_Contact = Label(Manage_Frame, text="Contact", bg="Aquamarine", fg="black",
  104.                             font=("times new roman", 20, "bold"))
  105.         lbl_Contact.grid(row=6, column=0, pady=2, padx=20, sticky="w")
  106.  
  107.         txt_Contact = Entry(Manage_Frame, textvariable=self.contact_var, font=("times new roman", 15, "bold"), bd=5,
  108.                             relief=GROOVE)
  109.         txt_Contact.grid(row=6, column=1, pady=2, padx=20, sticky="w")
  110.  
  111.         lbl_DOB = Label(Manage_Frame, text="D.O.B", bg="Aquamarine", fg="black", font=("times new roman", 20, "bold"))
  112.         lbl_DOB.grid(row=7, column=0, pady=2, padx=20, sticky="w")
  113.  
  114.         txt_DOB = Entry(Manage_Frame, textvariable=self.dob_var, font=("times new roman", 15, "bold"), bd=5,
  115.                         relief=GROOVE)
  116.         txt_DOB.grid(row=7, column=1, pady=2, padx=20, sticky="w")
  117.  
  118.         lbl_Qualification = Label(Manage_Frame, text="Qualification", bg="Aquamarine", fg="black",
  119.                                   font=("times new roman", 20, "bold"))
  120.         lbl_Qualification.grid(row=8, column=0, pady=2, padx=20, sticky="w")
  121.  
  122.         txt_qualification = Entry(Manage_Frame, textvariable=self.qualification_var,
  123.                                   font=("times new roman", 15, "bold"), bd=5, relief=GROOVE)
  124.         txt_qualification.grid(row=8, column=1, pady=2, padx=20, sticky="w")
  125.  
  126.         lbl_Address = Label(Manage_Frame, text="Address", bg="Aquamarine", fg="black",
  127.                             font=("times new roman", 20, "bold"))
  128.         lbl_Address.grid(row=9, column=0, pady=2, padx=20, sticky="w")
  129.  
  130.         self.txt_Address = Text(Manage_Frame, width=30, height=4, font=("", 10))
  131.         self.txt_Address.grid(row=9, column=1, padx=20, pady=2, sticky="w")
  132.  
  133.         # Button
  134.         btn_Frame = Frame(Manage_Frame, bd=4, relief=RIDGE, bg="Aquamarine")
  135.         btn_Frame.place(x=15, y=500, width=420)
  136.  
  137.         Addbtn = Button(btn_Frame, text="Add", width=10, command=self.add_students).grid(row=0, column=0, padx=10,
  138.                                                                                          pady=10)
  139.         updatebtn = Button(btn_Frame, text="Update", width=10, command=self.update_data).grid(row=0, column=1, padx=10,
  140.                                                                                               pady=10)
  141.         deletebtn = Button(btn_Frame, text="Delete", width=10, command=self.delete_data).grid(row=0, column=2, padx=10,
  142.                                                                                               pady=10)
  143.         clearbtn = Button(btn_Frame, text="Clear", width=10, command=self.clear).grid(row=0, column=3, padx=10, pady=10)
  144.  
  145.         # Detail Frame
  146.         Detail_Frame = Frame(self.root, bd=4, relief=RIDGE, bg="Aquamarine")
  147.         Detail_Frame.place(x=500, y=100, width=810, height=580)
  148.  
  149.         lbl_Search = Label(Detail_Frame, text="Search By", bg="Aquamarine", fg="black",
  150.                            font=("times new roman", 20, "bold"))
  151.         lbl_Search.grid(row=0, column=0, pady=10, padx=20, sticky="w")
  152.  
  153.         combo_search = ttk.Combobox(Detail_Frame, textvariable=self.search_by, width=10,
  154.                                     font=("times new roman", 13, "bold"), state='readonly')
  155.         combo_search['values'] = ("nationalid", "Name", "Contact")
  156.         combo_search.grid(row=0, column=1, padx=20, pady=10)
  157.  
  158.         txt_Search = Entry(Detail_Frame, textvariable=self.search_txt, width=20, font=("times new roman", 10, "bold"),
  159.                            bd=5, relief=GROOVE)
  160.         txt_Search.grid(row=0, column=2, pady=10, padx=20, sticky="w")
  161.  
  162.         searchbtn = Button(Detail_Frame, command=self.search_data, text="Search", width=10, pady=5).grid(row=0,
  163.                                                                                                          column=3,
  164.                                                                                                          padx=10,
  165.                                                                                                          pady=10)
  166.         showallbtn = Button(Detail_Frame, command=self.fetch_data, text="Show All", width=10, pady=5).grid(row=0,
  167.                                                                                                            column=4,
  168.                                                                                                            padx=10,
  169.                                                                                                            pady=10)
  170.  
  171.         # Table Frame
  172.         Table_Frame = Frame(Detail_Frame, bd=4, relief=RIDGE, bg="Aquamarine")
  173.         Table_Frame.place(x=20, y=59, width=760, height=500)
  174.  
  175.         scroll_x = Scrollbar(Table_Frame, orient=HORIZONTAL)
  176.         scroll_y = Scrollbar(Table_Frame, orient=VERTICAL)
  177.         self.Student_table = ttk.Treeview(Table_Frame, columns=(
  178.         "nationalid", "name", "email", "gender", "bloodgroup", "contact", "dob", "qualification", "Address"),
  179.                                           xscrollcommand=scroll_x.set, yscrollcommand=scroll_y.set)
  180.         scroll_x.pack(side=BOTTOM, fil=X)
  181.         scroll_y.pack(side=RIGHT, fil=Y)
  182.         scroll_x.config(command=self.Student_table.xview)
  183.         scroll_y.config(command=self.Student_table.yview)
  184.         self.Student_table.heading("nationalid", text="National ID")
  185.         self.Student_table.heading("name", text="Name")
  186.         self.Student_table.heading("email", text="Email")
  187.         self.Student_table.heading("gender", text="Gender")
  188.         self.Student_table.heading("bloodgroup", text="Blood Group")
  189.         self.Student_table.heading("contact", text="Contact")
  190.         self.Student_table.heading("dob", text="D.O.B")
  191.         self.Student_table.heading("qualification", text="Qualification")
  192.         self.Student_table.heading("Address", text="Address")
  193.         self.Student_table['show'] = 'headings'
  194.         self.Student_table.column("nationalid", width=100)
  195.         self.Student_table.column("name", width=100)
  196.         self.Student_table.column("email", width=100)
  197.         self.Student_table.column("gender", width=100)
  198.         self.Student_table.column("bloodgroup", width=100)
  199.         self.Student_table.column("contact", width=100)
  200.         self.Student_table.column("dob", width=100)
  201.         self.Student_table.column("qualification", width=100)
  202.         self.Student_table.column("Address", width=150)
  203.         self.Student_table.pack(fill=BOTH, expand=1)
  204.         self.Student_table.bind("<ButtonRelease-1>", self.get_cursor)
  205.  
  206.         self.fetch_data()
  207.  
  208.     def add_students(self):
  209.         if self.nationalid_var.get() == "" or self.name_var.get() == "" or self.email_var.get() == "" or self.gender_var.get() == "" or self.contact_var.get() == "" or self.dob_var.get() == "" or self.txt_Address.get(
  210.                 "0.0") == "":
  211.             messagebox.showerror("Error", "All fields are required!!!")
  212.         else:
  213.             con = pymysql.connect(host="localhost", user="root", password="", database="human_data")
  214.             cur = con.cursor()
  215.             cur.execute("insert into personal values(%s,%s,%s,%s,%s,%s,%s,%s,%s)", (self.nationalid_var.get(),
  216.                                                                                     self.name_var.get(),
  217.                                                                                     self.email_var.get(),
  218.                                                                                     self.gender_var.get(),
  219.                                                                                     self.bloodgroup_var.get(),
  220.                                                                                     self.contact_var.get(),
  221.                                                                                     self.dob_var.get(),
  222.                                                                                     self.qualification_var.get(),
  223.                                                                                     self.txt_Address.get('1.0', END)
  224.                                                                                     ))
  225.  
  226.             con.commit()
  227.             self.fetch_data()
  228.             self.clear()
  229.             #  con.colse()
  230.             messagebox.showinfo("Success", "Record has been inserted")
  231.  
  232.     def fetch_data(self):
  233.         con = pymysql.connect(host="localhost", user="root", password="", database="human_data")
  234.         cur = con.cursor()
  235.         cur.execute("select *from personal")
  236.         rows = cur.fetchall()
  237.         if len(rows) != 0:
  238.             self.Student_table.delete(*self.Student_table.get_children())
  239.             for row in rows:
  240.                 self.Student_table.insert('', END, values=row)
  241.             con.commit()
  242.         # con.colse()
  243.  
  244.     def clear(self):
  245.         self.nationalid_var.set("")
  246.         self.name_var.set("")
  247.         self.email_var.set("")
  248.         self.gender_var.set("")
  249.         self.bloodgroup_var.set("")
  250.         self.contact_var.set("")
  251.         self.dob_var.set("")
  252.         self.qualification_var.set("")
  253.         self.txt_Address.delete("1.0", END)
  254.  
  255.     def get_cursor(self, ev):
  256.         cursor_row = self.Student_table.focus()
  257.         contents = self.Student_table.item(cursor_row)
  258.         row = contents["values"]
  259.         self.nationalid_var.set(row[0])
  260.         self.name_var.set(row[1])
  261.         self.email_var.set(row[2])
  262.         self.gender_var.set(row[3])
  263.         self.bloodgroup_var.set(row[4])
  264.         self.contact_var.set(row[5])
  265.         self.dob_var.set(row[6])
  266.         self.qualification_var.set(row[7])
  267.         self.txt_Address.delete("1.0", END)
  268.         self.txt_Address.insert(END, row[8])
  269.  
  270.     def update_data(self):
  271.         con = pymysql.connect(host="localhost", user="root", password="", database="human_data")
  272.         cur = con.cursor()
  273.         cur.execute(
  274.             "update personal set name=%s,email=%s,gender=%s,bloodgroup=%s,contact=%s,dob=%s,qualification=%s,Address=%s where nationalid=%s",
  275.             (
  276.                 self.name_var.get(),
  277.                 self.email_var.get(),
  278.                 self.gender_var.get(),
  279.                 self.bloodgroup_var.get(),
  280.                 self.contact_var.get(),
  281.                 self.dob_var.get(),
  282.                 self.qualification_var.get(),
  283.                 self.txt_Address.get('1.0', END),
  284.                 self.nationalid_var.get()
  285.             ))
  286.         con.commit()
  287.         self.fetch_data()
  288.         self.clear()
  289.         # con.colse()
  290.  
  291.     def delete_data(self):
  292.         con = pymysql.connect(host="localhost", user="root", password="", database="human_data")
  293.         cur = con.cursor()
  294.         cur.execute("delete from personal where nationalid=%s", self.nationalid_var.get())
  295.         con.commit()
  296.         con.close()
  297.         self.fetch_data()
  298.         self.clear()
  299.  
  300.     def search_data(self):
  301.         con = pymysql.connect(host="localhost", user="root", password="", database="human_data")
  302.         cur = con.cursor()
  303.  
  304.         cur.execute(
  305.             "select *from personal where " + str(self.search_by.get()) + " LIKE '%" + str(self.search_txt.get()) + "%'")
  306.         rows = cur.fetchall()
  307.         if len(rows) != 0:
  308.             self.Student_table.delete(*self.Student_table.get_children())
  309.             for row in rows:
  310.                 self.Student_table.insert('', END, values=row)
  311.             con.commit()
  312.         con.colse()
  313.         self.frame=tk.Frame(self, root)
  314.         self.frame.pack()
  315.  
  316.  
  317. class Family:
  318.     def __init__(self, root, number):
  319.         self.root = root
  320.         self.root.title("Human Data Management System")
  321.         self.root.geometry("1350x700+0+0")
  322.  
  323.         title = Label(self.root, text="Family Data", bd=10, relief=GROOVE, font=("times new roman", 40, "bold"),
  324.                       bg="Aqua", fg="black")
  325.         title.pack(side=TOP, fill=X)
  326.  
  327.  
  328.         #Abcbtn= Button(btn_Frame, text="open", width=10, command=self.open_win).grid(row=0, column=0, padx=10,
  329. #                                                                        pady=10)
  330.     #def open_win():
  331.  
  332.  
  333. # All Variables
  334.         self.nationalid_var = StringVar()
  335.         self.father_name_var = StringVar()
  336.         self.mother_name_var = StringVar()
  337.         self.father_occupation_var = StringVar()
  338.         self.mother_occupation_var = StringVar()
  339.         self.siblings_var = StringVar()
  340.  
  341.         #self.email_var = StringVar()
  342.         #self.gender_var = StringVar()
  343.         #self.bloodgroup_var = StringVar()
  344.        # self.contact_var = StringVar()
  345.        # self.dob_var = StringVar()
  346.        # self.qualification_var = StringVar()
  347.  
  348.         self.search_by = StringVar()
  349.         self.search_txt = StringVar()
  350.  
  351.         # Manage Frame
  352.         Manage_Frame = Frame(self.root, bd=4, relief=RIDGE, bg="Aquamarine")
  353.         Manage_Frame.place(x=20, y=100, width=450, height=580)
  354.  
  355.         m_title = Label(Manage_Frame, text="Manage Data", bg="Aquamarine", fg="black",
  356.                         font=("times new roman", 30, "bold"))
  357.         m_title.grid(row=0, columnspan=2, pady=20)
  358.  
  359.         lbl_nationalid = Label(Manage_Frame, text="National ID", bg="Aquamarine", fg="black",
  360.                          font=("times new roman", 15, "bold"))
  361.         lbl_nationalid.grid(row=1, column=0, pady=10, padx=20, sticky="w")
  362.  
  363.         txt_nationalid = Entry(Manage_Frame, textvariable=self.nationalid_var, font=("times new roman", 15, "bold"), bd=5,
  364.                          relief=GROOVE)
  365.         txt_nationalid.grid(row=1, column=1, pady=10, padx=2, sticky="w")
  366.  
  367.         lbl_fathername = Label(Manage_Frame, text="Father's name", bg="Aquamarine", fg="black", font=("times new roman", 15, "bold"))
  368.         lbl_fathername.grid(row=2, column=0, pady=10, padx=20, sticky="w")
  369.  
  370.         txt_fathername = Entry(Manage_Frame, textvariable=self.father_name_var, font=("times new roman", 15, "bold"), bd=5,
  371.                          relief=GROOVE)
  372.         txt_fathername.grid(row=2, column=1, pady=10, padx=2, sticky="w")
  373.  
  374.         lbl_mothername = Label(Manage_Frame, text="Mother's name", bg="Aquamarine", fg="black",
  375.                                font=("times new roman", 15, "bold"))
  376.         lbl_mothername.grid(row=3, column=0, pady=10, padx=20, sticky="w")
  377.  
  378.         txt_mothername = Entry(Manage_Frame, textvariable=self.mother_name_var, font=("times new roman", 15, "bold"), bd=5,
  379.                          relief=GROOVE)
  380.         txt_mothername.grid(row=3, column=1, pady=10, padx=2, sticky="w")
  381.  
  382.         lbl_fatheroccu = Label(Manage_Frame, text="Father's Occupation", bg="Aquamarine", fg="black",
  383.                                font=("times new roman", 15, "bold"))
  384.         lbl_fatheroccu.grid(row=4, column=0, pady=10, padx=20, sticky="w")
  385.  
  386.         txt_fatheroccu = Entry(Manage_Frame, textvariable=self.father_occupation_var, font=("times new roman", 15, "bold"), bd=5,
  387.                          relief=GROOVE)
  388.         txt_fatheroccu.grid(row=4, column=1, pady=10, padx=2, sticky="w")
  389.  
  390.         lbl_motheroccu = Label(Manage_Frame, text="Mother's Occupation", bg="Aquamarine", fg="black",
  391.                                font=("times new roman", 15, "bold"))
  392.         lbl_motheroccu.grid(row=5, column=0, pady=10, padx=20, sticky="w")
  393.  
  394.         txt_motheroccu = Entry(Manage_Frame, textvariable=self.mother_occupation_var, font=("times new roman", 15, "bold"), bd=5,
  395.                          relief=GROOVE)
  396.         txt_motheroccu.grid(row=5, column=1, pady=10, padx=2, sticky="w")
  397.  
  398.         lbl_siblings = Label(Manage_Frame, text="Siblings", bg="Aquamarine", fg="black",
  399.                                font=("times new roman", 15, "bold"))
  400.         lbl_siblings.grid(row=6, column=0, pady=10, padx=20, sticky="w")
  401.  
  402.         txt_siblings = Entry(Manage_Frame, textvariable=self.siblings_var, font=("times new roman", 15, "bold"), bd=5,
  403.                          relief=GROOVE)
  404.         txt_siblings.grid(row=6, column=1, pady=10, padx=2, sticky="w")
  405.  
  406.  
  407.  
  408.         #lbl_Email = Label(Manage_Frame, text="Email", bg="Aquamarine", fg="black", font=("times new roman", 20, "bold"))
  409.        # lbl_Email.grid(row=3, column=0, pady=2, padx=20, sticky="w")
  410.        # txt_Email = Entry(Manage_Frame, textvariable=self.email_var, font=("times new roman", 15, "bold"), bd=5,
  411.          #                 relief=GROOVE)
  412.         #txt_Email.grid(row=3, column=1, pady=2, padx=20, sticky="w")
  413.  
  414.       #  lbl_Gender = Label(Manage_Frame, text="Gender", bg="Aquamarine", fg="black",
  415.         #                   font=("times new roman", 20, "bold"))
  416.         #lbl_Gender.grid(row=4, column=0, pady=2, padx=20, sticky="w")
  417.  
  418.         #combo_gender = ttk.Combobox(Manage_Frame, textvariable=self.gender_var, font=("times new roman", 13, "bold"),
  419.        #                             state='readonly')
  420.       #  combo_gender['values'] = ("male", "female", "other")
  421.         #combo_gender.grid(row=4, column=1, padx=20, pady=2)
  422.  
  423.         #lbl_Bloodgroup = Label(Manage_Frame, text="Blood Group", bg="Aquamarine", fg="black",
  424.          #                      font=("times new roman", 20, "bold"))
  425.         #lbl_Bloodgroup.grid(row=5, column=0, pady=2, padx=20, sticky="w")
  426.         # txt_Bloodgroup = Entry(Manage_Frame, textvariable=self.bloodgroup_var, font=("times new roman", 15, "bold"), bd=5,relief=GROOVE)
  427.         # txt_Bloodgroup.grid(row=5, column=1, pady=10, padx=20, sticky="w")
  428.  
  429.         #combo_bloodgroup = ttk.Combobox(Manage_Frame, textvariable=self.bloodgroup_var,
  430.          #                               font=("times new roman", 13, "bold"), state='readonly')
  431.         #combo_bloodgroup['values'] = ("A+", "A-", "B+", "B-", "AB+", "AB-", "O+", "O-")
  432.         #combo_bloodgroup.grid(row=5, column=1, padx=20, pady=2)
  433.  
  434.         #lbl_Contact = Label(Manage_Frame, text="Contact", bg="Aquamarine", fg="black",
  435.          #                   font=("times new roman", 20, "bold"))
  436.         #lbl_Contact.grid(row=6, column=0, pady=2, padx=20, sticky="w")
  437.  
  438.         #txt_Contact = Entry(Manage_Frame, textvariable=self.contact_var, font=("times new roman", 15, "bold"), bd=5,
  439.          #                   relief=GROOVE)
  440.         #txt_Contact.grid(row=6, column=1, pady=2, padx=20, sticky="w")
  441.  
  442.         #lbl_DOB = Label(Manage_Frame, text="D.O.B", bg="Aquamarine", fg="black", font=("times new roman", 20, "bold"))
  443.         #lbl_DOB.grid(row=7, column=0, pady=2, padx=20, sticky="w")
  444.  
  445.         #txt_DOB = Entry(Manage_Frame, textvariable=self.dob_var, font=("times new roman", 15, "bold"), bd=5,
  446.          #               relief=GROOVE)
  447.         #txt_DOB.grid(row=7, column=1, pady=2, padx=20, sticky="w")
  448.  
  449.         #bl_Qualification = Label(Manage_Frame, text="Qualification", bg="Aquamarine", fg="black",
  450.           #                        font=("times new roman", 20, "bold"))
  451.         #lbl_Qualification.grid(row=8, column=0, pady=2, padx=20, sticky="w")
  452.  
  453.         #txt_qualification = Entry(Manage_Frame, textvariable=self.qualification_var,
  454.          #                         font=("times new roman", 15, "bold"), bd=5, relief=GROOVE)
  455.         #txt_qualification.grid(row=8, column=1, pady=2, padx=20, sticky="w")
  456.  
  457.         #lbl_Address = Label(Manage_Frame, text="Address", bg="Aquamarine", fg="black",
  458.          #                   font=("times new roman", 20, "bold"))
  459.        # lbl_Address.grid(row=9, column=0, pady=2, padx=20, sticky="w")
  460.  
  461.       #  self.txt_Address = Text(Manage_Frame, width=30, height=4, font=("", 10))
  462.       #  self.txt_Address.grid(row=9, column=1, padx=20, pady=2, sticky="w")
  463.  
  464.         # Button
  465.         btn_Frame = Frame(Manage_Frame, bd=4, relief=RIDGE, bg="Aquamarine")
  466.         btn_Frame.place(x=15, y=500, width=420)
  467.  
  468.         Addbtn = Button(btn_Frame, text="Add", width=10, command=self.add_students).grid(row=0, column=0, padx=10,
  469.                                                                                          pady=10)
  470.         updatebtn = Button(btn_Frame, text="Update", width=10, command=self.update_data).grid(row=0, column=1, padx=10,
  471.                                                                                               pady=10)
  472.         deletebtn = Button(btn_Frame, text="Delete", width=10, command=self.delete_data).grid(row=0, column=2, padx=10,
  473.                                                                                               pady=10)
  474.         clearbtn = Button(btn_Frame, text="Clear", width=10, command=self.clear).grid(row=0, column=3, padx=10, pady=10)
  475.  
  476.         # Detail Frame
  477.         Detail_Frame = Frame(self.root, bd=4, relief=RIDGE, bg="Aquamarine")
  478.         Detail_Frame.place(x=500, y=100, width=810, height=580)
  479.  
  480.         lbl_Search = Label(Detail_Frame, text="Search By", bg="Aquamarine", fg="black",
  481.                            font=("times new roman", 20, "bold"))
  482.         lbl_Search.grid(row=0, column=0, pady=10, padx=20, sticky="w")
  483.  
  484.         combo_search = ttk.Combobox(Detail_Frame, textvariable=self.search_by, width=10,
  485.                                     font=("times new roman", 13, "bold"), state='readonly')
  486.         combo_search['values'] = ("nationalid")
  487.         combo_search.grid(row=0, column=1, padx=20, pady=10)
  488.  
  489.         txt_Search = Entry(Detail_Frame, textvariable=self.search_txt, width=20, font=("times new roman", 10, "bold"),
  490.                            bd=5, relief=GROOVE)
  491.         txt_Search.grid(row=0, column=2, pady=10, padx=20, sticky="w")
  492.  
  493.         searchbtn = Button(Detail_Frame, command=self.search_data, text="Search", width=10, pady=5).grid(row=0,
  494.                                                                                                          column=3,
  495.                                                                                                          padx=10,
  496.                                                                                                          pady=10)
  497.         showallbtn = Button(Detail_Frame, command=self.fetch_data, text="Show All", width=10, pady=5).grid(row=0,
  498.                                                                                                            column=4,
  499.                                                                                                            padx=10,
  500.                                                                                                            pady=10)
  501.  
  502.         # Table Frame
  503.         Table_Frame = Frame(Detail_Frame, bd=4, relief=RIDGE, bg="Aquamarine")
  504.         Table_Frame.place(x=20, y=59, width=760, height=500)
  505.  
  506.         scroll_x = Scrollbar(Table_Frame, orient=HORIZONTAL)
  507.         scroll_y = Scrollbar(Table_Frame, orient=VERTICAL)
  508.         self.Family_table = ttk.Treeview(Table_Frame, columns=(
  509.         "nationalid", "fathername", "mothername", "fatheroccupation", "motheroccupation", "siblings"),
  510.                                           xscrollcommand=scroll_x.set, yscrollcommand=scroll_y.set)
  511.         scroll_x.pack(side=BOTTOM, fil=X)
  512.         scroll_y.pack(side=RIGHT, fil=Y)
  513.         scroll_x.config(command=self.Family_table.xview)
  514.         scroll_y.config(command=self.Family_table.yview)
  515.         self.Family_table.heading("nationalid", text="National ID")
  516.         self.Family_table.heading("fathername", text="Father's Name")
  517.         self.Family_table.heading("mothername", text="Mother's name")
  518.         self.Family_table.heading("fatheroccupation", text="Father's Occupation")
  519.         self.Family_table.heading("motheroccupation", text="Mother's Occupation")
  520.         self.Family_table.heading("siblings", text="Siblings")
  521.         #self.Student_table.heading("dob", text="D.O.B")
  522.         #self.Student_table.heading("qualification", text="Qualification")
  523.         #self.Student_table.heading("Address", text="Address")
  524.         self.Family_table['show'] = 'headings'
  525.         self.Family_table.column("nationalid", width=100)
  526.         self.Family_table.column("fathername", width=100)
  527.         self.Family_table.column("mothername", width=100)
  528.         self.Family_table.column("fatheroccupation", width=100)
  529.         self.Family_table.column("motheroccupation", width=100)
  530.         self.Family_table.column("siblings", width=100)
  531.         #self.Student_table.column("email", width=100)
  532.        # self.Student_table.column("gender", width=100)
  533.         #self.Student_table.column("bloodgroup", width=100)
  534.         #self.Student_table.column("contact", width=100)
  535.         #self.Student_table.column("dob", width=100)
  536.         #self.Student_table.column("qualification", width=100)
  537.         #self.Student_table.column("Address", width=150)
  538.         self.Family_table.pack(fill=BOTH, expand=1)
  539.         self.Family_table.bind("<ButtonRelease-1>", self.get_cursor)
  540.  
  541.         self.fetch_data()
  542.  
  543.     def add_students(self):
  544.         if self.nationalid_var.get() == "" or self.father_name_var.get() == "" or self.mother_name_var.get() == "" or self.father_occupation_var.get() == "" or self.mother_occupation_var.get() == "" or self.siblings_var.get() == "":
  545.             messagebox.showerror("Error", "All fields are required!!!")
  546.         else:
  547.             con = pymysql.connect(host="localhost", user="root", password="", database="human_data")
  548.             cur = con.cursor()
  549.             cur.execute("insert into familydata values(%s,%s,%s,%s,%s,%s)", (self.nationalid_var.get(),
  550.                                                                            self.father_name_var.get(),
  551.                                                                            self.mother_name_var.get(),
  552.                                                                            self.father_occupation_var.get(),
  553.                                                                            self.mother_occupation_var.get(),
  554.                                                                            self.siblings_var.get(),
  555.                                                                                     #self.contact_var.get(),
  556.                                                                                     #self.dob_var.get(),
  557.                                                                                     #self.qualification_var.get(),
  558.                                                                                     #self.txt_Address.get('1.0', END)
  559.                                                                           ))
  560.  
  561.             con.commit()
  562.             self.fetch_data()
  563.             self.clear()
  564.             #  con.colse()
  565.             messagebox.showinfo("Success", "Record has been inserted")
  566.  
  567.     def fetch_data(self):
  568.         con = pymysql.connect(host="localhost", user="root", password="", database="human_data")
  569.         cur = con.cursor()
  570.         cur.execute("select *from familydata")
  571.         rows = cur.fetchall()
  572.         if len(rows) != 0:
  573.             self.Family_table.delete(*self.Family_table.get_children())
  574.             for row in rows:
  575.                 self.Family_table.insert('', END, values=row)
  576.             con.commit()
  577.         # con.colse()
  578.  
  579.     def clear(self):
  580.         self.nationalid_var.set("")
  581.         self.father_name_var.set("")
  582.         self.mother_name_var.set("")
  583.         self.father_occupation_var.set("")
  584.         self.mother_occupation_var.set("")
  585.         self.siblings_var.set("")
  586.         #self.dob_var.set("")
  587.        # self.qualification_var.set("")
  588.        # self.txt_Address.delete("1.0", END)
  589.  
  590.     def get_cursor(self, ev):
  591.         cursor_row = self.Family_table.focus()
  592.         contents = self.Family_table.item(cursor_row)
  593.         row = contents["values"]
  594.         self.nationalid_var.set(row[0])
  595.         self.father_name_var.set(row[1])
  596.         self.mother_name_var.set(row[2])
  597.         self.father_occupation_var.set(row[3])
  598.         self.mother_occupation_var.set(row[4])
  599.         self.siblings_var.set(row[5])
  600.         #self.dob_var.set(row[6])
  601.         #self.qualification_var.set(row[7])
  602.         #self.txt_Address.delete("1.0", END)
  603.         #self.txt_Address.insert(END, row[8])
  604.  
  605.     def update_data(self):
  606.         con = pymysql.connect(host="localhost", user="root", password="", database="human_data")
  607.         cur = con.cursor()
  608.         cur.execute(
  609.             "update familydata set fathername=%s,mothername=%s,fatheroccupation=%s,motheroccupation=%s,siblings=%s where nationalid=%s",
  610.             (
  611.                 self.father_name_var.get(),
  612.                 self.mother_name_var.get(),
  613.                 self.father_occupation_var.get(),
  614.                 self.mother_occupation_var.get(),
  615.                 self.siblings_var.get(),
  616.                 #self.contact_var.get(),
  617.                 #self.dob_var.get(),
  618.                 #self.qualification_var.get(),
  619.                 #self.txt_Address.get('1.0', END),
  620.                 self.nationalid_var.get()
  621.             ))
  622.         con.commit()
  623.         self.fetch_data()
  624.         self.clear()
  625.         # con.colse()
  626.  
  627.     def delete_data(self):
  628.         con = pymysql.connect(host="localhost", user="root", password="", database="human_data")
  629.         cur = con.cursor()
  630.         cur.execute("delete from familydata where nationalid=%s", self.nationalid_var.get())
  631.         con.commit()
  632.         con.close()
  633.         self.fetch_data()
  634.         self.clear()
  635.  
  636.     def search_data(self):
  637.         con = pymysql.connect(host="localhost", user="root", password="", database="human_data")
  638.         cur = con.cursor()
  639.  
  640.         cur.execute(
  641.             "select *from familydata where " + str(self.search_by.get()) + " LIKE '%" + str(self.search_txt.get()) + "%'")
  642.         rows = cur.fetchall()
  643.         if len(rows) != 0:
  644.             self.Family_table.delete(*self.Family_table.get_children())
  645.             for row in rows:
  646.                 self.Family_table.insert('', END, values=row)
  647.             con.commit()
  648.         con.colse()
  649.         self.frame=tk.Frame(self, root)
  650.         self.frame.pack()
  651.  
  652. root =tk.Tk()
  653. ob = win1(root)
  654. root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement