示例#1
0
    def __build_gui(self):
        self.window = tk.Tk()
        self.window.title("Query Seatfinder")

        self.gui_pane = tk.Frame(self.window)
        self.gui_pane.rowconfigure(0, weight=1)
        self.gui_pane.columnconfigure(0, weight=1)

        self.label = tk.Label(self.window,
                              text="Select a period of time for the query")
        self.label.pack(padx=10, pady=10, side=tk.TOP, anchor=tk.W)
        self.button_send_query = tk.Button(self.gui_pane,
                                           text='OK',
                                           command=self.button_pressed)

        self.__interval_selection()

        self.label_from = tk.Label(self.gui_pane, text="from:")
        self.label_to = tk.Label(self.gui_pane, text="to:")

        self.dateentry_from = tkcalendar.DateEntry(self.gui_pane,
                                                   width=12,
                                                   background='darkblue',
                                                   foreground='white',
                                                   borderwidth=2)
        self.dateentry_to = tkcalendar.DateEntry(self.gui_pane,
                                                 width=12,
                                                 background='darkblue',
                                                 foreground='white',
                                                 borderwidth=2)

        self.timeentry_from = mw.TimeEntry(self.gui_pane)
        self.timeentry_to = mw.TimeEntry(self.gui_pane)

        self.progressbar = ttk.Progressbar(self.window, mode='determinate')
        self.progressbar["maximum"] = 100

        self.__mean_option_selection()

        self.gui_pane.pack(fill=tk.X, expand=0)
        self.progressbar.pack(padx=10,
                              pady=10,
                              side=tk.BOTTOM,
                              fill=tk.X,
                              expand=0)

        self.timeentry_from.set_time(datetime(2012, 1, 1))
        self.timeentry_to.set_time(datetime(2012, 1, 1))

        self.dateentry_from.set_date(self.dateentry_to.get_date() -
                                     dt.timedelta(days=1))

        self.__layout()

        for widget in self.gui_pane.winfo_children():
            self.__change_font_size(widget, 12)
        self.__change_font_size(self.label, 12)

        self.window.mainloop()
示例#2
0
    def edit_dates(self):
        pop_up = Toplevel(background=self.controller.bg)
        page = self.controller.get_page("Em_App")
        settings = page.employee.employee_sett.copy()

        ttk.Label(pop_up, text="Aktualnie").grid(row=0, column=1, pady=5)
        ttk.Label(pop_up, text="Nowe wartości").grid(row=0, column=2, pady=5)
        ttk.Label(pop_up, text="Data zatrudnienia").grid(
            row=1, column=0, pady=5)
        ttk.Label(pop_up, text=settings["hire_date"]).grid(
            row=1, column=1, pady=5)
        if settings["fire_date"] != "":
            ttk.Label(pop_up, text="Data zwolnienia").grid(
                row=2, column=0, pady=5)
            ttk.Label(pop_up, text=settings["fire_date"]).grid(
                row=2, column=1, pady=5)
            fire_cal = tkcalendar.DateEntry(
                pop_up, borderwidth=2, year=datetime.datetime.now().year)
            fire_date = datetime.datetime.strptime(
                settings["fire_date"], "%d/%m/%Y")
            fire_cal.set_date(fire_date)
            fire_cal.grid(row=2, column=2, pady=5)

        hire_date = datetime.datetime.strptime(
            settings["hire_date"], "%d/%m/%Y")
        hire_cal = tkcalendar.DateEntry(
            pop_up, borderwidth=2, year=datetime.datetime.now().year)
        hire_cal.set_date(hire_date)
        hire_cal.grid(row=1, column=2, pady=5)

        def save():
            name = page.employee.name.get()
            if "[Z]" in name:
                name = name.replace("[Z]", "_")
            with open("./Pracownicy/" + name + "/" + "settings.json", "r") as f:
                data = json.load(f)
            data["hire_date"] = hire_cal.get_date().strftime("%d/%m/%Y")
            if settings["fire_date"] != "":
                data["fire_date"] = fire_cal.get_date().strftime("%d/%m/%Y")

            with open("./Pracownicy/" + name + "/" + "settings.json", "w") as f:
                json.dump(data, f, indent=4, ensure_ascii=False)

            page.employee.read_data()
            page.controller.set_status("Zmieniono daty pracownika: " + name)
            pop_up.destroy()

        save = ttk.Button(pop_up, text="Zapisz", command=save)
        save.grid(row=3, column=0, columnspan=3, sticky=NSEW)

        x = self.controller.winfo_x()
        y = self.controller.winfo_y()
        pop_up.geometry(
            "+%d+%d" % (x + self.controller.winfo_reqwidth()/2 - pop_up.winfo_width()/2, y + 200))
示例#3
0
 def __init__(self, date_from, date_to):
     super().__init__()
     self._date_to = date_to
     self._date_from = date_from
     label = tk.Label(self, text="From")
     label.pack()
     self._cal_from = tkcalendar.DateEntry(self)
     self._cal_from.pack()
     label = tk.Label(self, text="To")
     label.pack()
     self._cal_to = tkcalendar.DateEntry(self)
     self._cal_to.pack()
     b = tk.Button(self, text="Confirm", command=self._confirm)
     b.pack()
    def __createWidget(self):
        if self.innerFrame is not None:
            self.innerFrame.destroy()
        self.innerFrame = tk.Frame(self)
        self.dateSelector = tk.StringVar()
        dateEntry = tkc.DateEntry(self.innerFrame,
                                  textvariable=self.dateSelector,
                                  maxdate=dt.datetime.today())
        dateEntry.grid(row=0, column=0, columnspan=2)
        dateEntry.bind('<<DateEntrySelected>>', self.setDate)

        self.recordFrame = None
        self.setDate()

        self.projectSelector = tk.StringVar()
        self.nameMap = self.hourTracker.getProjectNames()
        self.projectNames = [
            project.name
            for project in sorted(self.nameMap.values(),
                                  key=operator.attrgetter('sortIdx'))
        ]
        if len(self.nameMap) > 0:
            self.projectSelector.set(self.projectNames[self.projectNameIdx])

        tk.OptionMenu(self.innerFrame, self.projectSelector,
                      *tuple(self.projectNames)).grid(row=2, column=0)
        button = tk.Button(self.innerFrame,
                           text='Record',
                           command=self.recordActivity)
        button.grid(row=2, column=1)
        button.bind("<Up>", self.__changeProjectUp)
        button.bind("<Down>", self.__changeProjectDown)

        self.innerFrame.grid(row=0, column=0)
示例#5
0
 def __init__(self, master, *args, **kwargs):
     self.master = master
     self.startlabel = tk.Label(self.master, text='Start Date')
     self.endlabel = tk.Label(self.master, text='End Date')
     self.startdate = tkcalendar.DateEntry(self.master)
     self.enddate = tkcalendar.DateEntry(self.master)
     self.startdate.config(firstweekday='sunday',
                           showweeknumbers='false',
                           weekendbackground='white',
                           weekendforeground='black',
                           date_pattern='mm/dd/yy')
     self.enddate.config(firstweekday='sunday',
                         showweeknumbers='false',
                         weekendbackground='white',
                         weekendforeground='black',
                         date_pattern='mm/dd/yy')
     self.startlabel.grid(row=0, column=3)
     self.endlabel.grid(row=0, column=4)
     self.startdate.grid(row=1, column=3, padx=5)
     self.enddate.grid(row=1, column=4, padx=(5, 10))
示例#6
0
    def onWindowFinalize(self, window: sg.Window) -> None:
        today = date.today()

        # There are no normal calendar in pySimpleGUI, so adding it by tkinter
        self.from_calendar = tkcalendar.DateEntry(window.FindElement('_db_from_frame_').Widget,
                                                  width=10,
                                                  year=today.year,
                                                  month=today.month,
                                                  day=today.day,
                                                  date_pattern='dd/mm/Y',
                                                  borderwidth=2)

        self.till_calendar = tkcalendar.DateEntry(window.FindElement('_db_till_frame_').Widget,
                                                  width=10,
                                                  year=today.year,
                                                  month=today.month,
                                                  day=today.day,
                                                  date_pattern='dd/mm/Y',
                                                  borderwidth=2)
        self.from_calendar.pack()
        self.till_calendar.pack()
        self.initLiChessClient()
示例#7
0
def main():
    root = tk.Tk()
    style = ttk.Style(root)
    style.theme_use('clam')

    test_frame = ttk.Frame(root)
    test_frame.pack(side='top', fill='both', expand=True)

    test_date_entry = tkc.DateEntry(test_frame, locale='en_US')
    test_date_entry.pack(padx=10, pady=10)
    test_date_entry._top_cal.overrideredirect(False)
    root.after(100, test_date_entry.drop_down)

    root.mainloop()
    def __init__(self, window, db):
        self.window = window
        self.hour_list = []
        self.date_list = []
        self.weekHeader = []
        self.hour_list_display = []
        self.db = db

        self.initial_date = datetime.strftime(datetime.now(), '%Y-%m-%d')
        # get_emp_list is from clockOn module. Gets all employees and appends it to employee_list
        self.employee_list = []
        self.get_emp_list()

        self.window.columnconfigure(0, weight=1)
        self.window.rowconfigure(0, weight=1)
        self.window.rowconfigure(1, weight=5)

        self.top_frame = tkinter.Frame(self.window)
        self.top_frame.grid(row=0, column=0, sticky='nsew')
        self.top_frame.config(borderwidth=1, relief='solid')
        # Configure column/row for top_frame
        self.top_frame.columnconfigure(0, weight=1)
        self.top_frame.columnconfigure(1, weight=3)
        self.top_frame.columnconfigure(2, weight=1)
        self.top_frame.rowconfigure(0, weight=1)

        self.display_frame = tkinter.Frame(self.window)
        self.display_frame.grid(row=1, column=0, sticky='nsew')
        # Configure column/row for display_frame
        self.display_frame.columnconfigure(0, weight=2)
        self.display_frame.columnconfigure(1, weight=2)
        self.display_frame.columnconfigure(2, weight=2)
        self.display_frame.columnconfigure(3, weight=2)
        self.display_frame.columnconfigure(4, weight=2)
        self.display_frame.columnconfigure(5, weight=2)
        self.display_frame.columnconfigure(6, weight=2)
        self.display_frame.columnconfigure(7, weight=2)
        self.display_frame.columnconfigure(8, weight=2)
        self.display_frame.rowconfigure(0, weight=1)

        self.datepicker = tkinter.Entry(self.top_frame)
        self.datepicker.grid(row=0, column=1, sticky='w')
        self.calender = tkcalendar.DateEntry(self.datepicker,
                                             locale='en_AU',
                                             date_pattern='y-mm-dd')
        self.calender.grid(row=0, column=1)
        self.calender.bind('<<DateEntrySelected>>', self.date_select)
        self.generate_headers(self.display_frame)
        self.generate_hours(self.display_frame)
示例#9
0
 def __init__(self, parent, controller):
     HomeFrame.__init__(self, parent, controller)
     self.button_home.config(command=self.go_home)
     self.controller = controller
     # Back button
     self.button_back = tk.Button(self,
                                  text='<--Back',
                                  command=self.go_back)
     self.button_back.grid(row=2, column=1, sticky='w')
     # Number of games label
     self.label_num_games = tk.Label(self, text='Games / Player')
     self.label_num_games.grid(row=3, column=2, sticky='e')
     # Number of games spinbox
     self.spinbox_num_games = tk.Spinbox(self, from_=0, to_=1000, width=5)
     self.spinbox_num_games.grid(row=3,
                                 column=3,
                                 sticky='w',
                                 pady=5,
                                 padx=5)
     # Season start date label
     self.label_start_date = tk.Label(self, text='Start Date')
     self.label_start_date.grid(row=4, column=2, sticky='e')
     # Season start date entry
     self.date_entry_start_date = tkcalendar.DateEntry(
         self,
         firstweekday='sunday',
         showweeknumbers=False,
         date_pattern='y-mm-dd')
     self.date_entry_start_date.grid(row=4,
                                     column=3,
                                     sticky='w',
                                     pady=5,
                                     padx=5)
     # Players label
     self.label_players = tk.Label(self, text='Players')
     self.label_players.grid(row=5, column=2, sticky='e')
     # Players listbox
     self.listbox_players = tk.Listbox(self,
                                       selectmode='multiple',
                                       width=30)
     self.listbox_players.grid(row=5, column=3, sticky='w', pady=5, padx=5)
     self.controller.get_db().register_insert_callback(
         Table.PLAYER, self.update_player_listbox)
     # Submit button
     self.button_submit = tk.Button(self,
                                    text='Submit',
                                    command=self.submit_new_season)
     self.button_submit.grid(row=6, column=3, sticky='w', padx=5, pady=5)
示例#10
0
    def __init__(self, window, db):

        self.db = db
        self.employee_list = []
        self.window = window
        self.get_emp_list()
        today = datetime.strptime(get_current_date(), '%Y-%m-%d')
        self.selected_date = datetime.strftime(datetime.now(), '%Y-%m-%d')
        # USER SELECTBOX
        emp_options = tkinter.ttk.Combobox(window,
                                           values=self.employee_list,
                                           state='readonly')
        emp_options.current(0)
        emp_options.grid(row=1, column=1, columnspan=2, sticky='nw')
        emp_options.bind('<<ComboboxSelected>>', self.employee_select)

        self.selected_employee = emp_options.get()

        # DATE SELECT
        datepicker = tkinter.Entry(window)
        datepicker.grid(row=2, column=1, sticky='nw')
        calender = tkcalendar.DateEntry(datepicker,
                                        locale='en_AU',
                                        date_pattern='y-mm-dd',
                                        maxdate=today)
        calender.grid(row=0, column=1)
        calender.bind('<<DateEntrySelected>>', self.date_select)

        # CLOCK ON / OFF LABEL
        clock_on_label = tkinter.Label(window, text='Clock On ')
        clock_on_label.grid(row=3, column=1, sticky='nw')

        clock_off_label = tkinter.Label(window, text='Clock Off ')
        clock_off_label.grid(row=4, column=1, sticky='nw')

        # CLOCK ON / OFF TIME DISPLAY
        self.clock_on_time = tkinter.Button(window,
                                            text='None',
                                            command=self.set_clock_on)
        self.clock_on_time.grid(row=3, column=2, sticky='nw')

        self.clock_off_time = tkinter.Button(window,
                                             text='None',
                                             command=self.set_clock_off)
        self.clock_off_time.grid(row=4, column=2, sticky='nw')

        self.update_time()
    def __init__(self,
                 parent_frame,
                 date_value=None,
                 time_type=None,
                 employee=None,
                 time_value=None,
                 user_input=None):
        super().__init__(parent_frame)

        # CHOSEN PASSWORD TO ACCESS ALTER CONTROLS
        # since this app is only using a local database, the password is only saved on script.
        self._password = '******'

        # INITIALIZE VARIABLES
        self.parent_frame = parent_frame
        self.time_type = time_type
        self.employee = employee
        self.user_input = user_input

        # INITIALIZE EMPLOYEE COMBOBOX
        self.emp_combobox = ttk.Combobox(self.parent_frame, state='readonly')
        self.emp_combobox.grid()

        # INITIALIZE DATE SELECT
        self.calendar = tkcalendar.DateEntry(self.parent_frame,
                                             date_pattern='y-mm-dd',
                                             state='readonly')
        self.calendar.grid(sticky='ew')
        self.date_value = self.calendar.get()

        # INITIALIZE BUTTON FOR CREATING NEW EMPLOYEE
        self.create_emp_button = tk.Button(self.parent_frame,
                                           text='CREATE EMPLOYEE')
        self.create_emp_button.grid(sticky='ew')

        # INITIALIZE BUTTONS THAT DISPLAY CLOCK ON AND OFF TIMES
        self.on_button = tk.Button(self.parent_frame, text='CLOCK ON TIME')
        self.off_button = tk.Button(self.parent_frame, text='CLOCK OFF TIME')
        self.on_button.grid(sticky='ew')
        self.off_button.grid(sticky='ew')
 def create(self, parent):
     self.dateEntry = tkc.DateEntry(parent,
                                    textvariable=self.dateSelector,
                                    maxdate=self.time)
     self.dateEntry.grid(row=0, column=0, columnspan=2)
     hr = tk.Spinbox(parent,
                     from_=-1,
                     to=24,
                     textvariable=self.hrSelector,
                     width=5)
     hr.grid(row=1, column=0)
     min_ = tk.Spinbox(parent,
                       from_=-1,
                       to=60,
                       textvariable=self.minSelector,
                       width=5,
                       command=self.rotateMin)
     min_.grid(row=1, column=1)
     if len(self.projects) > 0:
         self.projectSelector.set(self.projectNames[self.projectNameIdx])
     tk.OptionMenu(parent, self.projectSelector, *tuple(self.projectNames))\
         .grid(row=2, column=0, columnspan=2)
示例#13
0
    def layout(self):
        tk.Grid.rowconfigure(self, 1, weight=1)
        for c in range(6):
            tk.Grid.columnconfigure(self, c, weight=1)

        # Create drop-down to select term
        self.term_str.trace('w', self.update_course_menu)
        self.term_menu = tk.OptionMenu(self, self.term_str, None)
        self.term_menu.grid(column=0, row=0, columnspan=2)

        # Create drop-down to select course
        self.course_id.trace_add('write', self.update_student_list)
        # self.course_str.trace('w', self.update_student_list)
        self.course_menu = tk.OptionMenu(self, self.course_str, None)
        self.course_menu.grid(column=2, row=0, columnspan=2)

        # Create date-picker
        self.date_picker = tkc.DateEntry(self)
        self.date_picker.grid(column=5, row=0)
        self.date = self.date_picker.get_date()
        self.date_picker.bind('<<DateEntrySelected>>', self.update_date)

        # Create tree view to show students enrolled
        self.tree_view = ttk.Treeview(self,
                                      columns=['students', 'present'],
                                      show='headings')
        self.tree_view.heading(0, text='Students')
        self.tree_view.heading(1, text='Present')
        self.tree_view.grid(column=0, row=1, columnspan=6, sticky=tk.NSEW)

        not_present_button = tk.Button(self,
                                       text='Not Present',
                                       command=self.mark_not_present)
        not_present_button.grid(row=2, column=0, columnspan=3, sticky=tk.NSEW)
        present_button = tk.Button(self,
                                   text='Present',
                                   command=self.mark_present)
        present_button.grid(row=2, column=3, columnspan=3, sticky=tk.NSEW)
示例#14
0
                         width=50,
                         height=3)
search_border.place(relx=0.519, rely=0.6)

search_option = tk.StringVar()
search_option.set(companies[0])

search_menu = tk.OptionMenu(root, search_option, *companies)
search_menu.config(relief="groove")
search_menu.place(relx=0.535, rely=0.613)

search_cal = tkcalendar.DateEntry(
    root,
    selectmode="day",
    year=2005,
    month=1,
    day=3,
    locale='en_US',
    date_pattern='MM/dd/yyyy',
    mindate=tkcalendar.calendar_.calendar.datetime.date(2005, 1, 3),
    maxdate=tkcalendar.calendar_.calendar.datetime.date(2020, 11, 27))
search_cal.place(relx=0.632, rely=0.619)

search_button = tk.Button(root, text="Search")
search_button.config(width=10,
                     bg="light steel blue",
                     relief="groove",
                     command=search)
search_button.place(relx=0.75, rely=0.616)
""" --- Companies --- """

company_label = tk.Label(root, text="COMPANIES")
示例#15
0
                                                    sticky="W")

svt = tk.StringVar()
titre = tk.Entry(cadre2,
                 textvariable=svt,
                 width=50,
                 font="Arial",
                 highlightthickness=1)
titre.grid(row=1, column=0, columnspan=4)

tk.Label(cadre2, text="Start Date: ", font="Arial").grid(row=2,
                                                         column=0,
                                                         sticky="W")
dated = cal.DateEntry(cadre2,
                      date_pattern="dd/mm/Y",
                      font="Arial",
                      locale="fr_FR",
                      borderwidth=1)
dated.grid(row=2, column=1)

tk.Label(cadre2, text="End Date: ", font="Arial").grid(row=2,
                                                       column=2,
                                                       sticky="W")
datef = cal.DateEntry(cadre2,
                      date_pattern="dd/mm/Y",
                      font="Arial",
                      locale="fr_FR",
                      borderwidth=1)
datef.grid(row=2, column=3, sticky="E")

tk.Label(cadre2, text="Description: ", font="Arial").grid(row=3,
示例#16
0
    def __init__(self, master):
        self.master = master
        self.master.title("Mantaro SYS")
        self.master.geometry("400x400")
        pestañas = ttk.Notebook(self.master)
        tab1 = ttk.Frame(pestañas)
        tab2 = ttk.Frame(pestañas)
        pestañas.add(tab1, text="Recepcion Productos")
        pestañas.add(tab2, text="Detalle de Recepcion")
        pestañas.pack(expan=1, fill="both")
        #====================================
        self.frame1 = ttk.Labelframe(tab1,
                                     text="Registro de Documentos",
                                     width=50)
        self.frame1.grid(row=1, column=1, padx=5, pady=5, sticky=tk.W)
        tk.Label(self.frame1, text="Nro Documento").grid(row=0,
                                                         column=0,
                                                         padx=5,
                                                         pady=5,
                                                         sticky=tk.E)
        self.Id_Recepcion = ttk.Entry(self.frame1)
        self.Id_Recepcion.grid(row=0, column=1, padx=5, pady=5, sticky=tk.W)
        tk.Label(self.frame1, text="Id Usuario").grid(row=1,
                                                      column=0,
                                                      padx=5,
                                                      pady=5,
                                                      sticky=tk.E)
        self.cmb_usuario = ttk.Combobox(self.frame1, width=25)
        self.cmb_usuario.grid(row=1, column=1, padx=5, pady=5, sticky=tk.W)
        tk.Label(self.frame1, text="Proveedor").grid(row=2,
                                                     column=0,
                                                     padx=5,
                                                     pady=5,
                                                     sticky=tk.E)
        self.cmb_prov = ttk.Combobox(self.frame1, width=25)
        self.cmb_prov.grid(row=2, column=1, padx=5, pady=5, sticky=tk.W)
        tk.Label(self.frame1, text="Tipo Documentos").grid(row=3,
                                                           column=0,
                                                           padx=5,
                                                           pady=5,
                                                           sticky=tk.E)
        self.cmb_tipo_doc = ttk.Combobox(self.frame1, width=15)
        self.cmb_tipo_doc['values'] = ("Factura", "Boleta")
        self.cmb_tipo_doc.grid(row=3, column=1, padx=5, pady=5, sticky=tk.W)
        tk.Label(self.frame1, text="Elegir Fecha").grid(row=4,
                                                        column=0,
                                                        padx=5,
                                                        pady=5,
                                                        sticky=tk.E)
        self.fechaR = tkcalendar.DateEntry(self.frame1)
        self.fechaR.grid(row=4, column=1, padx=5, pady=5, sticky=tk.W)
        tk.Label(self.frame1, text="SubTotal").grid(row=5,
                                                    column=0,
                                                    padx=5,
                                                    pady=5,
                                                    sticky=tk.E)
        self.subtotal = ttk.Entry(self.frame1)
        self.subtotal.grid(row=5, column=1, padx=5, pady=5, sticky=tk.W)
        tk.Label(self.frame1, text="IGV").grid(row=6,
                                               column=0,
                                               padx=5,
                                               pady=5,
                                               sticky=tk.E)
        self.igv = ttk.Entry(self.frame1)
        self.igv.grid(row=6, column=1, padx=5, pady=5, sticky=tk.W)
        tk.Label(self.frame1, text="Total").grid(row=7,
                                                 column=0,
                                                 padx=5,
                                                 pady=5,
                                                 sticky=tk.E)
        self.total = ttk.Entry(self.frame1)
        self.total.grid(row=7, column=1, padx=5, pady=5, sticky=tk.W)
        ttk.Button(self.frame1, text="Agregar",
                   command=self._AddDocs).grid(row=8,
                                               column=1,
                                               padx=5,
                                               pady=5,
                                               sticky=tk.W + tk.E)
        #=================================================

        self.frame2 = ttk.Labelframe(tab1, text="Ver Datos", width=200)
        self.frame2.grid(row=2, column=1, padx=5, pady=5, sticky=tk.W)
        self.tabla1 = ttk.Treeview(self.frame2,
                                   height=10,
                                   column=('#1', '#2', '#3', '#4', '#5', '#6',
                                           '#7', '#8'))
        self.tabla1.grid(row=1, column=1, columnspan=2)
        self.tabla1.column('#1', width=100, minwidth=90)
        self.tabla1.column('#2', width=100, minwidth=90)
        self.tabla1.column('#3', width=100, minwidth=90)
        self.tabla1.column('#4', width=100, minwidth=90)
        self.tabla1.column('#5', width=100, minwidth=90)
        self.tabla1.column('#6', width=100, minwidth=90)
        self.tabla1.column('#7', width=100, minwidth=90)
        self.tabla1.column('#8', width=100, minwidth=90)
        self.tabla1['show'] = 'headings'
        self.tabla1.heading('#1', text="Id Doc", anchor=tk.W)
        self.tabla1.heading('#2', text="Usuario", anchor=tk.W)
        self.tabla1.heading('#3', text="Proveedor", anchor=tk.W)
        self.tabla1.heading('#4', text="Tipo Doc", anchor=tk.W)
        self.tabla1.heading('#5', text="Fecha", anchor=tk.W)
        self.tabla1.heading('#6', text="Subtotal", anchor=tk.W)
        self.tabla1.heading('#7', text="IGV", anchor=tk.W)
        self.tabla1.heading('#8', text="Total", anchor=tk.W)
        ttk.Button(self.frame2, text="Editar",
                   command=self._EditDocs).grid(row=2,
                                                column=1,
                                                padx=3,
                                                pady=3,
                                                sticky=tk.W + tk.E)
        ttk.Button(self.frame2, text="Eliminar",
                   command=self._DeleteDocs).grid(row=2,
                                                  column=2,
                                                  padx=3,
                                                  pady=3,
                                                  sticky=tk.W + tk.E)
        #======================================================
        self.frame3 = ttk.Labelframe(tab2, text="Productos", width=80)
        self.frame3.grid(row=2, column=1, padx=3, pady=3, sticky=tk.NW)
        tk.Label(self.frame3, text="Codigo Ingreso").grid(row=0,
                                                          column=0,
                                                          padx=3,
                                                          pady=3,
                                                          sticky=tk.E)
        self.varCodigo = StringVar()
        self.CodVenta = ttk.Entry(self.frame3,
                                  textvariable=self.varCodigo,
                                  width=15,
                                  state='disabled')
        self.CodVenta.grid(row=0, column=1, padx=3, pady=3, sticky=tk.W)
        tk.Label(self.frame3, text="Codigo Recibo").grid(row=1,
                                                         column=0,
                                                         padx=3,
                                                         pady=3,
                                                         sticky=tk.E)
        self.cmb_nroRecibo = ttk.Combobox(self.frame3, width=25)
        self.cmb_nroRecibo.grid(row=1, column=1)  #falta cargar values
        tk.Label(self.frame3, text="Codigo Producto").grid(row=2,
                                                           column=0,
                                                           padx=3,
                                                           pady=3,
                                                           sticky=tk.E)
        self.codProducto = ttk.Combobox(self.frame3, width=25)
        self.codProducto.grid(row=2, column=1)
        tk.Label(self.frame3, text="Nombre Producto").grid(row=3,
                                                           column=0,
                                                           padx=3,
                                                           pady=3,
                                                           sticky=tk.E)
        self.nombProducto = ttk.Entry(self.frame3)
        self.nombProducto.grid(row=3, column=1)
        tk.Label(self.frame3, text="Cantidad").grid(row=4,
                                                    column=0,
                                                    padx=3,
                                                    pady=3,
                                                    sticky=tk.E)
        self.spin_variable = DoubleVar()
        self.spin = ttk.Spinbox(self.frame3,
                                from_=0,
                                to=20,
                                width=5,
                                textvariable=self.spin_variable)
        self.spin.grid(row=4, column=1)
        tk.Label(self.frame3, text="Precio").grid(row=5,
                                                  column=0,
                                                  padx=3,
                                                  pady=3,
                                                  sticky=tk.E)
        self.precio = DoubleVar()
        self.precioProducto = ttk.Entry(self.frame3, textvariable=self.precio)
        self.precioProducto.grid(row=5, column=1)
        tk.Label(self.frame3, text="Total").grid(row=6,
                                                 column=0,
                                                 padx=3,
                                                 pady=3,
                                                 sticky=tk.E)
        self.total_precio_variable = DoubleVar()
        self.totalPrecio = ttk.Entry(self.frame3,
                                     textvariable=self.total_precio_variable)
        self.totalPrecio.grid(row=6, column=1)
        ttk.Button(self.frame3, text="Generar ID",
                   command=self._codIngreso).grid(row=7,
                                                  column=0,
                                                  padx=3,
                                                  pady=3)
        ttk.Button(self.frame3,
                   text="Calcular",
                   command=lambda: self._calcular(self.spin_variable.get(
                   ), self.precio.get())).grid(row=7, column=1, padx=3, pady=3)
        ttk.Button(self.frame3, text="Agregar",
                   command=self._agregar_tabla).grid(row=7,
                                                     column=2,
                                                     padx=3,
                                                     pady=3)
        #======================================================

        self.frame4 = ttk.Labelframe(tab2, text="Detalles", width=100)
        self.frame4.grid(row=3, column=1, padx=3, pady=3, sticky=tk.NW)
        self.tabla_detalles = ttk.Treeview(self.frame4,
                                           height=10,
                                           column=('#1', '#2', '#3', '#4',
                                                   '#5', '#6', '#7'))
        self.tabla_detalles.grid(row=1, column=0)
        self.tabla_detalles.column("#1", width=100, minwidth=85)
        self.tabla_detalles.column("#2", width=100, minwidth=85)
        self.tabla_detalles.column("#3", width=100, minwidth=85)
        self.tabla_detalles.column("#4", width=100, minwidth=85)
        self.tabla_detalles.column("#5", width=100, minwidth=85)
        self.tabla_detalles.column("#6", width=100, minwidth=85)
        self.tabla_detalles.column("#7", width=100, minwidth=85)
        self.tabla_detalles['show'] = 'headings'
        self.tabla_detalles.heading('#1', text="Codigo Registro", anchor=tk.W)
        self.tabla_detalles.heading('#2', text="Id Producto ", anchor=tk.W)
        self.tabla_detalles.heading('#3', text="Recibo ", anchor=tk.W)
        self.tabla_detalles.heading('#4', text="Nombre ", anchor=tk.W)
        self.tabla_detalles.heading('#5', text="Cantidad ", anchor=tk.W)
        self.tabla_detalles.heading('#6', text="Precio ", anchor=tk.W)
        self.tabla_detalles.heading('#7', text="Total ", anchor=tk.W)

        self.frame6 = tk.LabelFrame(self.frame4)
        self.frame6.grid(row=4, column=0, sticky=tk.E)

        ttk.Button(self.frame6, text="Eliminar",
                   command=self._deleteselection).grid(row=0, column=0)
        ttk.Button(self.frame6, text="Actualizar",
                   command=self._actualizar).grid(row=0, column=1)
        ttk.Button(self.frame6, text="Limpiar",
                   command=self._limpieza).grid(row=0, column=2)
        ttk.Button(self.frame6, text="Informe",
                   command=self._generarInforme).grid(row=0, column=3)

        #===========================================================================================================================================================================
        self._cargarU()
        self._cargarP()
        self._getDocs()
        self._cargarRecibo()
        self._cargarCodProducto()
示例#17
0
    def __init__(self, master):
        self.master = master
        self.master.title("Mantaro SYS")
        self.master.geometry("400x400")
        pestañas = ttk.Notebook(self.master)
        tab1 = ttk.Frame(pestañas)
        tab2 = ttk.Frame(pestañas)
        pestañas.add(tab1, text="Ventas")
        pestañas.add(tab2, text="Registro de Documentos")
        pestañas.pack(expan=1, fill="both")
        #======================================================================================
        self.frame1 = ttk.Labelframe(tab1,
                                     text="Registro de Ventas",
                                     width=100)
        self.frame1.grid(row=1, column=1, padx=3, pady=3, sticky=tk.NW)
        tk.Label(self.frame1, text="Nro Recibo").grid(row=1,
                                                      column=1,
                                                      padx=3,
                                                      pady=3)
        self.NroRecibo = ttk.Entry(self.frame1, width=20)
        self.NroRecibo.grid(row=1, column=2, padx=3, pady=3)
        tk.Label(self.frame1, text="Recibo").grid(row=1,
                                                  column=3,
                                                  padx=3,
                                                  pady=3)
        self.cmbTipoDoc = ttk.Combobox(self.frame1, width=20)
        self.cmbTipoDoc['values'] = ("Factura", "Boleta")
        self.cmbTipoDoc.grid(row=1, column=4, padx=3, pady=3)
        tk.Label(self.frame1, text="Usuario").grid(row=2,
                                                   column=1,
                                                   padx=3,
                                                   pady=3)
        self.cmbIdUsuario = ttk.Combobox(self.frame1, width=25)
        self.cmbIdUsuario.grid(row=2, column=2, padx=3, pady=3)
        tk.Label(self.frame1, text="Cliente").grid(row=2,
                                                   column=3,
                                                   padx=3,
                                                   pady=3)
        self.IdCliente = ttk.Entry(self.frame1)
        self.IdCliente.grid(row=2, column=4, padx=3, pady=3)
        tk.Label(self.frame1, text="Fecha de Venta").grid(row=3,
                                                          column=1,
                                                          padx=3,
                                                          pady=3)
        self.FechaVenta = tkcalendar.DateEntry(self.frame1)
        self.FechaVenta.grid(row=3, column=2, padx=3, pady=3, sticky=tk.W)
        tk.Label(self.frame1, text="Codigo Venta").grid(row=3,
                                                        column=3,
                                                        padx=3,
                                                        pady=3,
                                                        sticky=tk.W)
        self.varCodigo = StringVar()
        self.CodVenta = ttk.Entry(self.frame1,
                                  textvariable=self.varCodigo,
                                  width=15,
                                  state='disabled')
        self.CodVenta.grid(row=3, column=4, padx=3, pady=3, sticky=tk.W)
        ttk.Button(self.frame1,
                   text="Generar Codigo",
                   command=self._generarcod).grid(row=4,
                                                  column=4,
                                                  padx=3,
                                                  pady=3,
                                                  sticky=tk.W)

        self.frame3 = ttk.Labelframe(tab1, text="Productos", width=80)
        self.frame3.grid(row=2, column=1, padx=3, pady=3, sticky=tk.NW)
        tk.Label(self.frame3, text="Codigo Producto").grid(row=0,
                                                           column=0,
                                                           padx=3,
                                                           pady=3,
                                                           sticky=tk.W)
        self.codProducto = ttk.Combobox(self.frame3, width=25)
        self.codProducto.grid(row=0, column=1)
        tk.Label(self.frame3, text="Nombre Producto").grid(row=1,
                                                           column=0,
                                                           padx=3,
                                                           pady=3,
                                                           sticky=tk.W)
        self.nombProducto = ttk.Entry(self.frame3)
        self.nombProducto.grid(row=1, column=1)
        tk.Label(self.frame3, text="Cantidad").grid(row=2,
                                                    column=0,
                                                    padx=3,
                                                    pady=3,
                                                    sticky=tk.W)
        self.spin_variable = DoubleVar()
        self.spin = ttk.Spinbox(self.frame3,
                                from_=0,
                                to=20,
                                width=5,
                                textvariable=self.spin_variable)
        self.spin.grid(row=2, column=1)
        tk.Label(self.frame3, text="Precio").grid(row=3,
                                                  column=0,
                                                  padx=3,
                                                  pady=3,
                                                  sticky=tk.W)
        self.precio = DoubleVar()
        self.precioProducto = ttk.Entry(self.frame3, textvariable=self.precio)
        self.precioProducto.grid(row=3, column=1)
        tk.Label(self.frame3, text="Total").grid(row=4,
                                                 column=0,
                                                 padx=3,
                                                 pady=3,
                                                 sticky=tk.W)
        self.total_precio_variable = DoubleVar()
        self.totalPrecio = ttk.Entry(self.frame3,
                                     textvariable=self.total_precio_variable)
        self.totalPrecio.grid(row=4, column=1)
        ttk.Button(self.frame3,
                   text="Calcular",
                   command=lambda: self._calcular1(self.spin_variable.get(
                   ), self.precio.get())).grid(row=5, column=1, padx=3, pady=3)
        ttk.Button(self.frame3, text="Agregar",
                   command=self._carrito).grid(row=5, column=0, padx=3, pady=3)

        self.frame4 = ttk.Labelframe(tab1, text="Detalles", width=100)
        self.frame4.grid(row=3, column=1, padx=3, pady=3, sticky=tk.NW)
        self.tabla_detalles = ttk.Treeview(self.frame4,
                                           height=8,
                                           column=('#1', '#2', '#3', '#4',
                                                   '#5', '#6', '#7'))
        self.tabla_detalles.grid(row=1, column=0)
        self.tabla_detalles.column("#1", width=100, minwidth=85)
        self.tabla_detalles.column("#2", width=100, minwidth=85)
        self.tabla_detalles.column("#3", width=100, minwidth=85)
        self.tabla_detalles.column("#4", width=100, minwidth=85)
        self.tabla_detalles.column("#5", width=100, minwidth=85)
        self.tabla_detalles.column("#6", width=100, minwidth=85)
        self.tabla_detalles.column("#7", width=100, minwidth=85)
        self.tabla_detalles['show'] = 'headings'
        self.tabla_detalles.heading('#1', text="Id Venta ", anchor=tk.W)
        self.tabla_detalles.heading('#2', text="Id Producto ", anchor=tk.W)
        self.tabla_detalles.heading('#3', text="Recibo ", anchor=tk.W)
        self.tabla_detalles.heading('#4', text="Nombre ", anchor=tk.W)
        self.tabla_detalles.heading('#5', text="Cantidad ", anchor=tk.W)
        self.tabla_detalles.heading('#6', text="Precio ", anchor=tk.W)
        self.tabla_detalles.heading('#7', text="Total ", anchor=tk.W)

        self.frame5 = tk.LabelFrame(self.frame4, width=100)
        self.frame5.grid(row=2, column=0, sticky=tk.E)
        tk.Label(self.frame5, text="Sub Total").grid(row=1,
                                                     column=1,
                                                     sticky=tk.W)
        self.subtotal_variable = StringVar()
        self.SubTotalEntry = ttk.Entry(self.frame5,
                                       width=10,
                                       textvariable=self.subtotal_variable)
        self.SubTotalEntry.grid(row=1, column=2, sticky=tk.W)
        tk.Label(self.frame5, text="IGV").grid(row=2, column=1, sticky=tk.W)
        self.igv_variable = StringVar()
        self.IGVEntry = ttk.Entry(self.frame5,
                                  width=10,
                                  textvariable=self.igv_variable)
        self.IGVEntry.grid(row=2, column=2, sticky=tk.W)
        tk.Label(self.frame5, text="Total").grid(row=3, column=1, sticky=tk.W)
        self.total_variable = DoubleVar()
        self.TotalEntry = ttk.Entry(self.frame5,
                                    width=10,
                                    textvariable=self.total_variable)
        self.TotalEntry.grid(row=3, column=2, sticky=tk.W)

        self.frame6 = tk.LabelFrame(self.frame4)
        self.frame6.grid(row=3, column=0, sticky=tk.E)
        ttk.Button(self.frame6, text="Agregar",
                   command=self._prueba1).grid(row=0, column=0)
        ttk.Button(self.frame6, text="Eliminar",
                   command=self._deleteseletion).grid(row=0, column=1)
        ttk.Button(self.frame6,
                   text="Registrar",
                   command=self._generarDocVenta).grid(row=0, column=3)
        ttk.Button(self.frame6, text="Actualizar",
                   command=self._prueba2).grid(row=0, column=4)
        ttk.Button(self.frame6, text="Limpiar",
                   command=self._limpiar).grid(row=0, column=5)
        ttk.Button(self.frame6, text="Informe",
                   command=self._generarInforme).grid(row=0, column=6)

        #=================================================================================================
        self._cargarU()
        self._cargarCodProducto()
        #=================================================================================================

        self.frame_final = ttk.Labelframe(tab2, text="Recibos", width=200)
        self.frame_final.grid(row=1, column=1, padx=5, pady=5, sticky=tk.W)
        self.tabla_recibos = ttk.Treeview(self.frame_final,
                                          height=20,
                                          column=('#1', '#2', '#3', '#4', '#5',
                                                  '#6', '#7', '#8'))
        self.tabla_recibos.grid(row=1, column=1, padx=3, pady=3)
        self.tabla_recibos.column('#1', width=100, minwidth=90)
        self.tabla_recibos.column('#2', width=100, minwidth=90)
        self.tabla_recibos.column('#3', width=100, minwidth=90)
        self.tabla_recibos.column('#4', width=100, minwidth=90)
        self.tabla_recibos.column('#5', width=100, minwidth=90)
        self.tabla_recibos.column('#6', width=100, minwidth=90)
        self.tabla_recibos.column('#7', width=100, minwidth=90)
        self.tabla_recibos.column('#8', width=100, minwidth=90)
        self.tabla_recibos['show'] = 'headings'
        self.tabla_recibos.heading('#1', text="Nro Recibo", anchor=tk.W)
        self.tabla_recibos.heading('#2', text="Usuario", anchor=tk.W)
        self.tabla_recibos.heading('#3', text="Cliente", anchor=tk.W)
        self.tabla_recibos.heading('#4', text="Tipo Doc", anchor=tk.W)
        self.tabla_recibos.heading('#5', text="Fecha Venta", anchor=tk.W)
        self.tabla_recibos.heading('#6', text="Sub Total", anchor=tk.W)
        self.tabla_recibos.heading('#7', text="Igv", anchor=tk.W)
        self.tabla_recibos.heading('#8', text="Total", anchor=tk.W)
        ttk.Button(self.frame_final,
                   text="Eliminar",
                   command=self._DeleteRecibo).grid(row=2,
                                                    column=1,
                                                    padx=3,
                                                    pady=3,
                                                    sticky=tk.E)
        self._GetReciboVenta()
示例#18
0
    def construct_window(self):
        """Создает интерфейс окна."""
        # *** Наименование события
        window_left, window_top = tls.center_window(
            self, cnst.EVENT_EDITOR_WINDOW_WIDTH,
            cnst.EVENT_EDITOR_WINDOW_HEIGHT)
        window_geometry = f"{cnst.EVENT_EDITOR_WINDOW_WIDTH}x{cnst.EVENT_EDITOR_WINDOW_HEIGHT}+{window_left}+{window_top}"
        self.geometry(window_geometry)
        self.update_idletasks()

        # *** Наименование события
        self.event_name_frame = tk.Frame(self)
        self.event_name_entry = tk.Entry(self.event_name_frame, width=40)
        self.event_name_entry.pack(side=tk.RIGHT)
        self.event_name_entry.focus()
        self.event_name_label = tk.Label(
            self.event_name_frame, text="Название события",
            width=20)  #  bg='black', fg='white', )
        self.event_name_label.pack(side=tk.LEFT)
        self.event_name_frame.pack(padx=10, pady=10)

        # *** Тип и период события
        self.options_labels_frame = tk.Frame(self)
        self.event_type_label = tk.Label(self.options_labels_frame,
                                         text="Тип события",
                                         width=20)
        self.event_type_label.pack(side=tk.LEFT)
        self.event_period_label = tk.Label(self.options_labels_frame,
                                           text="Периодичность события",
                                           width=20)
        self.event_period_label.pack(side=tk.RIGHT)
        self.options_labels_frame.pack()

        self.options_frame = tk.Frame(self)
        self.event_type_combo = ttk.Combobox(self.options_frame, width=30)
        self.event_type_combo.pack(side=tk.LEFT)
        self.event_period_combo = ttk.Combobox(self.options_frame, width=30)
        self.event_period_combo.pack(side=tk.LEFT)
        self.options_frame.pack(padx=10, pady=10)

        # *** Дата события
        self.event_date_frame = tk.Frame(self)
        self.event_date_label = tk.Label(self.event_date_frame,
                                         text="Дата события",
                                         width=20)
        self.event_date_label.pack(side=tk.LEFT)

        self.event_date_entry = tkcal.DateEntry(self.event_date_frame,
                                                width=12,
                                                locale="ru_RU",
                                                borderwidth=2)
        self.event_date_entry.pack(side=tk.RIGHT)
        self.event_date_frame.pack(padx=10, pady=10)

        # *** Кнопки
        self.buttons_frame = tk.Frame(self)
        self.ok_button = tk.Button(command=self.save_data,
                                   master=self.buttons_frame,
                                   text="Принять")
        self.ok_button.pack(side=tk.LEFT)
        self.cancel_button = tk.Button(command=self.destroy,
                                       master=self.buttons_frame,
                                       text="Отмена")
        self.cancel_button.pack(side=tk.RIGHT)
        self.buttons_frame.pack(padx=10, pady=10)
        self.update_idletasks()
示例#19
0
    def create_widgets(self):

        # ### Frames ##########################################################
        # the left one contains buttons, filters and displays table with numerical data
        # the right one contains map
        self.left_frame = tk.Frame(self.master,
                                   highlightbackground="red",
                                   highlightcolor="red",
                                   borderwidth=2)
        self.right_frame = tk.Frame(self.master)

        self.left_frame.pack(side='left', anchor='n')
        self.right_frame.pack(side='right')

        # ### Buttons #########################################################
        self.button_load = tk.Button(self.left_frame,
                                     text="Load flights",
                                     command=self.load_flights)
        self.button_next = tk.Button(self.left_frame,
                                     text="Next",
                                     command=self.show_next_flight)
        self.button_previous = tk.Button(self.left_frame,
                                         text="Previous",
                                         command=self.show_previous_flight)

        # ### Labels ##########################################################
        label_filters = tk.Label(self.left_frame,
                                 text="Filters",
                                 font=('Helvetica', 14, 'bold'))
        label_calendar = tk.Label(self.left_frame, text="Pick a date")
        label_calendar_note = tk.Label(
            self.left_frame,
            text="Data is available only for July 2018",
            fg='brown')
        label_ades = tk.Label(self.left_frame, text="ADES")
        label_adep = tk.Label(self.left_frame, text="ADEP")
        label_ncp = tk.Label(self.left_frame, text="NCP")
        label_wpt = tk.Label(self.left_frame, text="WPT")
        label_entry_type = tk.Label(self.left_frame, text="Entry type")
        label_exit_type = tk.Label(self.left_frame, text="Exit type")

        # ### Calendar ########################################################
        self.calendar = tkcalendar.DateEntry(self.left_frame,
                                             year=2018,
                                             month=7,
                                             day=1,
                                             width=8)

        # ### Comboboxes ######################################################
        ades_var = tk.StringVar(self.left_frame)
        adep_var = tk.StringVar(self.left_frame)
        ncp_var = tk.StringVar(self.left_frame)
        wpt_var = tk.StringVar(self.left_frame)
        ades_var.set(self.ades_list[0])
        ncp_var.set(self.ncp_list[0])
        wpt_var.set(self.wpt_list[0])

        self.combobox_ades = ttk.Combobox(self.left_frame,
                                          textvariable=ades_var,
                                          values=self.ades_list,
                                          width=8)
        self.combobox_adep = ttk.Combobox(self.left_frame,
                                          textvariable=adep_var,
                                          values=self.adep_list,
                                          width=8)
        self.combobox_ncp = ttk.Combobox(self.left_frame,
                                         textvariable=ncp_var,
                                         values=self.ncp_list,
                                         width=8)
        self.combobox_wpt = ttk.Combobox(self.left_frame,
                                         textvariable=wpt_var,
                                         values=self.wpt_list,
                                         width=8)

        # ### Radiobuttons ####################################################
        self.entry_var = tk.StringVar(self.left_frame)
        self.entry_var.set('Any')
        entry_options = ['Any', 'Lateral', 'Vertical']
        radiobutton_entry_a = tk.Radiobutton(self.left_frame,
                                             text=entry_options[0],
                                             variable=self.entry_var,
                                             value=entry_options[0])
        radiobutton_entry_l = tk.Radiobutton(self.left_frame,
                                             text=entry_options[1],
                                             variable=self.entry_var,
                                             value=entry_options[1])
        radiobutton_entry_v = tk.Radiobutton(self.left_frame,
                                             text=entry_options[2],
                                             variable=self.entry_var,
                                             value=entry_options[2])

        self.exit_var = tk.StringVar(self.left_frame)
        self.exit_var.set('Any')
        exit_options = ['Any', 'Lateral', 'Vertical']
        radiobutton_exit_a = tk.Radiobutton(self.left_frame,
                                            text=exit_options[0],
                                            variable=self.exit_var,
                                            value=exit_options[0])
        radiobutton_exit_l = tk.Radiobutton(self.left_frame,
                                            text=exit_options[1],
                                            variable=self.exit_var,
                                            value=exit_options[1])
        radiobutton_exit_v = tk.Radiobutton(self.left_frame,
                                            text=exit_options[2],
                                            variable=self.exit_var,
                                            value=exit_options[2])

        # ### Add widgets #####################################################
        label_filters.grid(row=1, column=1, sticky='w')

        label_calendar.grid(row=2, column=0)
        self.calendar.grid(row=2, column=1)
        label_calendar_note.grid(row=3, column=0, columnspan=2)

        label_ades.grid(row=4, column=0)
        label_adep.grid(row=5, column=0)
        label_ncp.grid(row=6, column=0)
        label_wpt.grid(row=7, column=0)

        self.button_load.grid(row=8, column=0, sticky='ew')
        self.button_next.grid(row=8, column=1, sticky='ew')
        self.button_previous.grid(row=8, column=2, sticky='ew')

        self.combobox_ades.grid(row=4, column=1)
        self.combobox_adep.grid(row=5, column=1)
        self.combobox_ncp.grid(row=6, column=1)
        self.combobox_wpt.grid(row=7, column=1)

        label_entry_type.grid(row=2, column=2)
        label_exit_type.grid(row=3, column=2)

        radiobutton_entry_a.grid(row=2, column=3)
        radiobutton_entry_l.grid(row=2, column=4)
        radiobutton_entry_v.grid(row=2, column=5)
        radiobutton_exit_a.grid(row=3, column=3)
        radiobutton_exit_l.grid(row=3, column=4)
        radiobutton_exit_v.grid(row=3, column=5)
示例#20
0
def main_function():
    root = tkinter.Tk()
    root.minsize(width=1150, height=660)
    root.title('EXPENDITURE ENTRY')
    root.iconbitmap(
        os.path.join('FILES', 'HOME_ACCOUNTING', 'icons',
                     'home_acc_exp_entry.ico'))
    root.focus_force()

    # creating folder, database file and required tables initially if not existing
    def file_initialisation():

        if not os.path.exists(os.path.join('FILES', 'HOME_ACCOUNTING',
                                           'DATA')):
            os.mkdir(os.path.join('FILES', 'HOME_ACCOUNTING', 'DATA'))

        db_connection = sqlite3.connect(
            os.path.join('FILES', 'HOME_ACCOUNTING', 'DATA',
                         'home_accounting.db'))
        db_cursor = db_connection.cursor()

        # table for storing current entries and clearing if any previous exists
        db_cursor.execute("""CREATE TABLE IF NOT EXISTS entries (
            date TEXT,
            item TEXT,
            category TEXT,
            mode TEXT,
            unit TEXT,
            quantity REAL,
            rate REAL,
            da REAL,
            dr REAL,
            net REAL)""")
        db_connection.commit()
        db_cursor.execute("""DELETE FROM entries""")
        db_connection.commit()

        # tables for storing the defaults
        db_cursor.execute("""CREATE TABLE IF NOT EXISTS item (item TEXT)""")
        db_connection.commit()
        db_cursor.execute(
            """CREATE TABLE IF NOT EXISTS category (category TEXT)""")
        db_connection.commit()
        db_cursor.execute("""CREATE TABLE IF NOT EXISTS mode (mode TEXT)""")
        db_connection.commit()
        db_cursor.execute("""CREATE TABLE IF NOT EXISTS unit (unit TEXT)""")
        db_connection.commit()
        db_cursor.execute(
            """CREATE TABLE IF NOT EXISTS pair (item TEXT, category TEXT)""")
        db_connection.commit()

        db_connection.close()

    # function for setting the auto complete values for the auto complete widgets .. accepts a tuple with widget and name
    def set_auto_completion(field):
        db_connection = sqlite3.connect(
            os.path.join('FILES', 'HOME_ACCOUNTING', 'DATA',
                         'home_accounting.db'))
        db_cursor = db_connection.cursor()

        data = db_cursor.execute("SELECT * FROM " + field[1]).fetchall()

        l = []
        for x in range(len(data)):
            l.append(data[x][0])

        field[0].set_completion_list(l)

    # function for validating the input as only numeric
    def only_numeric(letter):
        if bool(re.match('\d*\.\d*$', letter)):
            return True
        if letter.isdigit():
            return True
        if letter == '':
            return True
        else:
            return False

    # function to facilitate Return for going to next widget
    def next_widget_on_return(event):
        x = event.widget.tk_focusNext()
        x.focus()
        if x != button_add_done:
            x.select_range(0, tkinter.END)
        return "break"

    # validation of date picker entry as date only on focus out
    def date_only(event):
        if not bool(re.match('\d\d\/\d\d\/\d\d\d\d', date_picker.get())):
            messagebox.showerror(
                'INVALID VALUE',
                "Please enter a valid date in the format dd/mm/yyyy")
            date_picker.focus_set()
            date_picker.select_range(0, tkinter.END)
        else:
            try:
                datetime.datetime.strptime(date_picker.get(),
                                           "%d/%m/%Y").date()
            except ValueError:
                messagebox.showerror(
                    'INVALID VALUE',
                    "Please enter a valid date in the format dd/mm/yyyy")
                date_picker.focus_set()
                date_picker.select_range(0, tkinter.END)

    # capitalizing the text entries
    def capitalize_words(event, widget):
        x = ''
        if event is not None:
            x = event.widget.get().strip()
        elif widget is not None:
            x = widget.get().strip()
        if x != '':
            x = x[0].upper() + x[1:]
            if event is not None:
                event.widget.delete(0, tkinter.END)
                event.widget.insert(0, x)
            elif widget is not None:
                widget.delete(0, tkinter.END)
                widget.insert(0, x)

    # function for auto filling of category
    def category_auto_fill(event):
        capitalize_words(event, None)

        if item_entry.get() != '':
            db_connection = sqlite3.connect(
                os.path.join('FILES', 'HOME_ACCOUNTING', 'DATA',
                             'home_accounting.db'))
            db_cursor = db_connection.cursor()

            db_cursor.execute("SELECT category FROM pair WHERE item='" +
                              item_entry.get() + "' COLLATE NOCASE")
            data = db_cursor.fetchall()

            if bool(data):
                category_entry.delete(0, tkinter.END)
                category_entry.insert(0, data[0][0])
                category_entry.config(state='disabled')
                mode_entry.focus_set()
            else:
                category_entry.config(state='normal')
                category_entry.focus_set()
                category_entry.select_range(0, tkinter.END)

    # function for formatting the numerical inputs in various fields accordingly
    def format_numerals(event, widget):
        if event is not None:
            if event.widget.get() != '':
                x = float(event.widget.get())
                event.widget.delete(0, tkinter.END)

                if x != 0 and event.widget == quantity_entry:
                    event.widget.insert(0, "{:.3f}".format(x))
                elif x != 0 and event.widget == rate_entry:
                    event.widget.insert(0, "{:.2f}".format(x))
                elif event.widget in [dis_all_entry, dis_rec_entry, net_entry]:
                    event.widget.insert(0, "{:.2f}".format(x))
        elif widget is not None:
            if widget.get() != '':
                x = float(widget.get())
                widget.delete(0, tkinter.END)

                if x != 0 and widget == quantity_entry:
                    widget.insert(0, "{:.3f}".format(x))
                elif x != 0 and widget == rate_entry:
                    widget.insert(0, "{:.2f}".format(x))
                elif widget in [dis_all_entry, dis_rec_entry, net_entry]:
                    widget.insert(0, "{:.2f}".format(x))

    # function to calculate the net price after leaving the dis rec entry if possible
    def net_price_if_possible(event):
        format_numerals(event, None)
        empty = 0
        for i in [quantity_entry, rate_entry, dis_all_entry, dis_rec_entry]:
            if i.get() == '':
                empty = empty + 1
        if not empty:
            net = (float(quantity_entry.get()) *
                   float(rate_entry.get())) + float(
                       dis_all_entry.get()) - float(dis_rec_entry.get())
            net_entry.delete(0, tkinter.END)
            net_entry.insert(0, "{:.2f}".format(net))

    # function to calculate numeral value if a single numeral field other than net is left at last
    def single_empty_numeral(event):
        format_numerals(event, None)
        empty = 0
        for i in [
                quantity_entry, rate_entry, dis_all_entry, dis_rec_entry,
                net_entry
        ]:
            if i.get() == '':
                empty = empty + 1
        if empty == 1:
            if quantity_entry.get() == '':
                qty = (float(net_entry.get()) - float(dis_all_entry.get()) +
                       float(dis_rec_entry.get())) / float(rate_entry.get())
                quantity_entry.delete(0, tkinter.END)
                quantity_entry.insert(0, "{:.3f}".format(qty))
            elif rate_entry.get() == '':
                r = (float(net_entry.get()) - float(dis_all_entry.get()) +
                     float(dis_rec_entry.get())) / float(quantity_entry.get())
                rate_entry.delete(0, tkinter.END)
                rate_entry.insert(0, "{:.2f}".format(r))
            elif dis_all_entry.get() == '':
                da = float(net_entry.get()) + float(dis_rec_entry.get()) - (
                    float(quantity_entry.get()) * float(rate_entry.get()))
                dis_all_entry.delete(0, tkinter.END)
                dis_all_entry.insert(0, "{:.2f}".format(da))
            elif dis_rec_entry.get() == '':
                dr = (float(quantity_entry.get()) *
                      float(rate_entry.get())) + float(
                          dis_all_entry.get()) - float(net_entry.get())
                dis_rec_entry.delete(0, tkinter.END)
                dis_rec_entry.insert(0, "{:.2f}".format(dr))
            elif net_entry.get() == '':
                net = (float(quantity_entry.get()) *
                       float(rate_entry.get())) + float(
                           dis_all_entry.get()) - float(dis_rec_entry.get())
                net_entry.delete(0, tkinter.END)
                net_entry.insert(0, "{:.2f}".format(net))
        elif empty > 1:
            messagebox.showwarning(
                "UNKNOWN QUANTITY LIMIT EXCEEDED",
                "Please do not leave more than one among Quantity, Rate, Dis. Allowed, Dis. Received and Net Price as empty"
            )
            if quantity_entry.get() == '':
                quantity_entry.focus_set()
            elif rate_entry.get() == '':
                rate_entry.focus_set()
            elif dis_all_entry.get() == '':
                dis_all_entry.focus_set()
            elif dis_rec_entry.get() == '':
                dis_rec_entry.focus_set()

    # function to execute on add OR done
    def add_or_done():

        capitalize_words(None, item_entry)
        category_auto_fill(None)
        for i in [category_entry, mode_entry, unit_entry]:
            capitalize_words(None, i)
        for i in [quantity_entry, rate_entry, dis_all_entry, dis_rec_entry]:
            format_numerals(None, i)
        net_price_if_possible(None)
        format_numerals(None, net_entry)
        single_empty_numeral(None)

        empty = 0
        for i in [
                date_picker, item_entry, category_entry, mode_entry,
                unit_entry, quantity_entry, rate_entry, dis_all_entry,
                dis_rec_entry, net_entry
        ]:
            if i.get() == '':
                empty = empty + 1

        if empty != 0:
            messagebox.showerror(
                'EMPTY FIELDS NOT PERMITTED',
                'Please do not leave any of the fields empty')
            for i in [
                    date_picker, item_entry, category_entry, mode_entry,
                    unit_entry, quantity_entry, rate_entry, dis_all_entry,
                    dis_rec_entry, net_entry
            ]:
                if i.get() == '':
                    i.focus_set()
                    break
        else:
            db_connection = sqlite3.connect(
                os.path.join('FILES', 'HOME_ACCOUNTING', 'DATA',
                             'home_accounting.db'))
            db_cursor = db_connection.cursor()

            date = to_year_month_day(date_picker.get())
            item = item_entry.get()
            category = category_entry.get()
            mode = mode_entry.get()
            unit = unit_entry.get()
            quantity = float(quantity_entry.get())
            rate = float(rate_entry.get())
            da = float(dis_all_entry.get())
            dr = float(dis_rec_entry.get())
            net = float(net_entry.get())

            if button_add_done.cget('text') == 'ADD':
                db_cursor.execute(
                    """INSERT INTO entries VALUES (?,?,?,?,?,?,?,?,?,?)""",
                    (date, item, category, mode, unit, quantity, rate, da, dr,
                     net))
                db_connection.commit()
                db_connection.close()
            elif button_add_done.cget('text') == 'DONE':
                row = int(tree.selection()[0])
                db_cursor.execute(
                    """UPDATE entries SET date=?, item=?, category=?, mode=?, unit=?, quantity=?, rate=?, da=?, dr=?, net=? WHERE rowid="""
                    + str(row), (date, item, category, mode, unit, quantity,
                                 rate, da, dr, net))
                db_connection.commit()
                db_connection.close()

            button_add_done.config(text='ADD')
            category_entry.config(state='normal')
            for i in [
                    net_entry, dis_all_entry, dis_rec_entry, rate_entry,
                    quantity_entry, category_entry, item_entry, unit_entry
            ]:
                i.delete(0, tkinter.END)
            for i in [net_entry, dis_all_entry, dis_rec_entry, rate_entry]:
                i.insert(0, '0.00')
            quantity_entry.insert(0, '0.000')
            update_tree()
            item_entry.focus_set()

    # function to convert date to year/month/day format
    def to_year_month_day(d):
        return d[6:] + '/' + d[3:5] + '/' + d[:2]

    # function to convert date to day/month/year
    def to_day_month_year(d):
        return d[8:] + '/' + d[5:7] + '/' + d[:4]

    # function to update the tree whenever needed
    def update_tree():
        tree.delete(*tree.get_children())

        db_connection = sqlite3.connect(
            os.path.join('FILES', 'HOME_ACCOUNTING', 'DATA',
                         'home_accounting.db'))
        db_cursor = db_connection.cursor()

        num_of_entries = 0
        db_cursor.execute("SELECT COUNT(*) FROM entries")
        num_of_entries = db_cursor.fetchall()[0][0]

        total_net = 0
        db_cursor.execute("SELECT SUM(net) FROM entries")
        total_net = db_cursor.fetchall()[0][0]
        if total_net is None:
            total_net = 0

        db_cursor.execute("SELECT quantity FROM entries")
        quantities = db_cursor.fetchall()

        db_cursor.execute("SELECT rate FROM entries")
        rates = db_cursor.fetchall()

        total_gross = 0
        for i in range(num_of_entries):
            total_gross += (quantities[i][0] * rates[i][0])

        label_number_of_entries.config(text='No. of entries = ' +
                                       str(num_of_entries))
        label_total_gross.config(text='Total Gross = ' +
                                 "{:.2f}".format(total_gross))
        label_total_net.config(text='Total Net = ' +
                               "{:.2f}".format(total_net))

        db_cursor.execute("SELECT * FROM entries")
        the_entries = db_cursor.fetchall()
        for i in range(num_of_entries):
            row = []
            date = to_day_month_year(the_entries[i][0])
            item = the_entries[i][1]
            category = the_entries[i][2]
            mode = the_entries[i][3]
            unit = the_entries[i][4]
            quantity = "{:.3f}".format(the_entries[i][5])
            rate = "{:.2f}".format(the_entries[i][6])
            da = "{:.2f}".format(the_entries[i][7])
            dr = "{:.2f}".format(the_entries[i][8])
            net = "{:.2f}".format(the_entries[i][9])
            for j in [
                    date, item, category, mode, unit, quantity, rate, da, dr,
                    net
            ]:
                row.append(j)

            if i % 2 == 0:
                tree.insert(parent='', index='end', iid=i + 1, values=row)
            else:
                tree.insert(parent='',
                            index='end',
                            iid=i + 1,
                            values=row,
                            tags=('odd', ))

        db_connection.close()

        check_tree_selection(None)

    # function to check if any selection is made in the tree and change state of the three buttons
    def check_tree_selection(event):
        if tree.selection():
            button_edit.config(state=tkinter.NORMAL)
            button_delete.config(state=tkinter.NORMAL)
            button_clear_selection.config(state=tkinter.NORMAL)
        else:
            button_edit.config(state=tkinter.DISABLED)
            button_delete.config(state=tkinter.DISABLED)
            button_clear_selection.config(state=tkinter.DISABLED)

    # function to be called on 'edit' button
    def edit_entry():
        row = int(tree.selection()[0])
        button_edit.config(state='disabled')
        button_delete.config(state='disabled')
        button_clear_selection.config(state='disabled')
        button_add_done.config(text='DONE')

        for i in [
                date_picker, item_entry, category_entry, mode_entry,
                unit_entry, quantity_entry, rate_entry, dis_all_entry,
                dis_rec_entry, net_entry
        ]:
            i.delete(0, tkinter.END)

        db_connection = sqlite3.connect(
            os.path.join('FILES', 'HOME_ACCOUNTING', 'DATA',
                         'home_accounting.db'))
        db_cursor = db_connection.cursor()

        db_cursor.execute("SELECT * FROM entries WHERE rowid=" + str(row))
        data_to_edit = db_cursor.fetchall()
        date_picker.insert(0, to_day_month_year(data_to_edit[0][0]))
        item_entry.insert(0, data_to_edit[0][1])
        category_entry.insert(0, data_to_edit[0][2])
        mode_entry.insert(0, data_to_edit[0][3])
        unit_entry.insert(0, data_to_edit[0][4])
        quantity_entry.insert(0, "{:.3f}".format(data_to_edit[0][5]))
        rate_entry.insert(0, "{:.2f}".format(data_to_edit[0][6]))
        dis_all_entry.insert(0, "{:.2f}".format(data_to_edit[0][7]))
        dis_rec_entry.insert(0, "{:.2f}".format(data_to_edit[0][8]))
        net_entry.insert(0, "{:.2f}".format(data_to_edit[0][9]))

        date_picker.focus_set()

    # function for clearing the selection made in the tree
    def clear_selection():
        update_tree()

    # theme setting of ttk widgets
    style = ttk.Style()
    style.theme_use("clam")  # default is vista
    style.configure("Treeview",
                    background='white',
                    fieldbackground='white',
                    rowheight=25,
                    font='TkDefaultFont 9 italic')
    style.configure("Treeview.Heading", font='TkDefaultFont 10 bold')
    style.map("Treeview", background=[('selected', 'RoyalBlue3')])

    # calling the function to initially check the existence of files and creating it if not existing
    file_initialisation()

    date_picker = tkcalendar.DateEntry(root, date_pattern='dd/mm/yyyy')
    date_picker.place(relx=0.02, rely=0.0256, relwidth=0.15)
    date_picker.focus_set()
    date_picker.bind("<Return>", next_widget_on_return)
    date_picker.bind("<FocusOut>", date_only)

    label_item = tkinter.Label(root,
                               text='Item',
                               font='TkDefaultFont 10 italic')
    label_item.place(relx=0.02, rely=0.0256 * 4 - 0.0065)
    item_entry = autocomplete.AutocompleteEntry(root, completevalues=[])
    item_entry.place(relx=0.02, rely=0.0256 * 5, relwidth=0.15)
    item_entry.bind("<Return>", next_widget_on_return)
    item_entry.bind("<FocusOut>", category_auto_fill)

    label_category = tkinter.Label(root,
                                   text='Category',
                                   font='TkDefaultFont 10 italic')
    label_category.place(relx=0.02, rely=0.0256 * 8 - 0.0065)
    category_entry = autocomplete.AutocompleteEntry(root, completevalues=[])
    category_entry.place(relx=0.02, rely=0.0256 * 9, relwidth=0.15)
    category_entry.bind("<Return>", next_widget_on_return)
    category_entry.bind(
        "<FocusOut>",
        lambda event, widget=None: capitalize_words(event, widget))

    label_mode = tkinter.Label(root,
                               text='Mode Of Payment',
                               font='TkDefaultFont 10 italic')
    label_mode.place(relx=0.02, rely=0.0256 * 12 - 0.0065)
    mode_entry = autocomplete.AutocompleteEntry(root, completevalues=[])
    mode_entry.place(relx=0.02, rely=0.0256 * 13, relwidth=0.15)
    mode_entry.bind("<Return>", next_widget_on_return)
    mode_entry.bind("<FocusOut>",
                    lambda event, widget=None: capitalize_words(event, widget))

    label_unit = tkinter.Label(root,
                               text='Unit (Quantity Description)',
                               font='TkDefaultFont 10 italic')
    label_unit.place(relx=0.02, rely=0.0256 * 16 - 0.0065)
    unit_entry = autocomplete.AutocompleteEntry(root, completevalues=[])
    unit_entry.place(relx=0.02, rely=0.0256 * 17, relwidth=0.15)
    unit_entry.bind("<Return>", next_widget_on_return)
    unit_entry.bind("<FocusOut>",
                    lambda event, widget=None: capitalize_words(event, widget))

    label_quantity = tkinter.Label(root,
                                   text='Quantity',
                                   font='TkDefaultFont 10 italic')
    label_quantity.place(relx=0.02, rely=0.0256 * 20 - 0.0065)
    quantity_entry = tkinter.Entry(root)
    quantity_entry.place(relx=0.02, rely=0.0256 * 21, relwidth=0.15)
    quantity_entry.config(validate='all',
                          validatecommand=(root.register(only_numeric), '%P'))
    quantity_entry.insert(0, '0.000')
    quantity_entry.bind("<Return>", next_widget_on_return)
    quantity_entry.bind(
        "<FocusOut>",
        lambda event, widget=None: format_numerals(event, widget))

    label_rate = tkinter.Label(root,
                               text='Rate',
                               font='TkDefaultFont 10 italic')
    label_rate.place(relx=0.02, rely=0.0256 * 24 - 0.0065)
    rate_entry = tkinter.Entry(root)
    rate_entry.place(relx=0.02, rely=0.0256 * 25, relwidth=0.15)
    rate_entry.config(validate='all',
                      validatecommand=(root.register(only_numeric), '%P'))
    rate_entry.insert(0, '0.00')
    rate_entry.bind("<Return>", next_widget_on_return)
    rate_entry.bind("<FocusOut>",
                    lambda event, widget=None: format_numerals(event, widget))

    label_dis_all = tkinter.Label(root,
                                  text='Dis. Allowed',
                                  font='TkDefaultFont 10 italic')
    label_dis_all.place(relx=0.02, rely=0.0256 * 28 - 0.0065)
    dis_all_entry = tkinter.Entry(root)
    dis_all_entry.place(relx=0.02, rely=0.0256 * 29, relwidth=0.07)
    dis_all_entry.config(validate='all',
                         validatecommand=(root.register(only_numeric), '%P'))
    dis_all_entry.insert(0, '0.00')
    dis_all_entry.bind("<Return>", next_widget_on_return)
    dis_all_entry.bind(
        "<FocusOut>",
        lambda event, widget=None: format_numerals(event, widget))

    label_dis_rec = tkinter.Label(root,
                                  text='Dis. Received',
                                  font='TkDefaultFont 10 italic')
    label_dis_rec.place(relx=0.02 + 0.07 + 0.01, rely=0.0256 * 28 - 0.0065)
    dis_rec_entry = tkinter.Entry(root)
    dis_rec_entry.place(relx=0.02 + 0.07 + 0.01,
                        rely=0.0256 * 29,
                        relwidth=0.07)
    dis_rec_entry.config(validate='all',
                         validatecommand=(root.register(only_numeric), '%P'))
    dis_rec_entry.insert(0, '0.00')
    dis_rec_entry.bind("<Return>", next_widget_on_return)
    dis_rec_entry.bind("<FocusOut>", net_price_if_possible)

    label_net = tkinter.Label(root,
                              text='Net Price',
                              font='TkDefaultFont 10 italic')
    label_net.place(relx=0.02, rely=0.0256 * 32 - 0.0065)
    net_entry = tkinter.Entry(root)
    net_entry.place(relx=0.02, rely=0.0256 * 33, relwidth=0.15)
    net_entry.config(validate='all',
                     validatecommand=(root.register(only_numeric), '%P'))
    net_entry.insert(0, '0.00')
    net_entry.bind("<Return>", next_widget_on_return)
    net_entry.bind("<FocusOut>", single_empty_numeral)

    button_add_done = tkinter.Button(root,
                                     text='ADD',
                                     relief='groove',
                                     font='TkDefaultFont 11 bold italic',
                                     command=add_or_done)
    button_add_done.place(relx=0.045,
                          rely=0.0256 * 36,
                          relheight=0.0256 * 2,
                          relwidth=0.10)
    button_add_done.bind("<Return>",
                         lambda event=None: button_add_done.invoke())

    button_save_exit = tkinter.Button(root,
                                      text='SAVE and EXIT',
                                      relief='groove',
                                      font='TkDefaultFont 11 bold italic')
    button_save_exit.place(relwidth=0.15,
                           relheight=0.0256 * 3,
                           relx=0.425,
                           rely=0.870)
    button_save_exit.bind("<Return>",
                          lambda event=None: button_save_exit.invoke())

    button_no_save_exit = tkinter.Button(root,
                                         text='EXIT without SAVING',
                                         relief='groove',
                                         font='TkDefaultFont 11 bold italic')
    button_no_save_exit.place(relwidth=0.15,
                              relheight=0.0256 * 3,
                              relx=0.615,
                              rely=0.870)
    button_no_save_exit.bind("<Return>",
                             lambda event=None: button_no_save_exit.invoke())

    button_edit = tkinter.Button(root,
                                 text='Edit',
                                 state=tkinter.DISABLED,
                                 relief='groove',
                                 command=edit_entry)
    button_edit.place(relwidth=0.07,
                      relheight=0.0256 * 2,
                      rely=0.79,
                      relx=0.47)
    button_edit.bind("<Return>", lambda event=None: button_edit.invoke())

    button_delete = tkinter.Button(root,
                                   text='Delete',
                                   state=tkinter.DISABLED,
                                   relief='groove')
    button_delete.place(relwidth=0.07,
                        relheight=0.0256 * 2,
                        rely=0.79,
                        relx=0.56)
    button_delete.bind("<Return>", lambda event=None: button_delete.invoke())

    button_clear_selection = tkinter.Button(root,
                                            text='Clear Selection',
                                            state=tkinter.DISABLED,
                                            relief='groove',
                                            command=clear_selection)
    button_clear_selection.place(relwidth=0.07,
                                 relheight=0.0256 * 2,
                                 rely=0.79,
                                 relx=0.65)
    button_clear_selection.bind(
        "<Return>", lambda event=None: button_clear_selection.invoke())

    button_item_list = tkinter.Button(root,
                                      text='..',
                                      font='TkDefaultFont 11 bold italic')
    button_item_list.place(relx=0.18,
                           rely=0.0256 * 5,
                           height=21,
                           relwidth=0.02)

    button_category_list = tkinter.Button(root,
                                          text='..',
                                          font='TkDefaultFont 11 bold italic')
    button_category_list.place(relx=0.18,
                               rely=0.0256 * 9,
                               height=21,
                               relwidth=0.02)

    button_mode_list = tkinter.Button(root,
                                      text='..',
                                      font='TkDefaultFont 11 bold italic')
    button_mode_list.place(relx=0.18,
                           rely=0.0256 * 13,
                           height=21,
                           relwidth=0.02)

    button_unit_list = tkinter.Button(root,
                                      text='..',
                                      font='TkDefaultFont 11 bold italic')
    button_unit_list.place(relx=0.18,
                           rely=0.0256 * 17,
                           height=21,
                           relwidth=0.02)

    label_number_of_entries = tkinter.Label(root,
                                            text='No. of entries = 0',
                                            font='TkDefaultFont 10 italic')
    label_number_of_entries.place(relx=0.22, rely=0.73)

    label_total_gross = tkinter.Label(root,
                                      text='Total Gross = 0.00',
                                      font='TkDefaultFont 10 italic')
    label_total_gross.place(relx=0.63, rely=0.73)

    label_total_net = tkinter.Label(root,
                                    text='Total Net = 0.00',
                                    font='TkDefaultFont 10 italic')
    label_total_net.place(relx=0.865, rely=0.73)

    tree_scroll = tkinter.Scrollbar(root, orient=tkinter.VERTICAL)
    tree_scroll.place(relheight=0.7, relx=0.97, rely=0.03)

    tree = ttk.Treeview(root,
                        show=['headings'],
                        yscrollcommand=tree_scroll.set,
                        selectmode='browse')
    tree.place(relwidth=0.75, relheight=0.7, relx=0.22, rely=0.03)
    tree_scroll.config(command=tree.yview)
    tree.bind('<FocusIn>', check_tree_selection)
    tree.bind('<ButtonRelease-1>', check_tree_selection)
    tree.bind('<KeyRelease>', check_tree_selection)

    tree['columns'] = ('date', 'item', 'cat', 'mode', 'unit', 'qty', 'rate',
                       'da', 'dr', 'net')
    root.update()
    tree.update()
    tree.column('date',
                anchor=tkinter.CENTER,
                width=int(tree.winfo_width() / 10))
    tree.column('item', anchor=tkinter.W, width=int(tree.winfo_width() / 8))
    tree.column('cat', anchor=tkinter.W, width=int(tree.winfo_width() / 7.5))
    tree.column('mode', anchor=tkinter.W, width=int(tree.winfo_width() / 9))
    tree.column('unit', anchor=tkinter.W, width=int(tree.winfo_width() / 12))
    tree.column('qty', anchor=tkinter.E, width=int(tree.winfo_width() / 11))
    tree.column('rate', anchor=tkinter.E, width=int(tree.winfo_width() / 11))
    tree.column('da', anchor=tkinter.E, width=int(tree.winfo_width() / 13))
    tree.column('dr', anchor=tkinter.E, width=int(tree.winfo_width() / 13))
    tree.column('net', anchor=tkinter.E, width=int(tree.winfo_width() / 8.5))
    tree.heading('date', text='Date')  # , anchor=tkinter.W
    tree.heading('item', text='Item')
    tree.heading('cat', text='Category')
    tree.heading('mode', text='Mode')
    tree.heading('unit', text='Unit')
    tree.heading('qty', text='Quantity')
    tree.heading('rate', text='Rate')
    tree.heading('da', text='Dis. All')
    tree.heading('dr', text='Dis. Rec')
    tree.heading('net', text='Net Price')
    tree.tag_configure('odd', background="light sky blue")

    # calling function to initially set the auto completion values for different fields
    for i in [(item_entry, 'item'), (category_entry, 'category'),
              (mode_entry, 'mode'), (unit_entry, 'unit')]:
        set_auto_completion(i)

    root.mainloop()
示例#21
0
        if value.get() != "":
            incomeresult[key] = int(value.get())
    incomeresult["date"] = ent.get()

    monthly_expense1 = MonthlyExpense("Income")
    monthly_expense1.input_data(incomeresult)
    monthly_expense2 = MonthlyExpense("Expense")
    monthly_expense2.input_data(expenseresult)

    clear()


def send_report():
    report = SendEmail()
    report.send_report()
    root.quit()


tk.Label(submitframe, text="Date").pack(padx=10, pady=10)
ent = tkc.DateEntry(submitframe,
                    width=15,
                    backgroud="blue",
                    foreground="red",
                    borderwidth=3)
ent.pack(padx=10, pady=10)
submitbutton = tk.Button(submitframe, text="Submit", command=button_submit)
submitbutton.pack()
report = tk.Button(submitframe, text="Report", command=send_report)
report.pack()
root.mainloop()
示例#22
0
def new_keys():
    def on_click_nk():
        def is_valid_expiry_date():
            if expiry.get() == "":
                return False
            if expiry.get() == "0":
                return True
            if expiry.get() == "1" and date_choice.get_date() > date.today():
                return True
            else:
                return False

        def expiry_val():
            if expiry.get() == "0":
                return 0
            if expiry.get() == "1" and date_choice.get_date() > date.today():
                return str(date_choice.get_date())

        if name.get() != "":
            if functions_.is_email(email.get()):
                if length.get() != 0:
                    if is_valid_expiry_date():
                        if passph.get() != "":
                            lp = LoadPage("Generating Key...")
                            lp.show_()
                            master.update()
                            functions_.generate_new_keys(
                                name.get(), email.get(), comment.get(),
                                length.get(), expiry_val(), passph.get())
                            lp.close_()
                            popupmsg(
                                "Think about saving your keys before closing \n the program. If you don't, they will be lost forever."
                            )
                            back_to_main_menu()
                        else:
                            popupmsg("Please enter a valid passphrase.")
                    else:
                        popupmsg(
                            "Please enter a valid expiry date in the future.")
                else:
                    popupmsg("Please enter a valid key length")
            else:
                popupmsg("Please enter a valid email")
        else:
            popupmsg("Please enter a valid name")

    master.update()
    #The application will crash about 25% of the time if master.update() is not present

    length = IntVar(master, 0)
    expiry = StringVar(master, "")

    name_label = Label(master, text="Name :", anchor=W, font="Arial 11")
    name = Entry(master)
    email_label = Label(master, text="Email :", anchor=W, font="Arial 11")
    email = Entry(master)
    comment_label = Label(master,
                          text="Comment (optional):",
                          anchor=W,
                          font="Arial 11")
    comment = Entry(master)
    length_label = Label(master,
                         text="Key Length :",
                         anchor=W,
                         font="Arial 11")
    length_choice = [
        Radiobutton(master,
                    text="1024",
                    variable=length,
                    value=1024,
                    indicatoron=0),
        Radiobutton(master,
                    text="2048",
                    variable=length,
                    value=2048,
                    indicatoron=0),
        Radiobutton(master,
                    text="4096",
                    variable=length,
                    value=4096,
                    indicatoron=0)
    ]
    expiry_label = Label(master, text="Expiry :", anchor=W, font="Arial 11")
    date_choice = ttkal.DateEntry(master,
                                  width=125,
                                  background='darkblue',
                                  foreground='white',
                                  borderwidth=2)
    expiry_choice = [
        Radiobutton(master,
                    text="NEVER",
                    padx=20,
                    variable=expiry,
                    value=0,
                    indicatoron=0),
        Radiobutton(master,
                    text="ON :",
                    padx=20,
                    variable=expiry,
                    value=1,
                    indicatoron=0)
    ]
    passph_label = Label(master,
                         text="Passphrase :",
                         anchor=W,
                         font="Arial 11")
    passph = Entry(master)
    algo_label = Label(master,
                       text="Algorithm : RSA",
                       anchor=W,
                       font="Arial 11")

    button1 = Button(master, text='GENERATE KEYS', command=on_click_nk)

    new_key_form = [[625, 130, name_label, 500], [625, 150, name, 500],
                    [625, 180, email_label, 500], [625, 200, email, 500],
                    [625, 230, comment_label, 500], [625, 250, comment, 500],
                    [625, 280, length_label, 500],
                    [625 - 166, 300, length_choice[0], 166],
                    [625, 300, length_choice[1], 166],
                    [625 + 166, 300, length_choice[2], 166],
                    [625, 330, expiry_label, 500],
                    [625 - 125, 350, expiry_choice[0], 250],
                    [625 + 62, 350, expiry_choice[1], 125],
                    [625 + 62 + 125, 350, date_choice, 125],
                    [625, 380, passph_label, 500], [625, 400, passph, 500],
                    [625, 430, algo_label, 500], [625, 470, button1, 500]]

    for i in new_key_form:
        canvas0.create_window(i[0],
                              i[1],
                              window=i[2],
                              width=i[3],
                              tags="new_key_menu")
示例#23
0
lbl_qual = tk.Label(main_window, text="Choose Qualification", font=(10))
lbl_qual.grid(rows=10, column=1, padx=10, pady=5, sticky='w')

# Qualification Combobox
cmbx_qual = tk.ttk.Combobox(main_window, values=lst_qual, state='readonly')
cmbx_qual.grid(rows=11, column=0, columnspan=2, padx=10, pady=5, sticky='w')
cmbx_qual.current(0)

# Birthdate label
lbl_birth = tk.Label(main_window, text="Select birth date", font=(10))
lbl_birth.grid(rows=12, column=1, padx=10, pady=5, sticky='w')

# Birthdate date picker
dp_birth = tkcalendar.DateEntry(main_window,
                                width=12,
                                background='darkblue',
                                foreground='white',
                                borderwidth=2,
                                date_pattern='dd/mm/y')
dp_birth.grid(rows=13, column=0, columnspan=2, padx=10, pady=5, sticky='we')

# joining date label
lbl_birth = tk.Label(main_window, text="Select joining date", font=(10))
lbl_birth.grid(rows=14, column=1, padx=10, pady=5, sticky='w')

# Joining date picker
dp_joining = tkcalendar.DateEntry(main_window,
                                  width=12,
                                  background='darkblue',
                                  foreground='white',
                                  borderwidth=2,
                                  date_pattern='dd/mm/y')
示例#24
0
inputHour = ttk.Combobox(fenster,
                         values=[
                             "00", "01", "02", "03", "04", "05", "06", "07",
                             "08", "09", "10", "11", "12", "13", "14", "15",
                             "16", "17", "18", "19", "20", "21", "22", "23"
                         ],
                         state="readonly")

inputMinutes = ttk.Combobox(fenster,
                            values=["00", "15", "30", "45"],
                            state="readonly")

inputDate = tkcalendar.DateEntry(fenster,
                                 locale='de_DE',
                                 width=12,
                                 background='darkblue',
                                 foreground='white',
                                 borderwidth=2,
                                 year=2020)

# structure window with grid
inputStartpoint.grid(row=1, column=2, pady=30, columnspan=2)
startpointLabel.grid(row=1, column=1)

inputHour.grid(row=2, column=2)
colonLabel.grid(row=2, column=3)
inputMinutes.grid(row=2, column=3)
timeLabel.grid(row=2, column=1)

inputDate.grid(row=3, column=2)
dateLabel.grid(row=3, column=1)
    def body(self, master):
        frm_base = Frame(master)
        frm_base.pack(fill=BOTH)
        Label(frm_base,
              height="2",
              width="30",
              text="Account:",
              bg=BUTTON_COLOR,
              font=BUTTON_FONT,
              fg=BUTTON_FONT_COLOR).pack(padx=15, pady=5)
        accounts = self.__user.accounts_names
        self.__account_from.set(accounts[0])
        op = OptionMenu(frm_base, self.__account_from, *accounts)
        op.pack(padx=5, pady=5)
        op.configure(relief=GROOVE,
                     width="25",
                     height="2",
                     bg=DATA_COLOR,
                     font=DATA_FONT,
                     fg=DATA_FONT_COLOR)

        Label(frm_base,
              height="2",
              width="30",
              text="Category:",
              bg=BUTTON_COLOR,
              font=BUTTON_FONT,
              fg=BUTTON_FONT_COLOR).pack(padx=5, pady=5)
        self.__category_to.set(self.__categories[0])
        op1 = OptionMenu(frm_base, self.__category_to, *self.__categories)
        op1.pack(padx=5, pady=5)
        op1.configure(relief=GROOVE,
                      width="25",
                      height="2",
                      bg=DATA_COLOR,
                      font=DATA_FONT,
                      fg=DATA_FONT_COLOR)

        Label(frm_base,
              height="2",
              width="30",
              text="Amount:",
              bg=BUTTON_COLOR,
              font=BUTTON_FONT,
              fg=BUTTON_FONT_COLOR).pack(padx=5, pady=5)
        self.__amount = Entry(frm_base, width="30")
        self.__amount.insert(END, "0.0")
        self.__amount.pack(padx=5, pady=5)
        Label(frm_base,
              height="2",
              width="30",
              text="Date:",
              bg=BUTTON_COLOR,
              font=BUTTON_FONT,
              fg=BUTTON_FONT_COLOR).pack(padx=5, pady=5)

        self.__date = tkcalendar.DateEntry(frm_base, date_pattern='dd-mm-y')
        self.__date.pack(padx=5, pady=5)
        self.__date.set_date(datetime.date.today())

        Label(frm_base,
              height="2",
              width="30",
              text="Description:",
              bg=BUTTON_COLOR,
              font=BUTTON_FONT,
              fg=BUTTON_FONT_COLOR).pack(padx=5, pady=5)
        self.__description = Entry(frm_base, width="30")
        self.__description.pack(padx=5, pady=5)
        return frm_base
示例#26
0
    def create_widgets(self):
        '''Tabs'''
        self.tab_parent = ttk.Notebook(self.root)
        self.main_tab = ttk.Frame(self.tab_parent)
        self.search_tab = ttk.Frame(self.tab_parent)
        #self.statistics_tab = ttk.Frame(self.tab_parent)
        self.tab_parent.add(self.main_tab, text='Νέο Έγγραφο')
        self.tab_parent.add(self.search_tab, text='Αναζήτηση')
        #self.tab_parent.add(self.statistics_tab, text='Στατιστικά')
        self.tab_parent.pack(expand=True, fill='both')
        '''Main Tab'''
        self.f1_1 = tk.LabelFrame(
            self.main_tab,
            text='Αιτία Ακύρωσης',
            bg="lightyellow",
            padx=5,
            pady=5)  #font='"Segoe UI" 12 bold', fg="red")
        self.f1_1.pack(expand=True, fill='both')

        self.reason_variable = tk.StringVar()
        self.loss = tk.Radiobutton(self.f1_1,
                                   text='Απώλεια',
                                   variable=self.reason_variable,
                                   value='Απώλεια',
                                   bg='lightyellow',
                                   activebackground='lightyellow',
                                   tristatevalue=0)
        self.loss.pack(side='left', expand=True)
        self.theft = tk.Radiobutton(self.f1_1,
                                    text='Κλοπή',
                                    variable=self.reason_variable,
                                    value='Κλοπή',
                                    bg='lightyellow',
                                    activebackground='lightyellow',
                                    tristatevalue=0)
        self.theft.pack(side='left', expand=True)
        self.confiscated = tk.Radiobutton(
            self.f1_1,
            text='Κατάσχεση',
            variable=self.reason_variable,
            value='Κατάσχεση',
            bg='lightyellow',
            activebackground='lightyellow',
            tristatevalue=0)  #font='TkDefaultFont 11')
        self.confiscated.pack(side='left', expand=True)

        self.f1_2 = tk.LabelFrame(self.main_tab,
                                  text='Στοιχεία Δελτίου',
                                  bg="lightyellow",
                                  padx=5,
                                  pady=5)
        self.f1_2.pack(expand=True, fill='both')
        tk.Label(self.f1_2, text='Αριθμός Δελτίου:',
                 bg="lightyellow").grid(row=0, column=0)
        self.id_number_entry = tk.Entry(self.f1_2)
        self.id_number_entry.grid(row=0, column=1, sticky='we')

        tk.Label(self.f1_2, text='Επώνυμο:', bg="lightyellow").grid(row=2,
                                                                    column=0)
        self.surname_entry = tk.Entry(self.f1_2)
        self.surname_entry.grid(row=2, column=1, sticky='we')

        tk.Label(self.f1_2, text='Όνομα:', bg="lightyellow").grid(row=3,
                                                                  column=0)
        self.name_entry = tk.Entry(self.f1_2)
        self.name_entry.grid(row=3, column=1, sticky='we')
        for col in range(3):
            self.f1_2.grid_columnconfigure(col, weight=1, minsize=183)

        self.f1_3 = tk.LabelFrame(self.main_tab,
                                  text='Στοιχεία Εγγράφου',
                                  bg="lightyellow",
                                  padx=5,
                                  pady=5)
        self.f1_3.pack(expand=True, fill='both')
        self.f1_3_1 = tk.Frame(self.f1_3, bg="lightyellow", padx=5, pady=5)
        self.f1_3_1.pack(expand=True, fill='both')
        self.office_variable = tk.IntVar()
        self.embassy = tk.Radiobutton(self.f1_3_1,
                                      text=self.office_dict[1],
                                      variable=self.office_variable,
                                      value=1,
                                      bg='lightyellow',
                                      activebackground='lightyellow')
        self.embassy.pack(side='left', fill='both', expand=True)
        self.embassy.bind(
            '<ButtonRelease-1>',
            lambda event, office_type=1: data.create_office_tup(office_type))
        self.gen_con = tk.Radiobutton(self.f1_3_1,
                                      text=self.office_dict[2],
                                      variable=self.office_variable,
                                      value=2,
                                      bg='lightyellow',
                                      activebackground='lightyellow')
        self.gen_con.pack(side='left', fill='both', expand=True)
        self.gen_con.bind(
            '<ButtonRelease-1>',
            lambda event, office_type=2: data.create_office_tup(office_type))
        self.hon_gen_con = tk.Radiobutton(self.f1_3_1,
                                          text=self.office_dict[3],
                                          variable=self.office_variable,
                                          value=3,
                                          bg='lightyellow',
                                          activebackground='lightyellow')
        self.hon_gen_con.pack(side='left', fill='both', expand=True)
        self.hon_gen_con.bind(
            '<ButtonRelease-1>',
            lambda event, office_type=3: data.create_office_tup(office_type))
        self.np_gen_con = tk.Radiobutton(self.f1_3_1,
                                         text=self.office_dict[4],
                                         variable=self.office_variable,
                                         value=4,
                                         bg='lightyellow',
                                         activebackground='lightyellow')
        self.np_gen_con.pack(side='left', fill='both', expand=True)
        self.np_gen_con.bind(
            '<ButtonRelease-1>',
            lambda event, office_type=4: data.create_office_tup(office_type))
        self.port_auth = tk.Radiobutton(self.f1_3_1,
                                        text=self.office_dict[5],
                                        variable=self.office_variable,
                                        value=5,
                                        bg='lightyellow',
                                        activebackground='lightyellow')
        self.port_auth.pack(side='left', fill='both', expand=True)
        self.port_auth.bind(
            '<ButtonRelease-1>',
            lambda event, office_type=5: data.create_office_tup(office_type))

        self.f1_3_2 = tk.Frame(self.f1_3, bg="lightyellow", padx=5, pady=5)
        self.f1_3_2.pack(expand=True, fill='both')
        tk.Label(self.f1_3_2,
                 text='Προξενική/Λιμενική Αρχή:',
                 bg="lightyellow").grid(row=0, column=0)
        self.office_name_variable = tk.StringVar()
        self.office_name_variable.set("Επιλέξτε από τη λίστα...")
        self.office_name_combo = ttk.Combobox(
            self.f1_3_2,
            textvariable=self.office_name_variable,
            values=(),
            state='readonly')
        self.office_name_combo.bind('<<ComboboxSelected>>',
                                    self.combobox_selection)
        self.office_name_combo.grid(row=0, column=1, sticky='we')
        tk.Button(self.f1_3_2,
                  text='Νέα Προξενική Αρχή',
                  command=self.new_office).grid(row=0, column=2)

        tk.Label(self.f1_3_2, text='Αριθμός Πρωτοκόλλου:',
                 bg="lightyellow").grid(row=1, column=0)
        self.protocol_num_entry = tk.Entry(self.f1_3_2)
        self.protocol_num_entry.grid(row=1, column=1, sticky='we')

        tk.Label(self.f1_3_2, text='Ημερομηνία Πρωτοκόλλου:',
                 bg="lightyellow").grid(row=2, column=0)
        self.protocol_date_entry = tkcalendar.DateEntry(
            self.f1_3_2, date_pattern='dd/mm/y', locale='el_GR'
        )  #width=12, background='darkblue', foreground='white', borderwidth=2
        self.protocol_date_entry.grid(row=2, column=1, sticky='we')
        self.protocol_date_entry.delete(0, 'end')

        for col in range(3):
            self.f1_3_2.grid_columnconfigure(col, weight=1, minsize=183)

        self.f1_5 = tk.Frame(self.main_tab, bg="lightyellow", padx=5, pady=5)
        self.f1_5.pack(expand=True, fill='both', side="bottom")
        self.new_button = tk.Button(self.f1_5,
                                    text='Νέο Έγγραφο',
                                    command=self.reset)
        self.create_button = tk.Button(self.f1_5,
                                       text='Δημιουργία Εγγράφου',
                                       command=self.get_values)
        self.create_button.grid(row=0, column=1, sticky='ns')
        tk.Button(self.f1_5, text='Έξοδος',
                  command=self.exit).grid(row=0, column=2, sticky='ns')
        for col in range(3):
            self.f1_5.grid_columnconfigure(col, weight=1, minsize=183)

        self.f1_4 = tk.LabelFrame(self.main_tab,
                                  text='Άλλα Έγγραφα',
                                  bg="lightyellow",
                                  padx=5,
                                  pady=5)
        self.f1_4.pack(expand=True, fill='both', side="left")
        self.other_doc_passport_var = tk.IntVar()
        tk.Checkbutton(self.f1_4,
                       text='Διαβατήριο',
                       bg="lightyellow",
                       activebackground='lightyellow',
                       variable=self.other_doc_passport_var,
                       onvalue=1,
                       offvalue=0).pack(side='left', expand=True, fill='both')
        self.other_doc_driver_var = tk.IntVar()
        tk.Checkbutton(self.f1_4,
                       text='Άδεια Ικανότητας Οδήγησης',
                       bg="lightyellow",
                       activebackground='lightyellow',
                       variable=self.other_doc_driver_var,
                       onvalue=1,
                       offvalue=0).pack(side='left', expand=True, fill='both')

        self.f1_4_1 = tk.LabelFrame(self.main_tab,
                                    text='Αίτηση - Καρτέλα',
                                    bg="lightyellow",
                                    padx=5,
                                    pady=5)
        self.f1_4_1.pack(expand=True, fill='both', side="left")
        self.card_var = tk.IntVar()
        tk.Checkbutton(self.f1_4_1,
                       text='Χρειάζεται σκανάρισμα η καρτέλα;',
                       bg="lightyellow",
                       activebackground='lightyellow',
                       variable=self.card_var).pack(side='left',
                                                    expand=True,
                                                    fill='both')
        '''Search Tab'''
        self.f2 = tk.LabelFrame(self.search_tab,
                                text="Κριτήρια Αναζήτησης",
                                bg="lightyellow",
                                padx=5,
                                pady=5)
        self.f2.pack(expand=True, fill='both')

        tk.Label(self.f2, text='Αριθμός Δελτίου:',
                 bg="lightyellow").grid(row=0, column=0)
        self.id_number_search_entry = tk.Entry(self.f2)
        self.id_number_search_entry.grid(row=0, column=1, sticky='we')

        tk.Label(self.f2, text='Επώνυμο:', bg="lightyellow").grid(row=1,
                                                                  column=0)
        self.surname_search_entry = tk.Entry(self.f2)
        self.surname_search_entry.grid(row=1, column=1, sticky='we')

        tk.Label(self.f2, text='Προξενική/Λιμενική Αρχή:',
                 bg="lightyellow").grid(row=2, column=0)
        self.office_search_tup = data.create_office_search_tup('search')
        self.office_name_search_variable = tk.StringVar()
        self.office_name_search = ttk.Combobox(
            self.f2,
            textvariable=self.office_name_search_variable,
            values=self.office_search_tup,
            state='readonly')
        self.office_name_search.current(0)
        self.office_name_search.grid(row=2, column=1, sticky='we')
        tk.Button(self.f2, text='Επεξεργασία Αρχών',
                  command=self.edit_office).grid(row=2, column=2)

        for col in range(3):
            self.f2.grid_columnconfigure(col, weight=1, minsize=183)

        self.f3 = tk.LabelFrame(self.search_tab,
                                text="Ταξινόμηση Κατά",
                                bg="lightyellow",
                                padx=5,
                                pady=5)
        self.f3.pack(expand=True, fill='both')

        self.sort_by_variable = tk.StringVar(value='timestamp')
        self.sort_by_creation_date = tk.Radiobutton(
            self.f3,
            text='Ημερομηνία Δημιουργίας',
            variable=self.sort_by_variable,
            value='timestamp',
            bg='lightyellow',
            activebackground='lightyellow')
        self.sort_by_creation_date.pack(fill='both', expand=True, side='left')
        self.sort_by_name = tk.Radiobutton(self.f3,
                                           text='Επώνυμο',
                                           variable=self.sort_by_variable,
                                           value='surname, name',
                                           bg='lightyellow',
                                           activebackground='lightyellow')
        self.sort_by_name.pack(fill='both', expand=True, side='left')
        self.sort_by_prot_date = tk.Radiobutton(self.f3,
                                                text='Ημερομηνία Πρωτοκόλλου',
                                                variable=self.sort_by_variable,
                                                value='protocol_date',
                                                bg='lightyellow',
                                                activebackground='lightyellow')
        self.sort_by_prot_date.pack(fill='both', expand=True, side='left')

        tk.Button(self.f3, text='Αναζήτηση',
                  command=self.get_search_pars).pack(fill='both',
                                                     expand=True,
                                                     side='left')

        self.f4 = tk.LabelFrame(self.search_tab,
                                text="Αποτελέσματα",
                                bg="lightyellow",
                                padx=5,
                                pady=5)
        self.f4.pack(expand=True, fill='both')
        self.tree = ttk.Treeview(self.f4, style='Treeview')
        self.tree["columns"] = tuple(f'#{_i}' for _i in range(1, 10))
        self.column_tup = ('', 'Α/Α', 'Αρ. Δελτίου', 'Επώνυμο', 'Όνομα',
                           'Αιτιολογία', 'Προξενική Αρχή', 'Αρ. Πρωτοκόλλου',
                           'Ημ. Πρωτοκόλλου', 'Ημ. Δημιουργίας')
        self.column_widths = [0, 45, 70, 130, 100, 70, 100, 110, 110,
                              130]  #first column is blank
        for _i in range(len(self.column_tup)):
            self.tree.heading(f"#{_i}", text=self.column_tup[_i], anchor="w")
            self.tree.column(f"#{_i}", width=self.column_widths[_i])

        self.sbar = ttk.Scrollbar(self.f4,
                                  orient="vertical",
                                  command=self.tree.yview)
        self.sbar.pack(side='right', fill='y')
        self.tree.configure(yscrollcommand=self.sbar.set)
        self.sbar_1 = ttk.Scrollbar(self.f4,
                                    orient="horizontal",
                                    command=self.tree.xview)
        self.sbar_1.pack(side='bottom', fill='x')
        self.tree.configure(xscrollcommand=self.sbar_1.set)
        self.tree.pack(side='top', fill='both', expand=True)
        self.tree.bind('<<TreeviewSelect>>', self.tree_on_select)

        self.f5 = tk.Frame(self.search_tab, bg="lightyellow", padx=5, pady=5)
        self.f5.pack(expand=True, fill='both')
        self.delete_button = ttk.Button(self.f5,
                                        text='Διαγραφή',
                                        command=data.delete_from_database,
                                        state='disabled')
        self.delete_button.pack(side='right', fill='both')
        self.edit_button = ttk.Button(self.f5,
                                      text='Επεξεργασία',
                                      command=data.update_entry_retrieve,
                                      state='disabled')
        self.edit_button.pack(side='right', fill='both')
        '''Right click menu design'''
        self.popup_menu = tk.Menu(self.root, tearoff=0)
        self.popup_menu.add_command(label="Επικόλληση")
        self.id_number_entry.bind_class("Entry", "<Button-3><ButtonRelease-3>",
                                        self.right_click_menu)
        '''Main window position'''
        window_centre_position(self.root)
        '''Create shelve or open'''
        if not os.path.isfile(
                os.path.join(self.user_pref_location, "user_pref.dat")):
            self.create_shelve()

        self.open_shelve()
示例#27
0
 def _EditDocs(self):
     try:
         self.tabla1.item(self.tabla1.selection())['text'][0]
     except IndexError as e:
         msg.showwarning("Mantaro SYS", "Por favor seleccione un item")
         return
     cod_recibo = self.tabla1.item(self.tabla1.selection())['values'][0]
     self.edit_wind = tk.Toplevel()
     self.edit_wind.title("Editar Docs")
     self.frame_edicion = tk.LabelFrame(self.edit_wind,
                                        text="Editar Docs",
                                        width=100)
     self.frame_edicion.grid(row=0, column=0, padx=3, pady=3, sticky=tk.W)
     tk.Label(self.frame_edicion, text="Usuario").grid(row=1,
                                                       column=0,
                                                       padx=3,
                                                       pady=3,
                                                       sticky=tk.E)
     cmbUsuario = ttk.Combobox(self.frame_edicion, width=18)
     cmbUsuario.grid(row=1, column=1, padx=3, pady=3, sticky=tk.W)
     listaUsuarios = list()
     query = "select IdTrabajador from Usuarios"
     rows = self._consultas(query)
     for row in rows:
         listaUsuarios.append(row[0])
     cmbUsuario['values'] = listaUsuarios
     tk.Label(self.frame_edicion, text="Proveedor").grid(row=2,
                                                         column=0,
                                                         padx=3,
                                                         pady=3,
                                                         sticky=tk.E)
     cmbProveedor = ttk.Combobox(self.frame_edicion, width=18)
     cmbProveedor.grid(row=2, column=1, padx=3, pady=3, sticky=tk.W)
     listaProveedor = list()
     query2 = "select IdProv from Proveedor"
     rows2 = self._consultas(query2)
     for i in rows2:
         listaProveedor.append(i[0])
     cmbProveedor['values'] = listaProveedor
     tk.Label(self.frame_edicion, text="Tipo Documento").grid(row=3,
                                                              column=0,
                                                              padx=3,
                                                              pady=3,
                                                              sticky=tk.E)
     cmbTipoDoc = ttk.Combobox(self.frame_edicion, width=20)
     cmbTipoDoc.grid(row=3, column=1, padx=3, pady=3, sticky=tk.W)
     cmbTipoDoc['values'] = ['Factura', 'Boleta']
     tk.Label(self.frame_edicion, text="Fecha Recepcion").grid(row=4,
                                                               column=0,
                                                               padx=3,
                                                               pady=3,
                                                               sticky=tk.E)
     fechaRegisto = tkcalendar.DateEntry(self.frame_edicion)
     fechaRegisto.grid(row=4, column=1, padx=3, pady=3, sticky=tk.W)
     tk.Label(self.frame_edicion, text="Sub Total").grid(row=5,
                                                         column=0,
                                                         padx=3,
                                                         pady=3,
                                                         sticky=tk.E)
     entrada_subtotal = ttk.Entry(self.frame_edicion)
     entrada_subtotal.grid(row=5, column=1, pady=3, padx=3, sticky=tk.W)
     tk.Label(self.frame_edicion, text="IGV").grid(row=6,
                                                   column=0,
                                                   padx=3,
                                                   pady=3,
                                                   sticky=tk.E)
     entrada_IGV = ttk.Entry(self.frame_edicion)
     entrada_IGV.grid(row=6, column=1, pady=3, padx=3, sticky=tk.W)
     tk.Label(self.frame_edicion, text="Total").grid(row=7,
                                                     column=0,
                                                     padx=3,
                                                     pady=3,
                                                     sticky=tk.E)
     entrada_total = ttk.Entry(self.frame_edicion)
     entrada_total.grid(row=7, column=1, pady=3, padx=3, sticky=tk.W)
     ttk.Button(
         self.frame_edicion,
         text="Actualizar",
         command=lambda: self._EditarDocumento(cod_recibo, cmbUsuario.get(
         ), cmbProveedor.get(
         ), cmbTipoDoc.get(), fechaRegisto.get_date(), entrada_subtotal.get(
         ), entrada_IGV.get(), entrada_total.get())).grid(row=8,
                                                          column=1,
                                                          pady=3,
                                                          padx=3,
                                                          sticky=tk.W)
示例#28
0
    def edit_entry(self):
        self.edit_window = tk.Toplevel(self.root)
        self.edit_window.title("Επεξεργασία Εγγραφής")
        self.edit_window.resizable(width='false', height='false')
        #self.root.wait_window(self.new_office_window)
        #self.new_office_window.geometry('1000x400')
        self.f_edit_entry = tk.Frame(self.edit_window,
                                     bg="lightyellow",
                                     padx=5,
                                     pady=5)
        self.f_edit_entry.pack(expand=True, fill='both')
        edit_labels = [
            'Αριθμός Δελτίου', 'Επώνυμο', 'Όνομα', 'Αιτία Ακύρωσης',
            'Προξενική/Λιμενική Αρχή', 'Αριθμός Πρωτοκόλλου',
            'Ημερομηνία Πρωτοκόλλου'
        ]
        for count, label in enumerate(edit_labels):
            tk.Label(self.f_edit_entry, text=f'{label}:',
                     bg="lightyellow").grid(row=count, column=0)
        self.edit_id_number = tk.Entry(self.f_edit_entry)
        self.edit_id_number.grid(row=0, column=1)
        self.edit_id_number.insert(0, data.edit_id_number)
        self.edit_surname = tk.Entry(self.f_edit_entry)
        self.edit_surname.grid(row=1, column=1)
        self.edit_surname.insert(0, data.edit_surname)
        self.edit_name = tk.Entry(self.f_edit_entry)
        self.edit_name.grid(row=2, column=1)
        self.edit_name.insert(0, data.edit_name)
        self.edit_reason = tk.Entry(self.f_edit_entry)
        self.edit_reason_variable = tk.StringVar()
        self.reason_tup = ('Απώλεια', 'Κλοπή', 'Κατάσχεση')
        self.edit_reason = ttk.Combobox(
            self.f_edit_entry,
            textvariable=(self.edit_reason_variable),
            values=self.reason_tup,
            state='readonly')
        self.edit_reason.grid(row=3, column=1)
        self.edit_reason.current(self.reason_tup.index(data.edit_reason))

        self.edit_office_tup = data.create_office_search_tup()
        self.edit_office_name_variable = tk.StringVar()
        self.edit_office_name = ttk.Combobox(
            self.f_edit_entry,
            textvariable=self.edit_office_name_variable,
            values=self.edit_office_tup,
            state='readonly')
        self.edit_office_name.current(
            self.edit_office_tup.index(data.edit_office_name))
        self.edit_office_name.grid(row=4, column=1)

        self.edit_protocol_num = tk.Entry(self.f_edit_entry)
        self.edit_protocol_num.grid(row=5, column=1)
        self.edit_protocol_num.insert(0, data.edit_protocol_num)
        self.edit_protocol_date = tkcalendar.DateEntry(self.f_edit_entry,
                                                       date_pattern='dd/mm/y',
                                                       locale='el_GR')
        self.edit_protocol_date.grid(row=6, column=1)
        self.edit_protocol_date.delete(0, 'end')
        self.edit_protocol_date.insert(0, data.edit_protocol_date)
        self.f1_edit_entry = tk.Frame(self.edit_window,
                                      bg="lightyellow",
                                      padx=5,
                                      pady=5)
        self.f1_edit_entry.pack(expand=True, fill='both')

        tk.Button(self.f1_edit_entry,
                  text='Ενημέρωση Εγγραφής',
                  command=data.insert_update_entry).pack()

        window_centre_position(self.edit_window)
示例#29
0
    def __init__(self, master, app, *args, **kwargs):
        tk.Frame.__init__(self, master, args, **kwargs)
        self.app = app

        self.rowsPerPageVar = tk.IntVar(self)
        self.colsPerPageVar = tk.IntVar(self)
        self.rowsPerPageVar.set(3)
        self.colsPerPageVar.set(3)

        self.row1 = tk.Frame(self)
        self.row1.pack(fill=tk.X)

        label1 = tk.Label(self.row1, text='Возраст от')
        label1.pack(side=tk.LEFT, pady=5)

        opts = list(range(16, 50))
        self.varAgeFrom = tk.IntVar(self)
        self.varAgeFrom.set(opts[0])
        self.ageFromSel = tk.OptionMenu(self.row1, self.varAgeFrom, *opts)
        self.ageFromSel.pack(side=tk.LEFT, pady=5)
        label2 = tk.Label(self.row1, text='до')
        label2.pack(side=tk.LEFT)
        self.varAgeTo = tk.IntVar(self)
        self.varAgeTo.set(opts[14])
        self.ageToSel = tk.OptionMenu(self.row1, self.varAgeTo, *opts)
        self.ageToSel.pack(side=tk.LEFT)
        label3 = tk.Label(self.row1, text='лет')
        label3.pack(side=tk.LEFT)

        self.varType = tk.StringVar(self)
        self.varType.set('все')
        self.hdTypeSel = tk.OptionMenu(self.row1, self.varType,
                                       *(['все'] + list(hdTypes.keys())))
        self.hdTypeSel.pack(side=tk.LEFT)

        gender_opts = ['all', 'male', 'female', 'None']
        self.varGender = tk.StringVar(self)
        self.varGender.set(gender_opts[0])
        self.genderSel = tk.OptionMenu(self.row1, self.varGender, *gender_opts)
        self.genderSel.pack(side=tk.LEFT)

        self.bioParamsFrame = tk.Frame(self.row1)
        self.bioParamsFrame.pack(side=tk.LEFT)

        self.varBioPhysical = tk.IntVar(self)
        self.varBioIntellectual = tk.IntVar(self)
        self.varBioEmotional = tk.IntVar(self)
        self.varBioPhysical.set(50)
        self.varBioIntellectual.set(50)
        self.varBioEmotional.set(50)
        self.bioPhysicalScale = tk.Scale(self.bioParamsFrame,
                                         from_=0,
                                         to=100,
                                         resolution=1,
                                         orient=tk.HORIZONTAL,
                                         variable=self.varBioPhysical)
        self.bioIntellectualScale = tk.Scale(self.bioParamsFrame,
                                             from_=0,
                                             to=100,
                                             resolution=1,
                                             orient=tk.HORIZONTAL,
                                             variable=self.varBioIntellectual)
        self.bioEmotionalScale = tk.Scale(self.bioParamsFrame,
                                          from_=0,
                                          to=100,
                                          resolution=1,
                                          orient=tk.HORIZONTAL,
                                          variable=self.varBioEmotional)
        self.bioPhysicalScale.grid(row=0, column=0)
        self.bioIntellectualScale.grid(row=0, column=1)
        self.bioEmotionalScale.grid(row=0, column=2)
        bioPhysicalLabel = tk.Label(self.bioParamsFrame,
                                    text='физ',
                                    font='Helvetica 8')
        bioPhysicalLabel.grid(row=1, column=0)
        bioIntellectualLabel = tk.Label(self.bioParamsFrame,
                                        text='инт',
                                        font='Helvetica 8')
        bioIntellectualLabel.grid(row=1, column=1)
        bioEmotionalLabel = tk.Label(self.bioParamsFrame,
                                     text='эмо',
                                     font='Helvetica 8')
        bioEmotionalLabel.grid(row=1, column=2)

        # ---------------------------------------

        self.row2 = tk.Frame(self)
        self.row2.pack(fill=tk.X)

        self.varCity = tk.StringVar(self)
        self.varCity.set('Санкт-Петербург')
        cityEntryLabel = tk.Label(self.row2, text="city:")
        cityEntryLabel.pack(side=tk.LEFT)
        self.cityEntry = tk.Entry(self.row2,
                                  textvariable=self.varCity,
                                  width=32)
        self.cityEntry.pack(side=tk.LEFT, padx=5)

        self.varName = tk.StringVar(self)
        self.varName.set('')
        self.nameEntryLabel = tk.Label(self.row2, text="Name")
        self.nameEntry = tk.Entry(self.row2,
                                  textvariable=self.varName,
                                  width=30)
        self.nameEntry.pack(side=tk.LEFT, padx=5)

        init_month = datetime.now().month - 1
        init_year = datetime.now().year
        if init_month == 0:
            init_month = 12
            init_year -= 1
        self.minLastLoginDate = tkcalendar.DateEntry(self.row2,
                                                     month=init_month,
                                                     year=init_year,
                                                     locale='ru_RU')
        self.minLastLoginDate.pack(side=tk.LEFT)
        tooltip.Hovertip(self.minLastLoginDate, text='Minimum last login date')

        # ---------------------------------------
        self.row3 = tk.Frame(self)
        self.row3.pack(fill=tk.X)

        rowsPerPageList = list(range(1, 10))
        self.rowsPerPage = tk.OptionMenu(self.row3, self.rowsPerPageVar,
                                         *rowsPerPageList)
        colsPerPageList = list(range(2, 6))
        self.colsPerPage = tk.OptionMenu(self.row3, self.colsPerPageVar,
                                         *colsPerPageList)
        tk.Label(self.row3, text='rows').pack(side=tk.LEFT)
        self.rowsPerPage.pack(side=tk.LEFT)
        tk.Label(self.row3, text='cols').pack(side=tk.LEFT)
        self.colsPerPage.pack(side=tk.LEFT)

        self.resizeCardsAreaButton = tk.Button(self.row3,
                                               text='Resize cards area',
                                               command=self.resize_cards_area)
        self.resizeCardsAreaButton.pack(side=tk.LEFT, padx=5)

        self.showSimpleCardsButton = tk.Button(self.row3,
                                               text='All simple cards',
                                               command=self.show_simple_cards)
        self.showSimpleCardsButton.pack(side=tk.LEFT, padx=5)
        self.showFilteredUserCardsButton = tk.Button(
            self.row3,
            text='Show user cards',
            command=self.show_filtered_cards)
        self.showFilteredUserCardsButton.pack(side=tk.LEFT, padx=5)
示例#30
0
    def create_widgets(self):
        self.register_label = Label(self,
                                    text="Aggiungi un'azienda",
                                    font=("bold", 25),
                                    pady=20)
        self.register_label.place(relx=0.5, rely=0.1, anchor=CENTER)

        self.nome_label = Label(self, text="Nome:", font=(18))
        self.nome_label.place(relx=0.3, rely=0.2, anchor=CENTER)
        self.nome_text = StringVar()
        self.nome_textbox = Entry(self, width=20, textvariable=self.nome_text)
        self.nome_textbox.place(relx=0.5, rely=0.2, anchor=CENTER)

        markets = [
            'Other', 'Software', 'Curated Web', 'Analytics', 'E-Commerce',
            'Games', 'Semiconductors', 'Clean Technology', 'Finance', 'Mobile',
            'Biotechnology', 'Search', 'Advertising', 'Security',
            'Health Care', 'Enterprise Software', 'Social Media', 'Messaging',
            'Web Hosting', 'Hardware + Software', 'Education'
        ]
        self.market_label = Label(self, text="Settore:", font=(18))
        self.market_label.place(relx=0.3, rely=0.3, anchor=CENTER)
        self.market_text = StringVar()
        self.market_combobox = ttk.Combobox(self, values=markets)
        self.market_combobox.place(relx=0.5, rely=0.3, anchor=CENTER)

        self.total_investment_label = Label(self,
                                            text="Totale fondi ricevuti:",
                                            font=(18))
        self.total_investment_label.place(relx=0.3, rely=0.4, anchor=CENTER)
        self.total_investment_text = StringVar()
        self.total_investment_textbox = Entry(
            self, width=20, textvariable=self.total_investment_text)
        self.total_investment_textbox.place(relx=0.5, rely=0.4, anchor=CENTER)

        self.funding_rounds_label = Label(self,
                                          text="Numero investimenti ricevuti:",
                                          font=(18))
        self.funding_rounds_label.place(relx=0.3, rely=0.5, anchor=CENTER)
        self.funding_rounds_text = StringVar()
        self.funding_rounds_textbox = Entry(
            self, width=20, textvariable=self.funding_rounds_text)
        self.funding_rounds_textbox.place(relx=0.5, rely=0.5, anchor=CENTER)

        self.founded_at_label = Label(self, text="Fondata nel:", font=(18))
        self.founded_at_label.place(relx=0.3, rely=0.6, anchor=CENTER)
        self.founded_at_cal = tkcalendar.DateEntry(self,
                                                   bg="darkblue",
                                                   fg="white")
        self.founded_at_cal.place(relx=0.5, rely=0.6, anchor=CENTER)

        self.first_funding_at_label = Label(self,
                                            text="Data primo investimento:",
                                            font=(18))
        self.first_funding_at_label.place(relx=0.3, rely=0.7, anchor=CENTER)
        self.first_funding_at_cal = tkcalendar.DateEntry(self,
                                                         bg="darkblue",
                                                         fg="white")
        self.first_funding_at_cal.place(relx=0.5, rely=0.7, anchor=CENTER)

        self.last_funding_at_label = Label(self,
                                           text="Data ultimo investimento:",
                                           font=(18))
        self.last_funding_at_label.place(relx=0.3, rely=0.8, anchor=CENTER)
        self.last_funding_at_cal = tkcalendar.DateEntry(self,
                                                        bg="darkblue",
                                                        fg="white")
        self.last_funding_at_cal.place(relx=0.5, rely=0.8, anchor=CENTER)

        self.inserimento_button = Button(self,
                                         text="Inserisci azienda",
                                         font=(18),
                                         width=20,
                                         command=lambda: self.inserisci())
        self.inserimento_button.place(relx=0.5, rely=0.9, anchor=CENTER)

        self.indietro_button = Button(self,
                                      text="Indietro",
                                      font=(18),
                                      width=10,
                                      command=lambda: self.controller.
                                      show_frame(HomePage.Home, self.username))
        self.indietro_button.place(relx=0.5, rely=0.95, anchor=CENTER)