Exemple #1
0
    def __init__(self,
                 id_,
                 master=None,
                 callback=None,
                 callback1=None,
                 callback2=None,
                 callback3=None):
        super().__init__(master)
        self.id_ = id_
        self.callback = callback  # add_account()
        self.callback1 = callback1  # get_accounts()
        self.callback2 = callback2  # remove_account()
        self.callback3 = callback3  # add_money()
        self.pack()

        # Defining main frames
        self.fr_buttons = Frame(self)
        self.fr_buttons.grid(row=0, column=0)
        self.fr_treeview = Frame(self)
        self.fr_treeview.grid(row=0, column=1)

        # Frame Buttons
        self.btn_add_acc = Button(self.fr_buttons,
                                  text="add account",
                                  command=self.add_account)
        self.btn_add_acc.grid(row=0, column=0)
        self.btn_del_acc = Button(self.fr_buttons,
                                  text="delete account",
                                  command=self.del_account)
        self.btn_del_acc.grid(row=1, column=0)
        self.btn_add_money = Button(self.fr_buttons,
                                    text="add money",
                                    command=self.add_money)
        self.btn_add_money.grid(row=2, column=0)

        # Frame Treev

        self.treev = ttk.Treeview(self.fr_treeview,
                                  selectmode="browse",
                                  height=15)
        self.treev.grid(row=0, column=0)
        self.treev['columns'] = ("1", "2")
        self.treev["show"] = "headings"
        self.treev.column("1", width=140, anchor='c')
        self.treev.column("2", width=140, anchor='c')
        self.treev.heading("1", text="account number")
        self.treev.heading("2", text="remaining")
        self.scrollbar = ttk.Scrollbar(self.fr_treeview,
                                       command=self.treev.yview,
                                       orient=tk.VERTICAL)
        self.scrollbar.grid(row=0, column=1)
        self.treev.configure(xscrollcommand=self.scrollbar.set)

        if self.callback1:  # filling treeview
            for data in self.callback1():
                self.treev.insert("", "end", values=data)
Exemple #2
0
class ManagerView(Tk):
    '''
    This class creates manager panel.
    Access to: 
        edit_user_view panel
        edit_me_view panel
        add_user_view panel
    '''
        
    def __init__(self, name, username, list_employees,
                 callback1 = None, callback2 = None,
                 callback3 = None, callback4 = None,
                 callback5 = None, callback6 = None):
        super().__init__()
        self.name = name
        self.username = username
        self.list_employees = list_employees
        self.callback1 = callback1  # add_employee()
        self.callback2 = callback2  # del_employee()
        self.callback3 = callback3  # change_employee()
        self.callback4 = callback4  # open_employee_panel()
        self.callback5 = callback5  # search()
        self.callback6 = callback6  # set_my_info()
        self.title(f"Panel manager: {self.name}")
        #self.icon (may add it)
        self.resizable(False, False)
        self.tabs = ttk.Notebook(self)
        self.tabs.grid(row = 0, column = 0)
        
        self.tab_main = Frame(self) 
        self.tab_main.grid(row = 0, column = 0)
        self.tab_edit_me = Frame(self)
        self.tab_edit_me.grid(row = 0, column = 0)
        self.tab_add_user = Frame(self)
        self.tab_add_user.grid(row = 0, column = 0)
        self.tab_edit_user = Frame(self)
        self.tab_edit_user.grid(row = 0, column = 0)        
        self.tabs.add(self.tab_main, text = "Main menu")
        
        # Defining Tab-main frames
        self.fr_aboutme = tk.LabelFrame(self.tab_main, text = "About me",
                                        bg = "#00a693")
        self.fr_aboutme.grid(row = 0, column = 0, rowspan = 2, padx = 10)
        self.fr_seachbar = Frame(self.tab_main)
        self.fr_seachbar.grid(row = 0, column = 1)
        self.fr_treev = Frame(self.tab_main)
        self.fr_treev.grid(row = 1, column = 1)
        self.fr_edit = Frame(self.tab_main)
        self.fr_edit.grid(row = 1, column = 2)
        
        # Frame about
        self.lbl_name = Label(self.fr_aboutme, text = "Name:")
        self.lbl_name.grid(row = 0, column = 0,
                           sticky = "w", padx = 10, pady = 5)
        self.lbl_name = Label(self.fr_aboutme, text = self.name)
        self.lbl_name.grid(row = 0, column = 1,
                           sticky = "w", padx = 10, pady = 5)
        self.lbl_username = Label(self.fr_aboutme, text = "Username:"******"w", padx = 10, pady = 5)
        self.lbl_username = Label(self.fr_aboutme, text = self.username)
        self.lbl_username.grid(row = 1, column = 1,
                               sticky = "w", padx = 10, pady = 5)
        self.btn_edit_me = Button(self.fr_aboutme, text = "Edit",
                                  command = self.edit_me, 
                                  relief = tk.GROOVE)
        self.btn_edit_me.grid(row = 2, column = 0, columnspan = 2, pady = 5)    
        
        # Frame search bar
        self.search_bar = tk.Entry(self.fr_seachbar, width = 21)
        self.search_bar.grid(row = 0, column = 0, pady = 10)
        self.search_bar.bind("<Return>", lambda _: self.btn_search.invoke())
        self.btn_search = Button(self.fr_seachbar, text = "search", 
                                 command = self.search_treev) 
        self.btn_search.grid(row = 0, column = 1, padx = 5)
        self.btn_refresh = Button(self.fr_seachbar, text = "Refresh", 
                                  command = self.refresh_treev)
        self.btn_refresh.grid(row = 0, column = 2)
        
        # Frame list
        self.users_treev = ttk.Treeview(self.fr_treev, selectmode = 'browse',
                                        height = 15)
        self.users_treev.grid(row = 0, column = 0)
        self.users_treev['columns'] = ("1", "2") 
        self.users_treev["show"] = "headings"
        self.users_treev.column("1", width = 140, anchor ='c')
        self.users_treev.column("2", width = 140, anchor ='c')

        self.users_treev.heading("1", text ="Name",
                                 command = lambda: \
                                 self.treev_cl_sort("1", False))
        self.users_treev.heading("2", text ="Username",
                                 command = lambda: \
                                 self.treev_cl_sort("2", False))

        self.scrollbar = ttk.Scrollbar(self.fr_treev,
                                       command = self.users_treev.yview, 
                                       orient = tk.VERTICAL)
        self.scrollbar.grid(row = 0, column = 1)
        self.users_treev.configure(xscrollcommand = self.scrollbar.set)
        
        # Frame edit
        self.btn_add_user = Button(self.fr_edit, text = "Add user",
                                   command = self.add_user)
        self.btn_add_user.grid(row = 0, column = 0)
        self.btn_edit_user = Button(self.fr_edit, text = "Edit user",
                                    command = self.edit_user)
        self.btn_edit_user.grid(row = 1, column = 0, pady = 10, padx = 10)
        self.btn_delete_user = Button(self.fr_edit, text = "Delete user",
                                      command = self.del_user)
        self.btn_delete_user.grid(row = 2, column = 0)
        
        for user in self.list_employees:
            self.users_treev.insert("", "end", values = user)
        self.users_treev.bind("<Double-1>", self.onDoubleClick)
    def onDoubleClick(self, event):
        '''
        assigning a double-click function to treev to open their panel.
        '''
        
        user = self.users_treev.selection()
        if user == ():  # double click on headings or any other empty space
            return None
        name, username = self.users_treev.item(user)["values"] # =(name, user)
        if self.callback4:
            self.callback4(username) 
        self.users_treev.selection_remove(user[0]) # clear selection
        
    def edit_me(self):
        children = self.tab_edit_me.winfo_children()
        if children != []:  # if a edit_view panel is open then ignore.
            return None
        panel = EditMeView(self.username, self.tab_edit_me, self.callback6, 
                           self.close_tab, self.msg_err)

        self.tabs.add(self.tab_edit_me, text = "Edit-me menu")
        
    def add_user(self):
        children = self.tab_add_user.winfo_children()
        if children != []:  # if a edit_view panel is open then ignore.
            return None
        panel = AddUserView(self.tab_add_user, self.callback1,
                            self.close_tab, self.msg_err)
        self.tabs.add(self.tab_add_user, text = "Add-user")
        
    def del_user(self):
        selected = self.users_treev.focus()  # returns selected item ID
        if selected == "":  # nothig selected, but btn is ckicked
            return None
        name, username = self.users_treev.item(selected, "values")
        self.users_treev.delete(selected)
        if self.callback2:
            self.callback2(username, self.msg_err)
        # update self.list_emplyees
        
    def edit_user(self):
        '''
        first delete any opened tab for editing and then open new tab for edit
        '''
        children = self.tab_edit_user.winfo_children()
        if children != []:
            for widget in children:  # wiget = last EditUserView()
                widget.destroy()
        selected = self.users_treev.focus()
        if selected == "":  # nothig selected, but btn is ckicked
            return None
        name, username = self.users_treev.item(selected, "values")
        panel = EditUserView(name, username, self.tab_edit_user,
                             self.callback3, self.close_tab, self.msg_err)
        self.tabs.add(self.tab_edit_user, text = f"Edit {name}")
        # update self.list_employees (update by order of main.py).
        # update treeview. call refresh_treev after list update.
        self.users_treev.selection_remove(selected) 
        
    def refresh_treev(self):
        '''simply deletes the entire treev and inserts items again'''
        
        self.users_treev.delete(*self.users_treev.get_children())
        for user in self.list_employees:
            self.users_treev.insert("", "end", values = user)
        
    def search_treev(self):
        '''
        gets anythin in self.search_bar and send to main.py.
        self.msg_err if nothing was found
        '''
        text = self.search_bar.get()
        if self.callback5:
            matched_items = self.callback5(text)
        if len(matched_items) > 0:
            self.users_treev.delete(*self.users_treev.get_children())
            for item in matched_items:
                self.users_treev.insert("", "end", values = item)
        else:
            self.msg_err("Error", "User not found")
   
    def treev_cl_sort(self, col, reverse):
        ''' click on each heading to sort by the values of it.'''
        
        users = [(self.users_treev.set(id_, col), id_) \
                      for id_ in self.users_treev.get_children()]
        # users = [(value 1, id-row 1), (value 2, id-row 2), ...]
        users.sort(reverse = reverse)  # sorted by values. not row-id !
        for index, (val, id_) in enumerate(users):
            self.users_treev.move(id_, '', index)
        self.users_treev.heading(col, command=lambda: \
                                 self.treev_cl_sort(col, not reverse))
            
    def close_tab(self):
        '''
        just closing the tab.
        used as callback for all tabs like edit_view, edit_me, etc.
        '''
        
        self.tabs.forget(self.tabs.select())
        
    def run(self):
        self.mainloop()
        
    def close(self):
        self.destroy()
    
    def msg_err(self, title = None, msg = None, master = None):
        if master is None:
            master = self
        tk.messagebox.showerror(title, msg, parent = master)
Exemple #3
0
    def __init__(self, name, username, list_employees,
                 callback1 = None, callback2 = None,
                 callback3 = None, callback4 = None,
                 callback5 = None, callback6 = None):
        super().__init__()
        self.name = name
        self.username = username
        self.list_employees = list_employees
        self.callback1 = callback1  # add_employee()
        self.callback2 = callback2  # del_employee()
        self.callback3 = callback3  # change_employee()
        self.callback4 = callback4  # open_employee_panel()
        self.callback5 = callback5  # search()
        self.callback6 = callback6  # set_my_info()
        self.title(f"Panel manager: {self.name}")
        #self.icon (may add it)
        self.resizable(False, False)
        self.tabs = ttk.Notebook(self)
        self.tabs.grid(row = 0, column = 0)
        
        self.tab_main = Frame(self) 
        self.tab_main.grid(row = 0, column = 0)
        self.tab_edit_me = Frame(self)
        self.tab_edit_me.grid(row = 0, column = 0)
        self.tab_add_user = Frame(self)
        self.tab_add_user.grid(row = 0, column = 0)
        self.tab_edit_user = Frame(self)
        self.tab_edit_user.grid(row = 0, column = 0)        
        self.tabs.add(self.tab_main, text = "Main menu")
        
        # Defining Tab-main frames
        self.fr_aboutme = tk.LabelFrame(self.tab_main, text = "About me",
                                        bg = "#00a693")
        self.fr_aboutme.grid(row = 0, column = 0, rowspan = 2, padx = 10)
        self.fr_seachbar = Frame(self.tab_main)
        self.fr_seachbar.grid(row = 0, column = 1)
        self.fr_treev = Frame(self.tab_main)
        self.fr_treev.grid(row = 1, column = 1)
        self.fr_edit = Frame(self.tab_main)
        self.fr_edit.grid(row = 1, column = 2)
        
        # Frame about
        self.lbl_name = Label(self.fr_aboutme, text = "Name:")
        self.lbl_name.grid(row = 0, column = 0,
                           sticky = "w", padx = 10, pady = 5)
        self.lbl_name = Label(self.fr_aboutme, text = self.name)
        self.lbl_name.grid(row = 0, column = 1,
                           sticky = "w", padx = 10, pady = 5)
        self.lbl_username = Label(self.fr_aboutme, text = "Username:"******"w", padx = 10, pady = 5)
        self.lbl_username = Label(self.fr_aboutme, text = self.username)
        self.lbl_username.grid(row = 1, column = 1,
                               sticky = "w", padx = 10, pady = 5)
        self.btn_edit_me = Button(self.fr_aboutme, text = "Edit",
                                  command = self.edit_me, 
                                  relief = tk.GROOVE)
        self.btn_edit_me.grid(row = 2, column = 0, columnspan = 2, pady = 5)    
        
        # Frame search bar
        self.search_bar = tk.Entry(self.fr_seachbar, width = 21)
        self.search_bar.grid(row = 0, column = 0, pady = 10)
        self.search_bar.bind("<Return>", lambda _: self.btn_search.invoke())
        self.btn_search = Button(self.fr_seachbar, text = "search", 
                                 command = self.search_treev) 
        self.btn_search.grid(row = 0, column = 1, padx = 5)
        self.btn_refresh = Button(self.fr_seachbar, text = "Refresh", 
                                  command = self.refresh_treev)
        self.btn_refresh.grid(row = 0, column = 2)
        
        # Frame list
        self.users_treev = ttk.Treeview(self.fr_treev, selectmode = 'browse',
                                        height = 15)
        self.users_treev.grid(row = 0, column = 0)
        self.users_treev['columns'] = ("1", "2") 
        self.users_treev["show"] = "headings"
        self.users_treev.column("1", width = 140, anchor ='c')
        self.users_treev.column("2", width = 140, anchor ='c')

        self.users_treev.heading("1", text ="Name",
                                 command = lambda: \
                                 self.treev_cl_sort("1", False))
        self.users_treev.heading("2", text ="Username",
                                 command = lambda: \
                                 self.treev_cl_sort("2", False))

        self.scrollbar = ttk.Scrollbar(self.fr_treev,
                                       command = self.users_treev.yview, 
                                       orient = tk.VERTICAL)
        self.scrollbar.grid(row = 0, column = 1)
        self.users_treev.configure(xscrollcommand = self.scrollbar.set)
        
        # Frame edit
        self.btn_add_user = Button(self.fr_edit, text = "Add user",
                                   command = self.add_user)
        self.btn_add_user.grid(row = 0, column = 0)
        self.btn_edit_user = Button(self.fr_edit, text = "Edit user",
                                    command = self.edit_user)
        self.btn_edit_user.grid(row = 1, column = 0, pady = 10, padx = 10)
        self.btn_delete_user = Button(self.fr_edit, text = "Delete user",
                                      command = self.del_user)
        self.btn_delete_user.grid(row = 2, column = 0)
        
        for user in self.list_employees:
            self.users_treev.insert("", "end", values = user)
        self.users_treev.bind("<Double-1>", self.onDoubleClick)
Exemple #4
0
class AdminView(Tk):
    def __init__(self,
                 username,
                 lst_manager,
                 lst_branch,
                 callback1=None,
                 callback2=None,
                 callback3=None,
                 callback4=None,
                 callback5=None,
                 callback6=None,
                 callback7=None,
                 callback8=None,
                 callback9=None,
                 callback10=None,
                 callback11=None):
        super().__init__()
        self.username = username
        self.lst_manager = lst_manager
        self.lst_branch = lst_branch

        # callbacks:
        self.callback1 = callback1  # change_admin_info()
        self.callback2 = callback2  # new_branch()
        self.callback3 = callback3  # del_branch()
        self.callback4 = callback4  # change_branch()
        self.callback5 = callback5  # all_employees()
        self.callback6 = callback6  # all_customers()
        self.callback7 = callback7  # all_managers()
        self.callback8 = callback8  # new_manager()
        self.callback9 = callback9  # set_manager()
        self.callback10 = callback10  # change_manager()
        self.callback11 = callback11  # del_manager()

        self.title = f"Panel Admin: {self.username}"
        self.tabs = ttk.Notebook(self)
        self.tabs.grid(row=0, column=0)

        # Defining tabs
        self.tab_main = Frame(self)
        self.tab_main.grid(row=0, column=0)
        self.tab_managers = Frame(self)
        self.tab_managers.grid(row=0, column=0)
        self.tab_employees = Frame(self)
        self.tab_employees.grid(row=0, column=0)
        self.tab_customers = Frame(self)
        self.tab_customers.grid(row=0, column=0)
        self.tab_branches = Frame(self)
        self.tab_branches.grid(row=0, column=0)
        self.tabs.add(self.tab_main, text="Main")

        # Defining "tab Main" frames
        self.fr_side = Frame(self.tab_main)
        self.fr_side.grid(row=0, column=0)
        self.fr_details = Frame(self.tab_main)
        self.fr_details.grid(row=0, column=1)

        # Frame side
        self.lbl_manager = tk.Label(self.fr_side, text="Managers:")
        self.lbl_manager.grid(row=18, column=1, padx=10, pady=10)
        self.lbl_mng_num = tk.Button(self.fr_side,
                                     text="not set yet",
                                     command=self.open_managers)
        self.lbl_mng_num.grid(row=18, column=2, padx=10, pady=10)

        self.lbl_employees = tk.Label(self.fr_side, text="Employees:")
        self.lbl_employees.grid(row=16, column=1, padx=10, pady=10)
        self.lbl_emp_num = tk.Button(self.fr_side,
                                     text="not set yet",
                                     command=self.open_employees)
        self.lbl_emp_num.grid(row=16, column=2, padx=10, pady=10)

        self.lbl_customers = tk.Label(self.fr_side, text="Customers:")
        self.lbl_customers.grid(row=14, column=1, padx=10, pady=10)
        self.lbl_ct_num = tk.Button(self.fr_side,
                                    text="not set yet",
                                    command=self.open_customers)
        self.lbl_ct_num.grid(row=14, column=2, padx=10, pady=10)

        self.lbl_branches = tk.Label(self.fr_side, text="Branches: ")
        self.lbl_branches.grid(row=20, column=1, padx=10, pady=10)
        self.lbl_br_num = tk.Button(self.fr_side,
                                    text="not set yet",
                                    command=self.open_branches)
        self.lbl_br_num.grid(row=20, column=2, padx=10, pady=10)

        self.lbl_mng_num.bind("<Double-1>", self.open_managers)
        self.lbl_emp_num.bind("<Double-1>", self.open_employees)
        self.lbl_ct_num.bind("<Double-1>", self.open_customers)
        self.lbl_br_num.bind("<Double-1>", self.open_branches)

        # Frame details:
        self.lf_now = tk.LabelFrame(self.fr_details, text="This month")
        self.lf_now.grid(row=0, column=0, padx=10, pady=10)
        self.lf_past = tk.LabelFrame(self.fr_details, text="Last month")
        self.lf_past.grid(row=1, column=0, padx=10, pady=10)

        self.lbl_tf = tk.Label(self.lf_now, text="Transfer income")
        self.lbl_tf.grid(row=0, column=0, padx=10, pady=10)
        self.amount_tf = tk.Label(self.lf_now, text="not set yet")
        self.amount_tf.grid(row=1, column=0, padx=10, pady=10)

        self.lbl_acc_prof = tk.Label(self.lf_now, text="Accounts")
        self.lbl_acc_prof.grid(row=0, column=1, padx=10, pady=10)
        self.amount_acc_prof = tk.Label(self.lf_now, text="not set yet")
        self.amount_acc_prof.grid(row=1, column=1, padx=10, pady=10)

        self.lbl_salaries = tk.Label(self.lf_now, text="Salaries")
        self.lbl_salaries.grid(row=0, column=2, padx=10, pady=10)
        self.amount_salaries = tk.Label(self.lf_now, text="not set yet")
        self.amount_salaries.grid(row=1, column=2, padx=10, pady=10)

        self.lbl_income = tk.Label(self.lf_now, text="Gross profit")
        self.lbl_income.grid(row=0, column=3, padx=10, pady=10)
        self.amount_income = tk.Label(self.lf_now, text="not set yet")
        self.amount_income.grid(row=1, column=3, padx=10, pady=10)

        self.lbl_netp = tk.Label(self.lf_now, text="Net profit")
        self.lbl_netp.grid(row=0, column=4, padx=10, pady=10)
        self.amount_netp = tk.Label(self.lf_now, text="not set yet")
        self.amount_netp.grid(row=1, column=4, padx=10, pady=10)

        ####

        self.lbl_tf_last = tk.Label(self.lf_past, text="Transfer income")
        self.lbl_tf_last.grid(row=0, column=0, padx=10, pady=10)
        self.amount_tf_last = tk.Label(self.lf_past, text="not set yet")
        self.amount_tf_last.grid(row=1, column=0, padx=10, pady=10)

        self.lbl_acc_prof_last = tk.Label(self.lf_past, text="Accounts")
        self.lbl_acc_prof_last.grid(row=0, column=1, padx=10, pady=10)
        self.amount_acc_prof_last = tk.Label(self.lf_past, text="not set yet")
        self.amount_acc_prof_last.grid(row=1, column=1, padx=10, pady=10)

        self.lbl_salaries_last = tk.Label(self.lf_past, text="Salaries")
        self.lbl_salaries_last.grid(row=0, column=2, padx=10, pady=10)
        self.amount_salaries_last = tk.Label(self.lf_past, text="not set yet")
        self.amount_salaries_last.grid(row=1, column=2, padx=10, pady=10)

        self.lbl_income_last = tk.Label(self.lf_past, text="Gross profit")
        self.lbl_income_last.grid(row=0, column=3, padx=10, pady=10)
        self.amount_income_last = tk.Label(self.lf_past, text="not set yet")
        self.amount_income_last.grid(row=1, column=3, padx=10, pady=10)

        self.lbl_netp_last = tk.Label(self.lf_past, text="Net profit")
        self.lbl_netp_last.grid(row=0, column=4, padx=10, pady=10)
        self.amount_netp_last = tk.Label(self.lf_past, text="not set yet")
        self.amount_netp_last.grid(row=1, column=4, padx=10, pady=10)

        self.fr_aboutme = tk.LabelFrame(self.tab_main,
                                        text="About me",
                                        bg="gray")
        self.fr_aboutme.grid(row=11, column=0, rowspan=2, padx=10)

        self.lbl_name = tk.Label(self.fr_aboutme, text=self.username)
        self.lbl_name.grid(row=12, column=1, sticky="w", padx=10, pady=5)
        self.lbl_username = tk.Label(self.fr_aboutme, text="Username:"******"w", padx=10, pady=5)
        self.lbl_username = tk.Label(self.fr_aboutme, text=self.username)
        self.lbl_username.grid(row=12, column=1, sticky="w", padx=10, pady=5)
        self.btn_edit_me = Button(self.fr_aboutme,
                                  text="Edit",
                                  command=self.change_my_info,
                                  relief=tk.GROOVE)
        self.btn_edit_me.grid(row=2, column=0, columnspan=2, pady=5)

        ###
        #self.btn_showall = Button(self.fr_showall, text = "show all",command = self.showall)
        #self.btn_showall.grid(row = 2, column = 0)

    def open_managers(self):
        a = self.tabs.add(self.tab_managers, text="Managers")

        if a != []:
            return None

        panel = EditManager(self.tab_open_managers, self.callback10,
                            self.close_tab, self.msg_err)
        self.tabs.add(self.tab_open_managers, text="Managers")

        print("managers opened")

    def open_employees(self):

        self.tabs.add(self.tab_employees, text="Employees")
        print("employees opened")

    def open_customers(self):
        self.tabs.add(self.tab_customers, text="Customers")
        print("customers opened")

    def open_branches(self, ):
        a = self.tabs.add(self.tab_branches, text="Branches")
        if a != []:
            return None

        panel = EditBranch(self.tab_open_branches, self.callback3,
                           self.close_tab, self.msg_err)
        self.tabs.add(self.tab_branches, text="Branches")
        print("branches opened")

    def change_my_info(self):
        b = self.tab_change_my_info.winfo_b()
        if b != []:
            return None
        panel = Change_my_info(self.username, self.tab_change_my_info,
                               self.callback1, self.close_tab, self.msg_err)
        self.tabs.add(self.tab_change_my_info, text="Edit-me menu")

    def run(self):
        self.mainloop()

    def close(self):
        self.destroy()

    def msg_err(self, title=None, msg=None, master=None):
        if master is None:
            master = self
        tk.messagebox.showerror(title, msg, parent=master)
Exemple #5
0
    def __init__(self,
                 username,
                 lst_manager,
                 lst_branch,
                 callback1=None,
                 callback2=None,
                 callback3=None,
                 callback4=None,
                 callback5=None,
                 callback6=None,
                 callback7=None,
                 callback8=None,
                 callback9=None,
                 callback10=None,
                 callback11=None):
        super().__init__()
        self.username = username
        self.lst_manager = lst_manager
        self.lst_branch = lst_branch

        # callbacks:
        self.callback1 = callback1  # change_admin_info()
        self.callback2 = callback2  # new_branch()
        self.callback3 = callback3  # del_branch()
        self.callback4 = callback4  # change_branch()
        self.callback5 = callback5  # all_employees()
        self.callback6 = callback6  # all_customers()
        self.callback7 = callback7  # all_managers()
        self.callback8 = callback8  # new_manager()
        self.callback9 = callback9  # set_manager()
        self.callback10 = callback10  # change_manager()
        self.callback11 = callback11  # del_manager()

        self.title = f"Panel Admin: {self.username}"
        self.tabs = ttk.Notebook(self)
        self.tabs.grid(row=0, column=0)

        # Defining tabs
        self.tab_main = Frame(self)
        self.tab_main.grid(row=0, column=0)
        self.tab_managers = Frame(self)
        self.tab_managers.grid(row=0, column=0)
        self.tab_employees = Frame(self)
        self.tab_employees.grid(row=0, column=0)
        self.tab_customers = Frame(self)
        self.tab_customers.grid(row=0, column=0)
        self.tab_branches = Frame(self)
        self.tab_branches.grid(row=0, column=0)
        self.tabs.add(self.tab_main, text="Main")

        # Defining "tab Main" frames
        self.fr_side = Frame(self.tab_main)
        self.fr_side.grid(row=0, column=0)
        self.fr_details = Frame(self.tab_main)
        self.fr_details.grid(row=0, column=1)

        # Frame side
        self.lbl_manager = tk.Label(self.fr_side, text="Managers:")
        self.lbl_manager.grid(row=18, column=1, padx=10, pady=10)
        self.lbl_mng_num = tk.Button(self.fr_side,
                                     text="not set yet",
                                     command=self.open_managers)
        self.lbl_mng_num.grid(row=18, column=2, padx=10, pady=10)

        self.lbl_employees = tk.Label(self.fr_side, text="Employees:")
        self.lbl_employees.grid(row=16, column=1, padx=10, pady=10)
        self.lbl_emp_num = tk.Button(self.fr_side,
                                     text="not set yet",
                                     command=self.open_employees)
        self.lbl_emp_num.grid(row=16, column=2, padx=10, pady=10)

        self.lbl_customers = tk.Label(self.fr_side, text="Customers:")
        self.lbl_customers.grid(row=14, column=1, padx=10, pady=10)
        self.lbl_ct_num = tk.Button(self.fr_side,
                                    text="not set yet",
                                    command=self.open_customers)
        self.lbl_ct_num.grid(row=14, column=2, padx=10, pady=10)

        self.lbl_branches = tk.Label(self.fr_side, text="Branches: ")
        self.lbl_branches.grid(row=20, column=1, padx=10, pady=10)
        self.lbl_br_num = tk.Button(self.fr_side,
                                    text="not set yet",
                                    command=self.open_branches)
        self.lbl_br_num.grid(row=20, column=2, padx=10, pady=10)

        self.lbl_mng_num.bind("<Double-1>", self.open_managers)
        self.lbl_emp_num.bind("<Double-1>", self.open_employees)
        self.lbl_ct_num.bind("<Double-1>", self.open_customers)
        self.lbl_br_num.bind("<Double-1>", self.open_branches)

        # Frame details:
        self.lf_now = tk.LabelFrame(self.fr_details, text="This month")
        self.lf_now.grid(row=0, column=0, padx=10, pady=10)
        self.lf_past = tk.LabelFrame(self.fr_details, text="Last month")
        self.lf_past.grid(row=1, column=0, padx=10, pady=10)

        self.lbl_tf = tk.Label(self.lf_now, text="Transfer income")
        self.lbl_tf.grid(row=0, column=0, padx=10, pady=10)
        self.amount_tf = tk.Label(self.lf_now, text="not set yet")
        self.amount_tf.grid(row=1, column=0, padx=10, pady=10)

        self.lbl_acc_prof = tk.Label(self.lf_now, text="Accounts")
        self.lbl_acc_prof.grid(row=0, column=1, padx=10, pady=10)
        self.amount_acc_prof = tk.Label(self.lf_now, text="not set yet")
        self.amount_acc_prof.grid(row=1, column=1, padx=10, pady=10)

        self.lbl_salaries = tk.Label(self.lf_now, text="Salaries")
        self.lbl_salaries.grid(row=0, column=2, padx=10, pady=10)
        self.amount_salaries = tk.Label(self.lf_now, text="not set yet")
        self.amount_salaries.grid(row=1, column=2, padx=10, pady=10)

        self.lbl_income = tk.Label(self.lf_now, text="Gross profit")
        self.lbl_income.grid(row=0, column=3, padx=10, pady=10)
        self.amount_income = tk.Label(self.lf_now, text="not set yet")
        self.amount_income.grid(row=1, column=3, padx=10, pady=10)

        self.lbl_netp = tk.Label(self.lf_now, text="Net profit")
        self.lbl_netp.grid(row=0, column=4, padx=10, pady=10)
        self.amount_netp = tk.Label(self.lf_now, text="not set yet")
        self.amount_netp.grid(row=1, column=4, padx=10, pady=10)

        ####

        self.lbl_tf_last = tk.Label(self.lf_past, text="Transfer income")
        self.lbl_tf_last.grid(row=0, column=0, padx=10, pady=10)
        self.amount_tf_last = tk.Label(self.lf_past, text="not set yet")
        self.amount_tf_last.grid(row=1, column=0, padx=10, pady=10)

        self.lbl_acc_prof_last = tk.Label(self.lf_past, text="Accounts")
        self.lbl_acc_prof_last.grid(row=0, column=1, padx=10, pady=10)
        self.amount_acc_prof_last = tk.Label(self.lf_past, text="not set yet")
        self.amount_acc_prof_last.grid(row=1, column=1, padx=10, pady=10)

        self.lbl_salaries_last = tk.Label(self.lf_past, text="Salaries")
        self.lbl_salaries_last.grid(row=0, column=2, padx=10, pady=10)
        self.amount_salaries_last = tk.Label(self.lf_past, text="not set yet")
        self.amount_salaries_last.grid(row=1, column=2, padx=10, pady=10)

        self.lbl_income_last = tk.Label(self.lf_past, text="Gross profit")
        self.lbl_income_last.grid(row=0, column=3, padx=10, pady=10)
        self.amount_income_last = tk.Label(self.lf_past, text="not set yet")
        self.amount_income_last.grid(row=1, column=3, padx=10, pady=10)

        self.lbl_netp_last = tk.Label(self.lf_past, text="Net profit")
        self.lbl_netp_last.grid(row=0, column=4, padx=10, pady=10)
        self.amount_netp_last = tk.Label(self.lf_past, text="not set yet")
        self.amount_netp_last.grid(row=1, column=4, padx=10, pady=10)

        self.fr_aboutme = tk.LabelFrame(self.tab_main,
                                        text="About me",
                                        bg="gray")
        self.fr_aboutme.grid(row=11, column=0, rowspan=2, padx=10)

        self.lbl_name = tk.Label(self.fr_aboutme, text=self.username)
        self.lbl_name.grid(row=12, column=1, sticky="w", padx=10, pady=5)
        self.lbl_username = tk.Label(self.fr_aboutme, text="Username:"******"w", padx=10, pady=5)
        self.lbl_username = tk.Label(self.fr_aboutme, text=self.username)
        self.lbl_username.grid(row=12, column=1, sticky="w", padx=10, pady=5)
        self.btn_edit_me = Button(self.fr_aboutme,
                                  text="Edit",
                                  command=self.change_my_info,
                                  relief=tk.GROOVE)
        self.btn_edit_me.grid(row=2, column=0, columnspan=2, pady=5)