def __init__(self, properties: LabelFrame) -> None:
     self.frame = Frame(properties)
     Label(self.frame, text='X').grid(column=0,
                                      row=0,
                                      sticky='E',
                                      pady=App.PADDING)
     self.position_x = StringVar(self.frame)
     self.position_x.set(Hole.DEFAULT_POSITION)
     Spinbox(self.frame,
             to=App.MAX_SHEET_WIDTH,
             textvariable=self.position_x,
             width=App.SPINBOX_WIDTH).grid(column=1, row=0, sticky='W')
     Label(self.frame, text='Y').grid(column=0,
                                      row=1,
                                      sticky='E',
                                      pady=App.PADDING)
     self.position_y = StringVar(self.frame)
     self.position_y.set(Hole.DEFAULT_POSITION)
     Spinbox(self.frame,
             to=App.MAX_SHEET_HEIGHT,
             textvariable=self.position_y,
             width=App.SPINBOX_WIDTH).grid(column=1, row=1, sticky='W')
     Label(self.frame, text='Diameter').grid(column=0,
                                             row=2,
                                             sticky='E',
                                             pady=App.PADDING)
     self.diameter = StringVar(self.frame)
     self.diameter.set(Hole.DEFAULT_DIAMETER)
     Spinbox(self.frame,
             to=App.MAX_SHEET_HEIGHT,
             textvariable=self.diameter,
             width=App.SPINBOX_WIDTH).grid(column=1, row=2, sticky='W')
 def __init__(self, properties: LabelFrame) -> None:
     self.marks = {}
     self.data = []
     self.frame = Frame(properties)
     Label(self.frame, text='Column').grid(column=0,
                                           row=0,
                                           sticky='E',
                                           pady=App.PADDING)
     self.column = StringVar(self.frame)
     self.column.set(1)
     Spinbox(self.frame,
             from_=1,
             to=Field.MAX_COLUMN,
             textvariable=self.column,
             width=App.SPINBOX_WIDTH).grid(column=1, row=0, sticky='WE')
     Label(self.frame, text='Start row').grid(column=0,
                                              row=1,
                                              sticky='E',
                                              pady=App.PADDING)
     self.start_row = StringVar(self.frame)
     self.start_row.set(1)
     Spinbox(self.frame,
             from_=1,
             to=Field.MAX_ROW,
             textvariable=self.start_row,
             width=App.SPINBOX_WIDTH).grid(column=1, row=1, sticky='WE')
     Label(self.frame, text='End row').grid(column=0,
                                            row=2,
                                            sticky='E',
                                            pady=App.PADDING)
     self.end_row = StringVar(self.frame)
     self.end_row.set(0)
     Spinbox(self.frame,
             to=Field.MAX_ROW,
             textvariable=self.end_row,
             width=App.SPINBOX_WIDTH).grid(column=1, row=2, sticky='WE')
     Label(self.frame, text='(0 = No limit)').grid(column=2,
                                                   row=2,
                                                   columnspan=2,
                                                   sticky='W')
     Label(self.frame, text='Source').grid(column=0,
                                           row=3,
                                           sticky='E',
                                           pady=App.PADDING)
     self.path = StringVar(self.frame)
     Entry(self.frame, textvariable=self.path).grid(column=1,
                                                    row=3,
                                                    columnspan=3,
                                                    sticky='WE')
     Button(self.frame, text='Select', command=self.select,
            width=5).grid(column=4, row=3, sticky='W')
     Button(self.frame, text='Read', command=self.read).grid(column=1,
                                                             row=4,
                                                             sticky='WE')
     Label(self.frame, text='Values').grid(column=2, row=4, sticky='E')
     self.values_amount = IntVar(self.frame)
     self.values_amount.set(0)
     Label(self.frame, textvariable=self.values_amount).grid(column=3,
                                                             row=4,
                                                             sticky='W')
Exemple #3
0
    def __init__(self, app):
        self.time_label = Label(app.root,
                                textvariable=app.time,
                                anchor=CENTER,
                                foreground='black',
                                background='lightgray',
                                font=('Helvetica', 60))
        self.time_label.pack(fill=BOTH, expand=True)

        validate_command = (app.root.register(self.check), '%P')
        self.entry = Spinbox(app.root,
                             from_=1,
                             to=MAX_COUNT,
                             textvariable=app.count_start,
                             validate='all',
                             validatecommand=validate_command)
        self.entry.pack(fill=X)
        self.entry.focus()

        buttons_frame = Frame(app.root)
        buttons_frame.pack(fill=X)
        self.start_button = Button(buttons_frame,
                                   text='Start',
                                   command=app.start_timer)
        self.stop_button = Button(buttons_frame,
                                  text='Stop',
                                  state=DISABLED,
                                  command=app.stop_timer)
        self.start_button.pack(side=LEFT, fill=X, expand=True)
        self.stop_button.pack(side=RIGHT, fill=X, expand=True)
Exemple #4
0
    def __init__(self, c: ttk.Spinbox, p: param) -> None:
        super().__init__(p)

        self.c: ttk.Spinbox = c
        self.c["state"] = 'readonly'
        c.configure(command=self.onSelectionChanged)

        return
    def __init__(self, properties: LabelFrame) -> None:
        self.frame = Frame(properties)

        Label(self.frame, text='X').grid(column=0,
                                         row=0,
                                         sticky='E',
                                         pady=App.PADDING)
        self.position_x = StringVar(self.frame)
        self.position_x.set(QR.DEFAULT_X)
        Spinbox(self.frame,
                to=App.MAX_SHEET_WIDTH,
                textvariable=self.position_x,
                width=App.SPINBOX_WIDTH).grid(column=1, row=0, sticky='W')
        Label(self.frame, text='Y').grid(column=0,
                                         row=1,
                                         sticky='E',
                                         pady=App.PADDING)
        self.position_y = StringVar(self.frame)
        self.position_y.set(QR.DEFAULT_Y)
        Spinbox(self.frame,
                to=App.MAX_SHEET_HEIGHT,
                textvariable=self.position_y,
                width=App.SPINBOX_WIDTH).grid(column=1, row=1, sticky='W')
        Label(self.frame, text='Size').grid(column=0,
                                            row=2,
                                            sticky='E',
                                            pady=App.PADDING)
        self.size = StringVar(self.frame)
        self.size.set(QR.DEFAULT_SIZE)
        Spinbox(self.frame,
                to=App.MAX_SHEET_HEIGHT,
                textvariable=self.size,
                width=App.SPINBOX_WIDTH).grid(column=1, row=2, sticky='W')
        Label(self.frame, text='Inverse').grid(column=0,
                                               row=3,
                                               sticky='E',
                                               pady=App.PADDING)
        self.inverse = BooleanVar(self.frame)
        self.inverse.set(QR.DEFAULT_INVERSE)
        Checkbutton(self.frame, variable=self.inverse).grid(column=1,
                                                            row=3,
                                                            sticky='W')
        Label(self.frame, text='Padding').grid(column=0,
                                               row=4,
                                               sticky='E',
                                               pady=App.PADDING)
        self.padding = StringVar(self.frame)
        self.padding.set(QR.DEFAULT_PADDING)
        Spinbox(self.frame,
                to=App.MAX_SHEET_HEIGHT,
                textvariable=self.padding,
                width=App.SPINBOX_WIDTH).grid(column=1, row=4, sticky='W')
Exemple #6
0
 def _criar_spinbox(self):
     '''
     Criar Widget spinbox.
     '''
     self._spinbox = Spinbox(self, from_=self.MINIMO, 
                                      to=self.MAXIMO,
                         font=('Arial', 14, 'normal'),
                         width=10)
     
     self._spinbox['command'] = lambda: \
         self.set_atual(self._spinbox.get(), widget=self._spinbox)
     
     self._spinbox.bind('<Return>', lambda e: \
         self.set_atual(self._spinbox.get()))
     
     self._spinbox.pack(side='left', anchor='center')
Exemple #7
0
    def _create_spin(self, param_def) -> Tuple[Callable, Callable, Spinbox]:
        def get():
            value = var.get()
            if p_types == 'float':
                value = float(value)
            elif p_types == 'int':
                value = int(value)
            else:
                pass
            return value

        def set(value):
            wd.set(value)
            return

        p_type = param_def.get('type')
        p_name = param_def.get('name')
        p_types = param_def.get('p_types')
        p_possible_values = param_def.get('p_values')
        p_default_value = param_def.get('default')
        p_values_tuple = parse_possible_values_list_or_range(p_possible_values)
        from_ = p_values_tuple[0]
        to = p_values_tuple[1]
        resolution = p_values_tuple[2]
        var = get_var_by_type(p_types)
        var.set(p_default_value)
        wd = Spinbox(self,
                     name=p_name,
                     from_=from_,
                     to=to,
                     textvariable=var,
                     wrap=True,
                     command=get)
        return get, set, wd
Exemple #8
0
def nacti_cislo(otazka='Zadej číslo'):
    """Zeptá se uživatele na otázku a vrátí odpověď jako celé číslo."""
    root = Tk()
    root.title(otazka)

    entry = Spinbox(root, from_=0, to=100)
    entry.set('0')
    entry.pack(side=LEFT)

    # Předbíháme: vnořená funkce může přistupovat
    # k proměnným "entry" a "root", které jsou
    # lokální pro "vnější" funkci (nacti_cislo)

    def ok_pressed():
        text = entry.get()
        try:
            value = int(text)
        except ValueError:
            entry.set('sem zadej číslo!')
        else:
            root.quit()

    button = Button(root, text="OK", command=ok_pressed)
    button.pack(side=RIGHT)

    root.mainloop()

    value = int(entry.get())
    root.destroy()

    return value
 def __init__(self, properties: LabelFrame) -> None:
     self.frame = Frame(properties)
     Label(self.frame, text='X').grid(column=0,
                                      row=0,
                                      sticky='E',
                                      pady=App.PADDING)
     self.position_x = StringVar(self.frame)
     self.position_x.set(App.DEFAULT_SIGN_WIDTH / 2)
     Spinbox(self.frame,
             to=App.MAX_SHEET_WIDTH,
             textvariable=self.position_x,
             width=App.SPINBOX_WIDTH).grid(column=1, row=0, sticky='W')
     Label(self.frame, text='Y').grid(column=0,
                                      row=1,
                                      sticky='E',
                                      pady=App.PADDING)
     self.position_y = StringVar(self.frame)
     self.position_y.set(App.DEFAULT_SIGN_HEIGHT / 2)
     Spinbox(self.frame,
             to=App.MAX_SHEET_HEIGHT,
             textvariable=self.position_y,
             width=App.SPINBOX_WIDTH).grid(column=1, row=1, sticky='W')
     Label(self.frame, text='Font size').grid(column=0,
                                              row=2,
                                              sticky='E',
                                              pady=App.PADDING)
     self.size = StringVar(self.frame)
     self.size.set(App.DEFAULT_SIGN_HEIGHT / 2)
     Spinbox(self.frame,
             to=App.MAX_SHEET_HEIGHT,
             textvariable=self.size,
             width=App.SPINBOX_WIDTH).grid(column=1, row=2, sticky='W')
     Label(self.frame, text='Align').grid(column=0,
                                          row=3,
                                          sticky='E',
                                          pady=App.PADDING)
     self.align = StringVar(self.frame)
     OptionMenu(self.frame, self.align, Text.ALIGN_OPTIONS[4],
                *Text.ALIGN_OPTIONS).grid(column=1, row=3, sticky='W')
Exemple #10
0
class TimerUi:
    """View"""
    def __init__(self, app):
        self.time_label = Label(app.root,
                                textvariable=app.time,
                                anchor=CENTER,
                                foreground='black',
                                background='lightgray',
                                font=('Helvetica', 60))
        self.time_label.pack(fill=BOTH, expand=True)

        validate_command = (app.root.register(self.check), '%P')
        self.entry = Spinbox(app.root,
                             from_=1,
                             to=MAX_COUNT,
                             textvariable=app.count_start,
                             validate='all',
                             validatecommand=validate_command)
        self.entry.pack(fill=X)
        self.entry.focus()

        buttons_frame = Frame(app.root)
        buttons_frame.pack(fill=X)
        self.start_button = Button(buttons_frame,
                                   text='Start',
                                   command=app.start_timer)
        self.stop_button = Button(buttons_frame,
                                  text='Stop',
                                  state=DISABLED,
                                  command=app.stop_timer)
        self.start_button.pack(side=LEFT, fill=X, expand=True)
        self.stop_button.pack(side=RIGHT, fill=X, expand=True)

    def check(self, new_val):
        return new_val.isdigit() and 1 <= int(new_val) <= MAX_COUNT

    def state_started(self):
        self.stop_button.config(state=NORMAL)
        self.start_button.config(state=DISABLED)
        self.entry.config(state=DISABLED)
        self.time_label.config(foreground='white', background='red')

    def state_stopped(self):
        self.stop_button.config(state=DISABLED)
        self.start_button.config(state=NORMAL)
        self.entry.config(state=NORMAL)
        self.time_label.config(foreground='black', background='lightgray')
Exemple #11
0
    def __init__(self, root):
        """
        Constructor of Config

        :param root: root Tk object
        :type root: Tk
        """
        super().__init__(root)

        self.root = root

        self.geometry("350x300")
        self.geometry("+%d+%d" % (root.winfo_x()+50, root.winfo_y()+25))
        self.minsize(350, 300)

        self.wm_title("Tramet - Settings")

        self.conf = Config.load_file()

        def save(event=None):
            root.buffer_size = buf.get() * 1024 * 1024
            self.conf["buffer_size"] = buf.get() * 1024 * 1024
            self.destroy()

        buf = IntVar()
        buf.set(self.conf.get("buffer_size", 10*1024*1024) // 1024 // 1024)
        Label(self, text="File Buffer size (MB): ").grid(row=0, column=0, padx=(10, 0), pady=(10, 20))
        s = Spinbox(self, from_=1, to=999, textvariable=buf)
        s.grid(row=0, column=1)

        f = Frame(self)
        f.grid(row=1, column=0, columnspan=2, sticky=E)
        ok = Button(f, text="OK", command=save)
        ok.pack(side=RIGHT, padx=10, pady=10)
        cancel = Button(f, text="Cancel", command=self.destroy)
        cancel.pack(side=RIGHT, padx=10, pady=10)
Exemple #12
0
    def __init__(self,app):
        info( ' - initializing module: Spectrogram' )

        self.app = app

        self.frame = Frame(self.app.BOTTOM)
        self.frame.grid( row=0, column=1, pady=(self.app.pady*2,self.app.pady/2) )
        self.axis_frame = Frame(self.app.BOTTOM)
        self.axis_frame.grid( row=0, column=0, sticky='e', pady=(self.app.pady*2,self.app.pady/2) )
        self.canvas_width = self.app.TextGrid.canvas_width
        self.canvas_height = 106
        self.canvas = Canvas(self.frame, width=self.canvas_width, height=self.canvas_height, background='gray', highlightthickness=0)
        self.spectrogram = None
        self.spec_freq_max = DoubleVar()
        self.wl = DoubleVar()
        self.dyn_range = DoubleVar()
        self.clicktime = -1
        self.specClick = False
        self.oldSelected = None
        self.doDefaults()

        #make spinboxes & buttons for spectrogram specs
        self.spinwin = Frame(self.axis_frame)
        #spinboxes
        axis_ceil_box = Spinbox(self.spinwin, textvariable=self.spec_freq_max, command=self.drawSpectrogram, width=7, increment=100, from_=0, to_=100000)
        axis_ceil_box.bind('<Return>',self.drawSpectrogram)
        axis_ceil_box.bind('<Escape>',lambda ev: self.spinwin.focus())
        wl_box = Spinbox(self.spinwin, textvariable=self.wl, command=self.drawSpectrogram, width=7, increment=0.0005, from_=0, to_=1)
        wl_box.bind('<Return>',self.drawSpectrogram)
        wl_box.bind('<Escape>',lambda ev: self.spinwin.focus())
        dyn_range_box = Spinbox(self.spinwin, textvariable=self.dyn_range, command=self.drawSpectrogram, width=7, increment=10, from_=0, to_=10000)
        dyn_range_box.bind('<Return>',self.drawSpectrogram)
        dyn_range_box.bind('<Escape>',lambda ev: self.spinwin.focus())
        #buttons
        default_btn = Button(self.spinwin, text='Standards', command=self.restoreDefaults, takefocus=0)
        apply_btn = Button(self.spinwin, text='Apply', command=self.drawSpectrogram, takefocus=0, width=6)

        # self.axis_frame.create_window(wwidth,self.canvas_height, window=self.spinwin, anchor='ne')
        #grid spinboxes & buttons on subframe
        axis_ceil_box.grid(row=0, columnspan=2, sticky='ne')
        wl_box.grid(row=1, columnspan=2, sticky='ne')
        dyn_range_box.grid(row=2, columnspan=2, sticky='ne')
        default_btn.grid(row=3)
        apply_btn.grid(row=3, column=1)

        self.grid()

        self.canvas.bind('<Button-1>', self.jumpToFrame)
Exemple #13
0
    def build(self):
        """widget construction"""

        fr4 = LabelFrame(self.fr0, text='yiq')
        fr4.grid(column=2, row=0)
        vcmdyiq = root.register(yiq_okay)

        self.cans = []
        sboxes = []
        comps = ['y', 'i', 'q']
        names = ['luma', 'i hue', 'q hue']
        tkvars = [self.yvar, self.ivar, self.qvar]
        froms = [0, -100, -100]
        ticks = [10, 20, 20]

        for ix, comp in enumerate(comps):
            Label(fr4, text=names[ix]).grid(row=3 * ix, column=0)
            Label(fr4, height=1).grid(row=2 + 3 * ix, column=2)
            self.cans.append(
                Canvas(fr4,
                       width=self.canvas_w,
                       height=self.canvas_h,
                       bd=0,
                       highlightthickness=0))
            self.cans[ix].grid(row=3 * ix, column=1)
            TtkScale(fr4,
                     from_=froms[ix],
                     to=100,
                     variable=tkvars[ix],
                     orient='horizontal',
                     length=self.scale_l,
                     command=self.yiqhandle,
                     tickinterval=ticks[ix]).grid(row=1 + 3 * ix,
                                                  column=1,
                                                  sticky='nw')
            sboxes.append(
                Spinbox(fr4,
                        from_=froms[ix],
                        to=100,
                        textvariable=tkvars[ix],
                        validatecommand=(vcmdyiq, '%d', '%P', '%S', froms[ix],
                                         100),
                        validate='key',
                        command=self.yiqhandle,
                        width=5,
                        increment=1))
            sboxes[ix].grid(row=1 + 3 * ix, column=2, sticky='nw')
            sboxes[ix].bind('<KeyRelease>', self.checksyiq)

        # assume initial setting 0,100,100 hsv
        to_colour = yiq_to_rgb(*(30, 100.0, 40.56))
        # print(self.canvas_w)
        draw_gradient(self.cans[0],
                      yiq_to_rgb(0.0, 100.0, 40.56),
                      yiq_to_rgb(100, 100, 40.56),
                      width=self.canvas_w)
        draw_gradient(self.cans[1],
                      yiq_to_rgb(30, -100.0, 40.56),
                      to_colour,
                      width=self.canvas_w)
        draw_gradient(self.cans[2],
                      yiq_to_rgb(30, 100, -100),
                      yiq_to_rgb(30, 100, 100),
                      width=self.canvas_w)

        self.can_yiq = can_yiq = Canvas(fr4,
                                        width=self.space,
                                        height=self.space)
        can_yiq.grid(column=1, row=9, pady=25, sticky='n')
        self.yiqGamut = PhotoImage(file='../../figures/colour_space.png')
        can_yiq.create_image(0, 0, anchor='nw', image=self.yiqGamut)
        self.ring = circle(can_yiq,
                           300.0,
                           210.84,
                           self.ring_radius,
                           width=self.ring_width,
                           activeoutline='#555555',
                           tags='ring')  # 240, 181

        can_yiq.bind('<Button-1>', self.move_ring)
        can_yiq.tag_bind('ring', '<B1-Motion>', self.move_ring)
Exemple #14
0
class Page1(Frame):
    def __init__(self, master):
        Frame.__init__(self, master)
        self.style = Style()

        self.time_frame = LabelFrame(self, text='Time Setting')
        self.hour_label = Label(self.time_frame, text='Hours')
        self.hour_box = Spinbox(self.time_frame, from_=0, to=24)

        self.minute_label = Label(self.time_frame, text='Minutes')
        self.minute_box = Spinbox(self.time_frame, from_=0, to=60)

        self.second_label = Label(self.time_frame, text='Seconds')
        self.second_box = Spinbox(self.time_frame, from_=0, to=60)

        self.break_label = Label(self.time_frame, text='Time During Sessions')
        self.break_var = IntVar()
        self.break_var.set(4)
        self.break_radio_button_3 = Radiobutton(self.time_frame,
                                                text='3 min',
                                                variable=self.break_var,
                                                value=3)
        self.break_radio_button_4 = Radiobutton(self.time_frame,
                                                text='4 min',
                                                variable=self.break_var,
                                                value=4)
        self.break_radio_button_5 = Radiobutton(self.time_frame,
                                                text='5 min',
                                                variable=self.break_var,
                                                value=5)
        self.break_radio_button_6 = Radiobutton(self.time_frame,
                                                text='6 min',
                                                variable=self.break_var,
                                                value=6)
        self.break_radio_button_7 = Radiobutton(self.time_frame,
                                                text='7 min',
                                                variable=self.break_var,
                                                value=7)

        self.name_label = Label(self.time_frame, text='Task Name')
        self.name_entry = Entry(self.time_frame)

        self.reminder_label = Label(self.time_frame, text='Reminder')
        self.reminder_entry = Entry(self.time_frame)

        self.generate_button = Button(self,
                                      text='Generate Task',
                                      command=self.create_task)
        self.save_button = Button(self,
                                  text='Save Configuration',
                                  command=self.save_config)
        self.load_button = Button(self,
                                  text='Load Configuration',
                                  command=self.load_config)
        self.clear_button = Button(self, text='Clear', command=self.clear)

        # GRIDDING OPERATIONS
        self.hour_label.grid(row=1, column=0)
        self.hour_box.grid(row=1, column=1)
        self.minute_label.grid(row=1, column=2)
        self.minute_box.grid(row=1, column=3)
        self.second_label.grid(row=1, column=4)
        self.second_box.grid(row=1, column=5)

        self.break_label.grid(row=2, column=0)
        self.break_radio_button_3.grid(row=2, column=1)
        self.break_radio_button_4.grid(row=2, column=2)
        self.break_radio_button_5.grid(row=2, column=3)
        self.break_radio_button_6.grid(row=2, column=4)
        self.break_radio_button_7.grid(row=2, column=5)

        self.name_label.grid(row=3, column=0)
        self.name_entry.grid(row=3, column=1, columnspan=5, sticky='ew')
        self.reminder_label.grid(row=4, column=0)
        self.reminder_entry.grid(row=4, column=1, columnspan=5, sticky='ew')

        self.generate_button.grid(row=1, column=0, sticky='snew')
        self.save_button.grid(row=2, column=0, sticky='snew')
        self.load_button.grid(row=3, column=0, sticky='snew')
        self.clear_button.grid(row=4, column=0, sticky='snew')

        self.time_frame.grid(row=0, column=0)
        self.grid(row=0, column=0)

    def create_task(self):
        # Task signature: (task_name, task_duration, break_duration, task_reminder=None)
        hours = self.hour_box.get()
        minutes = self.minute_box.get()
        seconds = self.second_box.get()
        break_time = self.break_var.get()
        if hours and seconds and minutes:
            total_time = int(hours) * 3600 + int(minutes) * 60 + int(seconds)
            return Task(self.name_entry.get(), total_time, break_time)
        elif hours == 's':
            return Task('sample task', 5, 3 / 60)

    def save_config(self):
        with open('config.pickle', 'wb+') as config:
            pickle.dump(self.create_task(), config)

    def load_config(self):
        with open('config.pickle', 'rb') as config:
            unpickled_task = pickle.load(config)
            Task.tasks.append(unpickled_task)

    def clear(self):
        self.name_entry.delete(0, 'end')
        self.reminder_entry.delete(0, 'end')
        self.hour_box.set('')
        self.minute_box.set('')
        self.second_box.set('')
Exemple #15
0
    def __init__(self, master):
        Frame.__init__(self, master)
        self.style = Style()

        self.time_frame = LabelFrame(self, text='Time Setting')
        self.hour_label = Label(self.time_frame, text='Hours')
        self.hour_box = Spinbox(self.time_frame, from_=0, to=24)

        self.minute_label = Label(self.time_frame, text='Minutes')
        self.minute_box = Spinbox(self.time_frame, from_=0, to=60)

        self.second_label = Label(self.time_frame, text='Seconds')
        self.second_box = Spinbox(self.time_frame, from_=0, to=60)

        self.break_label = Label(self.time_frame, text='Time During Sessions')
        self.break_var = IntVar()
        self.break_var.set(4)
        self.break_radio_button_3 = Radiobutton(self.time_frame,
                                                text='3 min',
                                                variable=self.break_var,
                                                value=3)
        self.break_radio_button_4 = Radiobutton(self.time_frame,
                                                text='4 min',
                                                variable=self.break_var,
                                                value=4)
        self.break_radio_button_5 = Radiobutton(self.time_frame,
                                                text='5 min',
                                                variable=self.break_var,
                                                value=5)
        self.break_radio_button_6 = Radiobutton(self.time_frame,
                                                text='6 min',
                                                variable=self.break_var,
                                                value=6)
        self.break_radio_button_7 = Radiobutton(self.time_frame,
                                                text='7 min',
                                                variable=self.break_var,
                                                value=7)

        self.name_label = Label(self.time_frame, text='Task Name')
        self.name_entry = Entry(self.time_frame)

        self.reminder_label = Label(self.time_frame, text='Reminder')
        self.reminder_entry = Entry(self.time_frame)

        self.generate_button = Button(self,
                                      text='Generate Task',
                                      command=self.create_task)
        self.save_button = Button(self,
                                  text='Save Configuration',
                                  command=self.save_config)
        self.load_button = Button(self,
                                  text='Load Configuration',
                                  command=self.load_config)
        self.clear_button = Button(self, text='Clear', command=self.clear)

        # GRIDDING OPERATIONS
        self.hour_label.grid(row=1, column=0)
        self.hour_box.grid(row=1, column=1)
        self.minute_label.grid(row=1, column=2)
        self.minute_box.grid(row=1, column=3)
        self.second_label.grid(row=1, column=4)
        self.second_box.grid(row=1, column=5)

        self.break_label.grid(row=2, column=0)
        self.break_radio_button_3.grid(row=2, column=1)
        self.break_radio_button_4.grid(row=2, column=2)
        self.break_radio_button_5.grid(row=2, column=3)
        self.break_radio_button_6.grid(row=2, column=4)
        self.break_radio_button_7.grid(row=2, column=5)

        self.name_label.grid(row=3, column=0)
        self.name_entry.grid(row=3, column=1, columnspan=5, sticky='ew')
        self.reminder_label.grid(row=4, column=0)
        self.reminder_entry.grid(row=4, column=1, columnspan=5, sticky='ew')

        self.generate_button.grid(row=1, column=0, sticky='snew')
        self.save_button.grid(row=2, column=0, sticky='snew')
        self.load_button.grid(row=3, column=0, sticky='snew')
        self.clear_button.grid(row=4, column=0, sticky='snew')

        self.time_frame.grid(row=0, column=0)
        self.grid(row=0, column=0)
Exemple #16
0
if_characteristics_text.grid(column=0, row=4, sticky=W, padx=10, pady=10)
if_characteristics.grid(column=1, row=4, sticky=W, padx=10, pady=10)

# Отобразить лого (Sale New)
if_create_logo_text = Label(window, text='Отображать SALE NEW')
if_create_logo = Combobox(window)
if_create_logo['value'] = ("Отобразить", "Не отображать")
if_create_logo.current(1)
if_create_logo_text.grid(column=0, row=5, sticky=W, padx=10, pady=10)
if_create_logo.grid(column=1, row=5, sticky=W, padx=10, pady=10)

# Надбавка
var_r = IntVar()
var_r.set(0)
if_price_resize_text = Label(window, text="Надбавка")
if_price_resize = Spinbox(window, from_=0, to=100, width=5, textvariable=var_r)
if_price_resize_text.grid(column=0, row=6, sticky=W, padx=10, pady=10)
if_price_resize.grid(column=1, row=6, sticky=W, padx=10, pady=10)

# Множитель курса
price_resize_text = Label(window, text="Множитель курса")
price_resize = Spinbox(window,
                       from_=0,
                       to=100,
                       format="%10.2f",
                       increment=0.01,
                       width=7)
price_resize.set('{:10.2f}'.format(1))
price_resize_text.grid(column=0, row=7, sticky=W, padx=10, pady=10)
price_resize.grid(column=1, row=7, sticky=W, padx=10, pady=10)
	minus_this2=hr
	old_data1.append(minus_this)
	old_data2.append(minus_this1)
	old_data3.append(minus_this2)
	minus()
def set_timer_ye():
	if sec_data.get()==0 and min_data.get()==0 and hr_data.get()==0:
		messagebox.showinfo('Info','Please Add More Time.')
	else:
		messagebox.showinfo('Info','Timer Set Successfully')
		start_countdown(sec_data.get(),min_data.get(),hr_data.get())
head=Label(root,text='Timer',font=('Courier',30,'bold'))
head.place(x=125)
sec_label_indict=Label(root,text='Seconds:',font=('Courier',20,'bold'))
sec_label_indict.place(x=135+135,y=55)
sec_spinbox=Spinbox(root,state='readonly',textvariable=sec_data,from_=0,to=59,font=('Arial Rounded MT bold',20,'bold'),width=5)
sec_spinbox.place(x=135+135,y=95)
min_label_indict=Label(root,text='Minutes:',font=('Courier',20,'bold'))
min_label_indict.place(x=135,y=55)
min_spinbox=Spinbox(root,state='readonly',textvariable=min_data,from_=0,to=59,font=('Arial Rounded MT bold',20,'bold'),width=5)
min_spinbox.place(x=135,y=95)
hr_label_indict=Label(root,text='Hours:',font=('Courier',20,'bold'))
hr_label_indict.place(x=1+10,y=55)
hr_spinbox=Spinbox(root,state='readonly',textvariable=hr_data,from_=0,to=99,font=('Arial Rounded MT bold',20,'bold'),width=5)
hr_spinbox.place(x=1,y=95)
set_timer=Button(root,text='Set Timer',command=set_timer_ye,width=15)
set_timer.place(x=130,y=135)
b1=Button(root,text='Reset',command=reset)
b2=Button(root,text='Pause',command=pause_)
b3=Button(root,text='Start',command=Start,state='disabled')
b4=Button(root,text='Cancel',comman=Cancel)
Exemple #18
0
    def build(self):
        """widget construction

        Parameters
        ----------
        None

        Results
        -------
        None
        """

        fr4 = LabelFrame(self.fr0, text='hsv')
        fr4.grid(column=2, row=0)

        hl = Label(fr4, text='hue  ')
        hl.grid(column=0, row=0, sticky='s')

        self.hcan = Canvas(fr4,
                           width=self.canvas_w,
                           height=self.canvas_h,
                           bd=0,
                           highlightthickness=0)
        self.hcan.grid(column=1, row=0, sticky='s')

        hsc = TtkScale(fr4,
                       from_=0,
                       to=360,
                       variable=self.hvar,
                       orient='horizontal',
                       length=self.scale_l,
                       command=self.hhandle,
                       tickinterval=30)
        hsc.grid(column=1, row=1, sticky='nw')

        vcmdsb = root.register(sb_okay)

        hsb = Spinbox(fr4,
                      from_=0,
                      to=360,
                      textvariable=self.hvar,
                      validate='key',
                      validatecommand=(vcmdsb, '%P', '%S', 360),
                      command=self.hhandle,
                      width=5)
        hsb.grid(column=2, row=1, sticky='nw')
        hsb.bind('<KeyRelease>', self.checksbh)

        hel = Label(fr4, height=1)
        hel.grid(column=2, row=2)

        sl = Label(fr4, text='sat  ')
        sl.grid(column=0, row=3)

        self.scan = Canvas(fr4,
                           width=self.canvas_w,
                           height=self.canvas_h,
                           bd=0,
                           highlightthickness=0)
        self.scan.grid(column=1, row=3, sticky='s')

        ssc = TtkScale(fr4,
                       from_=0,
                       to=100,
                       variable=self.svar,
                       orient='horizontal',
                       length=self.scale_l,
                       command=self.shandle,
                       tickinterval=10)
        ssc.grid(column=1, row=4, sticky='nw')

        ssb = Spinbox(fr4,
                      from_=0,
                      to=100,
                      textvariable=self.svar,
                      validate='key',
                      validatecommand=(vcmdsb, '%P', '%S', 100),
                      command=self.shandle,
                      width=5)
        ssb.grid(column=2, row=4, sticky='nw')
        ssb.bind('<KeyRelease>', self.checksb100)

        sel = Label(fr4, height=1)
        sel.grid(column=2, row=5)

        vl = Label(fr4, text='value')
        vl.grid(column=0, row=6, sticky='s')

        self.vcan = Canvas(fr4,
                           width=self.canvas_w,
                           height=self.canvas_h,
                           bd=0,
                           highlightthickness=0)
        self.vcan.grid(column=1, row=6, sticky='n')

        vsc = TtkScale(fr4,
                       from_=0,
                       to=100,
                       variable=self.vvar,
                       orient='horizontal',
                       length=self.scale_l,
                       command=self.vhandle,
                       tickinterval=10)
        vsc.grid(column=1, row=7, sticky='nw')

        vsb = Spinbox(fr4,
                      from_=0,
                      to=100,
                      textvariable=self.vvar,
                      validate='key',
                      validatecommand=(vcmdsb, '%P', '%S', 100),
                      command=self.vhandle,
                      width=5)
        vsb.grid(column=2, row=7, sticky='nw')
        vsb.bind('<KeyRelease>', self.checksb100)

        vel = Label(fr4, height=1)
        vel.grid(column=2, row=8)

        # assume initial setting 0,100,100 hsv
        to_colour = hsv_to_rgb(*(0, 100, 100))

        hue_gradient(self.hcan, width=self.canvas_w)
        draw_gradient(self.scan, (255, 255, 255),
                      to_colour,
                      width=self.canvas_w)
        draw_gradient(self.vcan, (0, 0, 0), to_colour, width=self.canvas_w)
Exemple #19
0
    def build(self):
        """widget construction"""

        lf1 = LabelFrame(self.fr0, text='rgb')
        lf1.grid(column=0, row=0, sticky='new')
        lf1.columnconfigure(1, weight=1)
        vcmdsb = root.register(sb_okay)

        self.rgbcans = []
        rgbsboxes = []
        rgbcomps = ['r', 'g', 'b', 'a']
        rgbnames = ['red  ', 'green', 'blue ', 'alpha']
        rgbvars = [self.rvar, self.gvar, self.bvar, self.avar]
        rgbhandles = [
            self.rgbhandle, self.rgbhandle, self.rgbhandle, self.ahandle
        ]
        binds = [self.checksb, self.checksb, self.checksb, self.checksba]

        for ix, comp in enumerate(rgbcomps):
            Label(lf1, text=rgbnames[ix]).grid(row=3 * ix, column=0)
            Label(lf1).grid(row=2 + 3 * ix, column=2)
            self.rgbcans.append(
                Canvas(lf1,
                       height=self.canvas_h,
                       width=self.canvas_w,
                       bd=0,
                       highlightthickness=0))
            self.rgbcans[ix].grid(row=3 * ix,
                                  column=1,
                                  sticky='ew',
                                  padx=self.sliderlength // 2)
            self.rgbcans[ix].bind("<Configure>",
                                  partial(self.resize, can=self.rgbcans[ix]))

            TtkScale(lf1,
                     self.scale_l,
                     from_=0,
                     to=255,
                     variable=rgbvars[ix],
                     orient='horizontal',
                     command=rgbhandles[ix],
                     tickinterval=20).grid(row=1 + 3 * ix,
                                           column=1,
                                           sticky='new')
            rgbsboxes.append(
                Spinbox(lf1,
                        from_=0,
                        to=255,
                        textvariable=rgbvars[ix],
                        validate='key',
                        validatecommand=(vcmdsb, '%d', '%P', '%S', 0, 255),
                        command=rgbhandles[ix],
                        width=5))
            rgbsboxes[ix].grid(row=1 + 3 * ix, column=2, sticky='nw')
            rgbsboxes[ix].bind('<KeyRelease>', binds[ix])

        lf3 = LabelFrame(self.fr0, text='colour mix')
        lf3.grid(column=1, row=0, sticky='nw')

        self.cmcan = cmcan = Canvas(lf3,
                                    width=30,
                                    height=30,
                                    bd=0,
                                    highlightthickness=0)
        cmcan.grid(column=0, row=0, sticky='n', columnspan=2)
        cmcan.grid_propagate(0)
        vdraw_gradient(self.cmcan, (255, 0, 0), alpha=255)

        cml = Label(lf3, text='hash\nvalue')
        cml.grid(column=0, row=1)

        vcmd = root.register(is_okay)
        self.en = en = Entry(lf3,
                             width=8,
                             validate='key',
                             validatecommand=(vcmd, '%i', '%P', '%S'),
                             textvariable=self.evar)
        en.grid(column=1, row=1)
        en.bind('<KeyRelease>', self.checkhash)

        lf5 = LabelFrame(lf3,
                         text='related colours')  # style='Width.Tlabelframe'
        lf5.grid(column=0, row=2, sticky='nw', columnspan=2)

        self.rcls = []
        self.rccans = []
        relateds = [0, 20, 40, 60, 80, 100]
        rtexts = ['0% Y', '20% Y', '40% Y', '60% Y', '80% Y', '100% Y']

        for ix, rel in enumerate(relateds):
            Label(lf5, text=rtexts[ix]).grid(row=1 + 2 * ix,
                                             column=0,
                                             sticky='n')
            self.rcls.append(Label(lf5))
            self.rcls[ix].grid(row=1 + 2 * ix, column=1, sticky='n')
            self.rccans.append(
                Canvas(lf5, width=30, height=30, bd=0, highlightthickness=0))
            self.rccans[ix].grid(row=2 * ix,
                                 column=0,
                                 sticky='n',
                                 columnspan=2)

        self.cccan = Canvas(lf5,
                            width=30,
                            height=30,
                            bd=0,
                            highlightthickness=0)
        self.cccan.grid(column=0, row=12, sticky='n', columnspan=2)

        self.ccla = Label(lf5, text="comp'y")
        self.ccla.grid(column=0, row=13, sticky='n')

        self.ccl = Label(lf5, text="")
        self.ccl.grid(column=1, row=13, sticky='n')

        draw_gradient(self.rgbcans[0], (0, 0, 0), (255, 0, 0),
                      width=self.canvas_w)
        draw_gradient(self.rgbcans[1], (255, 0, 0), (255, 255, 0),
                      width=self.canvas_w)
        draw_gradient(self.rgbcans[2], (255, 0, 0), (255, 0, 255),
                      width=self.canvas_w)
        draw_agradient(self.rgbcans[3], (127, 127, 127), (255, 0, 0),
                       width=self.canvas_w)

        lf4 = LabelFrame(self.fr0, text='yiq')
        lf4.grid(column=2, row=0, sticky='ew')
        lf4.columnconfigure(1, weight=1)
        vcmdyiq = root.register(yiq_okay)

        self.cans = []
        sboxes = []
        comps = ['y', 'i', 'q']
        names = ['luma', 'i hue', 'q hue']
        tkvars = [self.yvar, self.ivar, self.qvar]
        handles = [self.yhandle, self.iqhandle, self.iqhandle]
        froms = [0, -100, -100]
        ticks = [10, 20, 20]

        for ix, comp in enumerate(comps):
            Label(lf4, text=names[ix]).grid(row=3 * ix, column=0)
            Label(lf4).grid(row=2 + 3 * ix, column=2)
            self.cans.append(
                Canvas(lf4,
                       width=self.canvas_w,
                       height=self.canvas_h,
                       bd=0,
                       highlightthickness=0))
            self.cans[ix].grid(row=3 * ix,
                               column=1,
                               sticky='ew',
                               padx=self.sliderlength // 2)
            self.cans[ix].bind("<Configure>",
                               partial(self.resize_yiq, can=self.cans[ix]))
            TtkScale(lf4,
                     from_=froms[ix],
                     to=100,
                     variable=tkvars[ix],
                     orient='horizontal',
                     length=self.scale_l,
                     command=handles[ix],
                     tickinterval=ticks[ix]).grid(row=1 + 3 * ix,
                                                  column=1,
                                                  sticky='new')
            sboxes.append(
                Spinbox(lf4,
                        from_=froms[ix],
                        to=100,
                        textvariable=tkvars[ix],
                        validatecommand=(vcmdyiq, '%d', '%P', '%S', froms[ix],
                                         100),
                        validate='key',
                        command=handles[ix],
                        width=5,
                        increment=1))
            sboxes[ix].grid(row=1 + 3 * ix, column=2, sticky='nw')
            sboxes[ix].bind('<KeyRelease>', self.checksyiq)

        # assume initial setting 30,100.0,40.56 yiq
        to_colour = yiq_to_rgb(*(30, 100.0, 40.56))
        # print(self.canvas_w)
        draw_gradient(self.cans[0],
                      yiq_to_rgb(0.0, 100.0, 40.56),
                      yiq_to_rgb(100, 100, 40.56),
                      width=self.canvas_w)
        draw_gradient(self.cans[1],
                      yiq_to_rgb(30, -100.0, 40.56),
                      to_colour,
                      width=self.canvas_w)
        draw_gradient(self.cans[2],
                      yiq_to_rgb(30, 100, -100),
                      yiq_to_rgb(30, 100, 100),
                      width=self.canvas_w)

        self.related(30, 100.0, 40.56)

        self.canYiq = canYiq = Canvas(lf4, width=self.space, height=self.space)
        canYiq.grid(column=0, row=9, columnspan=3, pady=25, sticky='n')
        self.yiqGamut = PhotoImage(file='../../figures/colour_space.png')
        canYiq.create_image(0, 0, anchor='nw', image=self.yiqGamut)
        self.ring = circle(canYiq,
                           300.0,
                           210.84,
                           self.ring_radius,
                           width=self.ring_width,
                           activeoutline='#555555',
                           tags='ring')

        canYiq.bind('<Button-1>', self.move_ring)
        canYiq.tag_bind('ring', '<B1-Motion>', self.move_ring)
Exemple #20
0
class Window:
    def __init__(self, workstation: WorkstationSettings,
                 wallpaper: Image.Image):
        self._root = Tk()
        self._root.title("wallcrop")
        self._root.minsize(*_MINSIZE)

        self._show_monitor_labels = BooleanVar(self._root, value=False)
        self._show_unselected_area = BooleanVar(self._root, value=True)

        frame = Frame(self._root, padding=_PADDING)
        frame.grid(column=0, row=0, sticky="n w s e")
        self._root.columnconfigure(0, weight=1)  # type: ignore
        self._root.rowconfigure(0, weight=1)  # type: ignore

        frame_top = Frame(frame)
        frame_top.grid(column=0, row=0, sticky="n w s e")

        frame_bot = Frame(frame)
        frame_bot.grid(column=0, row=2, sticky="n w s e")

        self._selection = Selection(aspect_ratio=np.divide(*wallpaper.size))
        self._selection.register_onchange_handler(self._reset_spinbox_values)

        self._selection_widget = SelectionWidget(
            parent=frame,
            workstation=workstation,
            wallpaper=wallpaper,
            selection=self._selection,
        )
        self._selection_widget.set_show_monitor_labels(
            self._show_monitor_labels.get())
        self._selection_widget.set_show_unselected_area(
            self._show_unselected_area.get())
        self._selection_widget.grid(column=0,
                                    row=1,
                                    sticky="n w s e",
                                    pady=_PADDING)
        frame.columnconfigure(0, weight=1)  # type: ignore
        frame.rowconfigure(1, weight=1)  # type: ignore

        label_wallpaper = Label(frame_top, text=workstation.name)
        label_wallpaper.grid(column=0, row=0)

        # Center columns 1-6 on frame_bot.
        frame_bot.columnconfigure(0, weight=1)  # type: ignore
        frame_bot.columnconfigure(7, weight=1)  # type: ignore

        # TODO: Figure out how to not have spinbox show zero when using
        #  increment/decrement buttons.
        label_selection_position_x = Label(frame_bot, text="X: ")
        label_selection_position_x.grid(column=1, row=0)
        self._spinbox_selection_position_x = Spinbox(frame_bot,
                                                     width=5,
                                                     validate="focusout")
        self._spinbox_selection_position_x.grid(column=2, row=0)

        label_selection_position_y = Label(frame_bot, text="  Y: ")
        label_selection_position_y.grid(column=3, row=0)
        self._spinbox_selection_position_y = Spinbox(frame_bot,
                                                     width=5,
                                                     validate="focusout")
        self._spinbox_selection_position_y.grid(column=4, row=0)

        label_selection_zoom = Label(frame_bot, text="  Zoom: ")
        label_selection_zoom.grid(column=5, row=0)
        self._spinbox_selection_zoom = Spinbox(frame_bot,
                                               width=5,
                                               validate="focusout")
        self._spinbox_selection_zoom.grid(column=6, row=0)

        self._bind_actions()
        self._set_up_menubar()
        self._reset_spinbox_values()

    def _bind_actions(self) -> None:
        self._root.bind("<Escape>", lambda _event: self.quit())
        self._root.bind("<q>", lambda _event: self.quit())

        self._root.bind(
            "<m>",
            lambda _event: self._show_monitor_labels.set(not (
                self._show_monitor_labels.get())),
        )
        self._root.bind(
            "<n>",
            lambda _event: self._show_unselected_area.set(not (
                self._show_unselected_area.get())),
        )

        self._root.bind("<i>", lambda _event: self._selection.zoom_increase())
        self._root.bind(
            "<I>", lambda _event: self._selection.zoom_increase(precise=True))

        self._root.bind("<o>", lambda _event: self._selection.zoom_decrease())
        self._root.bind(
            "<O>", lambda _event: self._selection.zoom_decrease(precise=True))

        self._root.bind("<h>", lambda _event: self._selection.move_left())
        self._root.bind("<H>",
                        lambda _event: self._selection.move_left(precise=True))
        self._root.bind("<Left>", lambda _event: self._selection.move_left())
        self._root.bind("<Shift-Left>",
                        lambda _event: self._selection.move_left(precise=True))

        self._root.bind("<l>", lambda _event: self._selection.move_right())
        self._root.bind(
            "<L>", lambda _event: self._selection.move_right(precise=True))
        self._root.bind("<Right>", lambda _event: self._selection.move_right())
        self._root.bind(
            "<Shift-Right>",
            lambda _event: self._selection.move_right(precise=True))

        self._root.bind("<k>", lambda _event: self._selection.move_up())
        self._root.bind("<K>",
                        lambda _event: self._selection.move_up(precise=True))
        self._root.bind("<Up>", lambda _event: self._selection.move_up())
        self._root.bind("<Shift-Up>",
                        lambda _event: self._selection.move_up(precise=True))

        self._root.bind("<j>", lambda _event: self._selection.move_down())
        self._root.bind("<J>",
                        lambda _event: self._selection.move_down(precise=True))
        self._root.bind("<Down>", lambda _event: self._selection.move_down())
        self._root.bind("<Shift-Down>",
                        lambda _event: self._selection.move_down(precise=True))

        self._spinbox_selection_position_x.configure(
            validatecommand=lambda *_args: self._set_selection_position_x())
        self._spinbox_selection_position_x.bind(
            "<Return>",
            lambda _event: self._set_selection_position_x()  # type: ignore
        )
        self._spinbox_selection_position_x.bind(
            "<<Decrement>>", lambda _event: self._selection.move_left())
        self._spinbox_selection_position_x.bind(
            "<<Increment>>", lambda _event: self._selection.move_right())

        self._spinbox_selection_position_y.configure(
            validatecommand=lambda *_args: self._set_selection_position_y())
        self._spinbox_selection_position_y.bind(
            "<Return>",
            lambda _event: self._set_selection_position_y()  # type: ignore
        )
        self._spinbox_selection_position_y.bind(
            "<<Decrement>>", lambda _event: self._selection.move_up())
        self._spinbox_selection_position_y.bind(
            "<<Increment>>", lambda _event: self._selection.move_down())

        self._spinbox_selection_zoom.configure(
            validatecommand=lambda *_args: self._set_selection_zoom())
        self._spinbox_selection_zoom.bind(
            "<Return>",
            lambda _event: self._set_selection_zoom()  # type: ignore
        )
        self._spinbox_selection_zoom.bind(
            "<<Decrement>>", lambda _event: self._selection.zoom_decrease())
        self._spinbox_selection_zoom.bind(
            "<<Increment>>", lambda _event: self._selection.zoom_increase())

        self._show_monitor_labels.trace_add(
            "write",
            lambda *_args: self._selection_widget.set_show_monitor_labels(
                self._show_monitor_labels.get()),
        )
        self._show_unselected_area.trace_add(
            "write",
            lambda *_args: self._selection_widget.set_show_unselected_area(
                self._show_unselected_area.get()),
        )

    def _set_up_menubar(self) -> None:
        # TODO: check that this look good on macOS, as described here:
        #   https://tkdocs.com/tutorial/menus.html#platformmenus

        self._root.option_add("*tearOff", False)

        menu = Menu(self._root)

        menu_file = Menu(menu)
        menu_file.add_command(  # type: ignore
            label="Quit",
            underline=0,
            accelerator="Q, Escape",
            command=self.quit)
        menu.add_cascade(menu=menu_file, label="File",
                         underline=0)  # type: ignore

        menu_edit = Menu(menu)
        menu_edit.add_command(  # type: ignore
            label="Move Left",
            underline=5,
            accelerator="H, Left",
            command=self._selection.move_left,
        )
        menu_edit.add_command(  # type: ignore
            label="Move Right",
            underline=5,
            accelerator="L, Right",
            command=self._selection.move_right,
        )
        menu_edit.add_command(  # type: ignore
            label="Move Up",
            underline=5,
            accelerator="K, Up",
            command=self._selection.move_up,
        )
        menu_edit.add_command(  # type: ignore
            label="Move Down",
            underline=5,
            accelerator="J, Down",
            command=self._selection.move_down,
        )
        menu_edit.add_separator()  # type: ignore
        menu_edit.add_command(  # type: ignore
            label="Increase Zoom",
            underline=0,
            accelerator="I",
            command=self._selection.zoom_increase,
        )
        menu_edit.add_command(  # type: ignore
            label="Decrease Zoom",
            underline=10,
            accelerator="O",
            command=self._selection.zoom_decrease,
        )
        menu.add_cascade(menu=menu_edit, label="Edit",
                         underline=0)  # type: ignore

        menu_view = Menu(menu)
        menu_view.add_checkbutton(  # type: ignore
            label="Label Monitors",
            variable=self._show_monitor_labels,
            underline=6,
            accelerator="M",
        )
        menu_view.add_checkbutton(  # type: ignore
            label="Show Unselected",
            variable=self._show_unselected_area,
            underline=6,
            accelerator="N",
        )
        menu.add_cascade(menu=menu_view, label="View",
                         underline=0)  # type: ignore

        menu_help = Menu(menu, name="help")
        menu_help.add_command(  # type: ignore
            label="About Wallcrop",
            underline=0,
            command=lambda: messagebox.showinfo(
                parent=self._root,
                title="About Wallcrop",
                message=f"Wallcrop {wallcrop.__version__}",
                detail=("Copyright 2021 Lukas Schmelzeisen.\n"
                        "Licensed under the Apache License, Version 2.0.\n"
                        "https://github.com/lschmelzeisen/wallcrop/"),
            ),
        )
        menu.add_cascade(menu=menu_help, label="Help",
                         underline=3)  # type: ignore

        self._root["menu"] = menu

    def mainloop(self) -> None:
        self._root.mainloop()

    def quit(self) -> None:
        self._root.destroy()

    def _set_selection_position_x(self) -> bool:
        try:
            value = float(
                self._spinbox_selection_position_x.get())  # type: ignore
        except ValueError:
            self._spinbox_selection_position_x.set(self._selection.position[0])
            return False
        self._selection.set_position(
            np.array((value, self._selection.position[1])))
        return True

    def _set_selection_position_y(self) -> bool:
        try:
            value = float(
                self._spinbox_selection_position_y.get())  # type: ignore
        except ValueError:
            self._spinbox_selection_position_y.set(self._selection.position[1])
            return False
        self._selection.set_position(
            np.array((self._selection.position[0], value)))
        return True

    def _set_selection_zoom(self) -> bool:
        try:
            value = float(self._spinbox_selection_zoom.get())  # type: ignore
        except ValueError:
            self._spinbox_selection_zoom.set(self._selection.zoom)
            return False
        self._selection.set_zoom(value)
        return True

    def _reset_spinbox_values(self) -> None:
        self._spinbox_selection_position_x.set(
            f"{self._selection.position[0]:.3f}")
        self._spinbox_selection_position_y.set(
            f"{self._selection.position[1]:.3f}")
        self._spinbox_selection_zoom.set(f"{self._selection.zoom:.3f}")
Exemple #21
0
    def __init__(self, workstation: WorkstationSettings,
                 wallpaper: Image.Image):
        self._root = Tk()
        self._root.title("wallcrop")
        self._root.minsize(*_MINSIZE)

        self._show_monitor_labels = BooleanVar(self._root, value=False)
        self._show_unselected_area = BooleanVar(self._root, value=True)

        frame = Frame(self._root, padding=_PADDING)
        frame.grid(column=0, row=0, sticky="n w s e")
        self._root.columnconfigure(0, weight=1)  # type: ignore
        self._root.rowconfigure(0, weight=1)  # type: ignore

        frame_top = Frame(frame)
        frame_top.grid(column=0, row=0, sticky="n w s e")

        frame_bot = Frame(frame)
        frame_bot.grid(column=0, row=2, sticky="n w s e")

        self._selection = Selection(aspect_ratio=np.divide(*wallpaper.size))
        self._selection.register_onchange_handler(self._reset_spinbox_values)

        self._selection_widget = SelectionWidget(
            parent=frame,
            workstation=workstation,
            wallpaper=wallpaper,
            selection=self._selection,
        )
        self._selection_widget.set_show_monitor_labels(
            self._show_monitor_labels.get())
        self._selection_widget.set_show_unselected_area(
            self._show_unselected_area.get())
        self._selection_widget.grid(column=0,
                                    row=1,
                                    sticky="n w s e",
                                    pady=_PADDING)
        frame.columnconfigure(0, weight=1)  # type: ignore
        frame.rowconfigure(1, weight=1)  # type: ignore

        label_wallpaper = Label(frame_top, text=workstation.name)
        label_wallpaper.grid(column=0, row=0)

        # Center columns 1-6 on frame_bot.
        frame_bot.columnconfigure(0, weight=1)  # type: ignore
        frame_bot.columnconfigure(7, weight=1)  # type: ignore

        # TODO: Figure out how to not have spinbox show zero when using
        #  increment/decrement buttons.
        label_selection_position_x = Label(frame_bot, text="X: ")
        label_selection_position_x.grid(column=1, row=0)
        self._spinbox_selection_position_x = Spinbox(frame_bot,
                                                     width=5,
                                                     validate="focusout")
        self._spinbox_selection_position_x.grid(column=2, row=0)

        label_selection_position_y = Label(frame_bot, text="  Y: ")
        label_selection_position_y.grid(column=3, row=0)
        self._spinbox_selection_position_y = Spinbox(frame_bot,
                                                     width=5,
                                                     validate="focusout")
        self._spinbox_selection_position_y.grid(column=4, row=0)

        label_selection_zoom = Label(frame_bot, text="  Zoom: ")
        label_selection_zoom.grid(column=5, row=0)
        self._spinbox_selection_zoom = Spinbox(frame_bot,
                                               width=5,
                                               validate="focusout")
        self._spinbox_selection_zoom.grid(column=6, row=0)

        self._bind_actions()
        self._set_up_menubar()
        self._reset_spinbox_values()
def set_config():
    sys_para = sys.argv
    file_path = os.path.split(sys_para[0])[0]
    gui = False
    if platform.uname()[0] == 'Windows':  # Win默认打开
        gui = True
    if platform.uname()[0] == 'Linux':  # Linux 默认关闭
        gui = False
    if '--gui' in sys.argv:  # 指定 gui 模式
        gui = True
    if '--nogui' in sys.argv:  # 带 nogui 就覆盖前面Win打开要求
        gui = False

    config_file = os.path.join(file_path, 's3_download_config.ini')
    # If no config file, read the default config
    if not os.path.exists(config_file):
        config_file += '.default'
        print("No customized config, use the default config")
    cfg = ConfigParser()
    print(f'Reading config file: {config_file}')

    try:
        global SrcBucket, S3Prefix, SrcFileIndex, SrcProfileName, DesDir, MaxRetry, MaxThread, MaxParallelFile, LoggingLevel
        cfg.read(config_file, encoding='utf-8-sig')
        SrcBucket = cfg.get('Basic', 'SrcBucket')
        S3Prefix = cfg.get('Basic', 'S3Prefix')
        SrcFileIndex = cfg.get('Basic', 'SrcFileIndex')
        SrcProfileName = cfg.get('Basic', 'SrcProfileName')
        DesDir = cfg.get('Basic', 'DesDir')
        Megabytes = 1024 * 1024
        ChunkSize = cfg.getint('Advanced', 'ChunkSize') * Megabytes
        MaxRetry = cfg.getint('Advanced', 'MaxRetry')
        MaxThread = cfg.getint('Advanced', 'MaxThread')
        MaxParallelFile = cfg.getint('Advanced', 'MaxParallelFile')
        LoggingLevel = cfg.get('Advanced', 'LoggingLevel')
    except Exception as e:
        print("ERR loading s3_download_config.ini", str(e))
        input('PRESS ENTER TO QUIT')
        sys.exit(0)

    if gui:
        # For GUI
        from tkinter import Tk, filedialog, END, StringVar, BooleanVar, messagebox
        from tkinter.ttk import Combobox, Label, Button, Entry, Spinbox, Checkbutton
        # get profile name list in ./aws/credentials
        pro_conf = RawConfigParser()
        pro_path = os.path.join(os.path.expanduser("~"), ".aws")
        cre_path = os.path.join(pro_path, "credentials")
        if os.path.exists(cre_path):
            pro_conf.read(cre_path)
            profile_list = pro_conf.sections()
        else:
            print(
                f"There is no aws_access_key in {cre_path}, please input for S3 Bucket: "
            )
            os.mkdir(pro_path)
            aws_access_key_id = input('aws_access_key_id: ')
            aws_secret_access_key = input('aws_secret_access_key: ')
            region = input('region: ')
            pro_conf.add_section('default')
            pro_conf['default']['aws_access_key_id'] = aws_access_key_id
            pro_conf['default'][
                'aws_secret_access_key'] = aws_secret_access_key
            pro_conf['default']['region'] = region
            profile_list = ['default']
            with open(cre_path, 'w') as f:
                print(f"Saving credentials to {cre_path}")
                pro_conf.write(f)

        # Click Select Folder
        def browse_folder():
            local_dir = filedialog.askdirectory(
                initialdir=os.path.dirname(__file__))
            url_txt.delete(0, END)
            url_txt.insert(0, local_dir)
            file_txt.delete(0, END)
            file_txt.insert(0, "*")
            # Finsih browse folder

        # Click List Buckets
        def ListBuckets(*args):
            SrcProfileName = SrcProfileName_txt.get()
            client = Session(profile_name=SrcProfileName).client('s3')
            bucket_list = []
            try:
                response = client.list_buckets()
                if 'Buckets' in response:
                    bucket_list = [b['Name'] for b in response['Buckets']]
            except Exception as e:
                messagebox.showerror(
                    'Error', f'Failt to List buckets. \n'
                    f'Please verify your aws_access_key of profile: [{SrcProfileName}]\n'
                    f'{str(e)}')
                bucket_list = ['CAN_NOT_GET_BUCKET_LIST']
            SrcBucket_txt['values'] = bucket_list
            SrcBucket_txt.current(0)
            # Finish ListBuckets

        # Click List Prefix
        def ListPrefix(*args):
            SrcProfileName = SrcProfileName_txt.get()
            client = Session(profile_name=SrcProfileName).client('s3')
            prefix_list = []
            this_bucket = SrcBucket_txt.get()
            max_get = 100
            try:
                response = client.list_objects_v2(
                    Bucket=this_bucket,
                    Delimiter='/',
                    RequestPayer='requester'
                )  # Only get the max 1000 prefix for simply list
                if 'CommonPrefixes' in response:
                    prefix_list = [
                        c['Prefix'] for c in response['CommonPrefixes']
                    ]
                if not prefix_list:
                    messagebox.showinfo(
                        'Message', f'There is no "/" Prefix in: {this_bucket}')
                if response['IsTruncated']:
                    messagebox.showinfo(
                        'Message',
                        f'More than {max_get} Prefix, cannot fully list here.')
            except Exception as e:
                messagebox.showinfo(
                    'Error',
                    f'Cannot get prefix list from bucket: {this_bucket}, {str(e)}'
                )
            S3Prefix_txt['values'] = prefix_list
            S3Prefix_txt.current(0)
            # Finish list prefix

        def browse_file(*args):
            SrcProfileName = SrcProfileName_txt.get()
            S3Prefix = S3Prefix_txt.get()
            client = Session(profile_name=SrcProfileName).client('s3')
            file_list = []
            this_bucket = SrcBucket_txt.get()
            max_get = 100
            try:
                response = client.list_objects_v2(
                    Bucket=this_bucket,
                    Prefix=str(PurePosixPath(S3Prefix)) + '/',
                    RequestPayer='requester',
                    Delimiter='/'
                )  # Only get the max 1000 files for simply list

                # For delete prefix in des_prefix
                if S3Prefix == '' or S3Prefix == '/':
                    # 目的bucket没有设置 Prefix
                    dp_len = 0
                else:
                    # 目的bucket的 "prefix/"长度
                    dp_len = len(str(PurePosixPath(S3Prefix))) + 1

                if 'Contents' in response:
                    file_list = [
                        c['Key'][dp_len:] for c in response['Contents']
                    ]  # 去掉Prefix
                if not file_list:
                    messagebox.showinfo(
                        'Message',
                        f'There is no files in s3://{this_bucket}/{S3Prefix}')
                if response['IsTruncated']:
                    messagebox.showinfo(
                        'Message',
                        f'More than {max_get} files, cannot fully list here.')
            except Exception as e:
                messagebox.showinfo(
                    'Error',
                    f'Cannot get file list from bucket s3://{this_bucket}/{S3Prefix}, {str(e)}'
                )
            file_txt['values'] = file_list
            file_txt.current(0)
            # Finish list files

        # Click START button
        def close():
            window.withdraw()
            ok = messagebox.askokcancel(
                'Start downloading job',
                f'DOWNLOAD FROM s3://{SrcBucket_txt.get()}/{S3Prefix_txt.get()}\n'
                f'TO LOCAL {url_txt.get()}\n'
                f'Click OK to START')
            if not ok:
                window.deiconify()
                return
            window.quit()
            return
            # Finish close()

        # Start GUI
        window = Tk()
        window.title(
            "LONGBOW - AMAZON S3 DOWNLOAD TOOL WITH BREAK-POINT RESUMING")
        window.geometry('705x350')
        window.configure(background='#ECECEC')
        window.protocol("WM_DELETE_WINDOW", sys.exit)

        Label(window, text="S3 Bucket").grid(column=0,
                                             row=1,
                                             sticky='w',
                                             padx=2,
                                             pady=2)
        SrcBucket_txt = Combobox(window, width=48)
        SrcBucket_txt.grid(column=1, row=1, sticky='w', padx=2, pady=2)
        SrcBucket_txt['values'] = SrcBucket
        SrcBucket_txt.current(0)
        Button(window, text="List Buckets", width=10, command=ListBuckets) \
            .grid(column=2, row=1, sticky='w', padx=2, pady=2)

        Label(window, text="S3 Prefix").grid(column=0,
                                             row=2,
                                             sticky='w',
                                             padx=2,
                                             pady=2)
        S3Prefix_txt = Combobox(window, width=48)
        S3Prefix_txt.grid(column=1, row=2, sticky='w', padx=2, pady=2)
        S3Prefix_txt['values'] = S3Prefix
        if S3Prefix != '':
            S3Prefix_txt.current(0)
        Button(window, text="List Prefix", width=10, command=ListPrefix) \
            .grid(column=2, row=2, sticky='w', padx=2, pady=2)

        Label(window, text="Filename or *").grid(column=0,
                                                 row=3,
                                                 sticky='w',
                                                 padx=2,
                                                 pady=2)
        file_txt = Combobox(window, width=48)
        file_txt.grid(column=1, row=3, sticky='w', padx=2, pady=2)
        file_txt['values'] = SrcFileIndex
        if SrcFileIndex != '':
            file_txt.current(0)
        Button(window, text="Select File", width=10, command=browse_file) \
            .grid(column=2, row=3, sticky='w', padx=2, pady=2)

        Label(window, text="AWS Profile").grid(column=0,
                                               row=4,
                                               sticky='w',
                                               padx=2,
                                               pady=2)
        SrcProfileName_txt = Combobox(window, width=15, state="readonly")
        SrcProfileName_txt['values'] = tuple(profile_list)
        SrcProfileName_txt.grid(column=1, row=4, sticky='w', padx=2, pady=2)
        if SrcProfileName in profile_list:
            position = profile_list.index(SrcProfileName)
            SrcProfileName_txt.current(position)
        else:
            SrcProfileName_txt.current(0)
        SrcProfileName = SrcProfileName_txt.get()
        SrcProfileName_txt.bind("<<ComboboxSelected>>", ListBuckets)

        Label(window, text="Folder").grid(column=0,
                                          row=5,
                                          sticky='w',
                                          padx=2,
                                          pady=2)
        url_txt = Entry(window, width=50)
        url_txt.grid(column=1, row=5, sticky='w', padx=2, pady=2)
        url_btn = Button(window,
                         text="Select Folder",
                         width=10,
                         command=browse_folder)
        url_btn.grid(column=2, row=5, sticky='w', padx=2, pady=2)
        url_txt.insert(0, DesDir)

        Label(window, text="MaxThread/File").grid(column=0,
                                                  row=6,
                                                  sticky='w',
                                                  padx=2,
                                                  pady=2)
        if MaxThread < 1 or MaxThread > 100:
            MaxThread = 5
        var_t = StringVar()
        var_t.set(str(MaxThread))
        MaxThread_txt = Spinbox(window,
                                from_=1,
                                to=100,
                                width=15,
                                textvariable=var_t)
        MaxThread_txt.grid(column=1, row=6, sticky='w', padx=2, pady=2)

        Label(window, text="MaxParallelFile").grid(column=0,
                                                   row=7,
                                                   sticky='w',
                                                   padx=2,
                                                   pady=2)
        if MaxParallelFile < 1 or MaxParallelFile > 100:
            MaxParallelFile = 5
        var_f = StringVar()
        var_f.set(str(MaxParallelFile))
        MaxParallelFile_txt = Spinbox(window,
                                      from_=1,
                                      to=100,
                                      width=15,
                                      textvariable=var_f)
        MaxParallelFile_txt.grid(column=1, row=7, sticky='w', padx=2, pady=2)

        save_config = BooleanVar()
        save_config.set(True)
        save_config_txt = Checkbutton(window,
                                      text="Save to s3_download_config.ini",
                                      var=save_config)
        save_config_txt.grid(column=1, row=9, padx=2, pady=2)

        Button(window, text="Start Download", width=15,
               command=close).grid(column=1, row=10, padx=5, pady=5)
        window.mainloop()

        DesDir = url_txt.get()
        SrcFileIndex = file_txt.get()
        SrcBucket = SrcBucket_txt.get()
        S3Prefix = S3Prefix_txt.get()
        SrcProfileName = SrcProfileName_txt.get()
        MaxThread = int(MaxThread_txt.get())
        MaxParallelFile = int(MaxParallelFile_txt.get())

        if save_config:
            cfg['Basic']['SrcBucket'] = SrcBucket
            cfg['Basic']['S3Prefix'] = S3Prefix
            cfg['Basic']['SrcFileIndex'] = SrcFileIndex
            cfg['Basic']['SrcProfileName'] = SrcProfileName
            cfg['Basic']['DesDir'] = DesDir
            cfg['Advanced']['MaxThread'] = str(MaxThread)
            cfg['Advanced']['MaxParallelFile'] = str(MaxParallelFile)

            config_file = os.path.join(file_path, 's3_download_config.ini')
            with codecs.open(config_file, 'w', 'utf-8') as f:
                cfg.write(f)
                print(f"Save config to {config_file}")
        # GUI window finish

    if S3Prefix == '/':
        S3Prefix = ''
    # Finish set_config()
    return ChunkSize
Exemple #23
0
    def build(self):
        """widget construction

        Parameters
        ----------
        None

        Results
        -------
        None
        """

        fr1 = LabelFrame(self.fr0, text='rgb')
        fr1.grid(column=0, row=0, sticky='news')

        rl0 = Label(fr1, text='red  ')
        rl0.grid(column=0, row=0, sticky='s')

        self.rcan = Canvas(fr1, width=self.canvas_w, height=self.canvas_h, bd=0,
                           highlightthickness=0)
        self.rcan.grid(column=1, row=0, sticky='s')

        rsc = TtkScale(fr1, from_=0, to=255, variable=self.rvar, orient='horizontal',
                       length=self.scale_l, command=self.rhandle, tickinterval=20)
        rsc.grid(column=1, row=1, sticky='news')

        rsb = Spinbox(fr1, from_=0, to=255, textvariable=self.rvar,
                      command=self.rhandle, width=5)
        rsb.grid(column=2, row=1, sticky='nw')

        rel = Label(fr1, height=1)
        rel.grid(column=2, row=2)

        gl0 = Label(fr1, text='green')
        gl0.grid(column=0, row=3)

        self.gcan = Canvas(fr1, width=self.canvas_w, height=self.canvas_h, bd=0,
                           highlightthickness=0)
        self.gcan.grid(column=1, row=3, sticky='s')

        gsc = TtkScale(fr1, from_=0, to=255, variable=self.gvar, orient='horizontal',
                       length=self.scale_l, command=self.ghandle, tickinterval=20)
        gsc.grid(column=1, row=4, sticky='news')

        gsb = Spinbox(fr1, from_=0, to=255, textvariable=self.gvar,
                      command=self.ghandle, width=5)
        gsb.grid(column=2, row=4, sticky='nw')

        gel = Label(fr1, height=1)
        gel.grid(column=2, row=5)

        bl0 = Label(fr1, text='blue ')
        bl0.grid(column=0, row=6, sticky='s')

        self.bcan = Canvas(fr1, width=self.canvas_w, height=self.canvas_h, bd=0,
                           highlightthickness=0)
        self.bcan.grid(column=1, row=6, sticky='n')

        bsc = TtkScale(fr1, from_=0, to=255, variable=self.bvar, orient='horizontal',
                       length=self.scale_l, command=self.bhandle, tickinterval=20)
        bsc.grid(column=1, row=7, sticky='news')

        bsb = Spinbox(fr1, from_=0, to=255, textvariable=self.bvar,
                      command=self.bhandle, width=5)
        bsb.grid(column=2, row=7, sticky='nw')

        bel = Label(fr1, height=1)
        bel.grid(column=2, row=8)

        fr3 = LabelFrame(self.fr0, text='colour mix')
        fr3.grid(column=1, row=0, sticky='nw')

        self.cmcan = cmcan = Canvas(fr3, width=30, height=30, bd=0,
                                    highlightthickness=0)
        cmcan.grid(column=0, row=0, sticky='n', columnspan=2)
        cmcan.grid_propagate(0)
        vdraw_gradient(self.cmcan, (255, 0, 0), alpha=255)

        cml = Label(fr3, text='hash\nvalue')
        cml.grid(column=0, row=1)

        ent0 = Entry(fr3, width=8, textvariable=self.evar)
        ent0.grid(column=1, row=1)

        fr2 = LabelFrame(self.fr0, text='opacity')
        fr2.grid(column=0, row=1, sticky='news')

        al0 = Label(fr2, text='alpha')
        al0.grid(column=0, row=0, sticky='s')

        self.acan = Canvas(fr2, width=self.canvas_w, height=self.canvas_h, bd=0,
                           highlightthickness=0)
        self.acan.grid(column=1, row=0, sticky='n')

        asc = TtkScale(fr2, from_=0, to=255, variable=self.avar, orient='horizontal',
                       length=self.scale_l, command=self.ahandle, tickinterval=20)
        asc.grid(column=1, row=1, sticky='news')

        asb = Spinbox(fr2, from_=0, to=255, textvariable=self.avar,
                      command=self.ahandle, width=5)
        asb.grid(column=2, row=1, sticky='nw')

        ael = Label(fr2, text=' ', height=1)
        ael.grid(column=2, row=2, sticky='s')

        draw_gradient(self.rcan, (0, 0, 0), (255, 0, 0), width=self.canvas_w)
        draw_gradient(self.gcan, (255, 0, 0),
                      (255, 255, 0), width=self.canvas_w)
        draw_gradient(self.bcan, (255, 0, 0),
                      (255, 0, 255), width=self.canvas_w)
        draw_agradient(self.acan, (127, 127, 127),
                       (255, 0, 0), width=self.canvas_w)
Exemple #24
0
    def makeFrameWidget(self):
        '''
        makes frame widget
        '''
        #make regular frame stuff -- label and tier
        self.frames_canvas = Canvas(self.canvas_frame,
                                    width=self.canvas_width,
                                    height=self.canvas_height,
                                    background='gray',
                                    highlightthickness=0)
        frames_label = Canvas(self.frame,
                              width=self.label_width,
                              height=self.canvas_height,
                              highlightthickness=0,
                              background='gray')
        frames_label.create_text(self.label_width,
                                 0,
                                 anchor='ne',
                                 justify='center',
                                 text='frames: ',
                                 width=self.label_width,
                                 activefill='blue')

        # make subframe to go on top of label canvas
        sbframe = Frame(frames_label)
        #put new widgets onto subframe
        offset = self.app.Data.getFileLevel('offset')
        if offset != None:
            self.frame_shift.set(offset)
        # for audio alignment
        go_btn = Button(sbframe,
                        text='Offset',
                        command=self.shiftFrames,
                        takefocus=0)
        # minmax = len(self.app.Audio.sfile)*1000
        txtbox = Spinbox(sbframe,
                         textvariable=self.frame_shift,
                         width=7,
                         from_=-10000000,
                         to=10000000)
        txtbox.bind('<Escape>', lambda ev: sbframe.focus())
        txtbox.bind('<Return>', lambda ev: self.shiftFrames())
        go_btn.grid(row=0, column=0, sticky='e')
        txtbox.grid(row=0, column=1, sticky='e')
        # put subframe on canvas
        window = frames_label.create_window(self.label_width * .3,
                                            self.canvas_height / 3,
                                            anchor='nw',
                                            window=sbframe)
        # ensure position of subframe gets updated
        frames_label.bind(
            '<Configure>',
            lambda e: frames_label.itemconfig(window, width=e.width))
        sbframe.bind(
            '<Configure>', lambda e: frames_label.configure(
                scrollregion=frames_label.bbox("all")))

        self.TkWidgets.append({
            'name': self.frameTierName,
            'frames': self.frames_canvas,
            'frames-label': frames_label
        })

        self.frames_canvas.bind("<Button-1>", self.getClickedFrame)
Exemple #25
0
                ('pressed', 'arrspd-p'),
                ('active', 'arrspd-h'),
                {
                    'sticky': 'e',
                    'border': [0],
                    'padding': 4
                }  # 'border': [1]
            )
        },
        "Spinbox.uparrow": {
            "element create":
            ("image", 'arrspu-n', ('disabled', 'arrspu-d'),
             ('pressed', 'arrspu-p'), ('active', 'arrspu-h'), {
                 'sticky': 'e',
                 'border': [0],
                 'padding': 4
             })
        }

        # end of theme extract - don't forget to add comma at end when inserting
    })

style.theme_use('yummy')  # 'alt'
widg = Spinbox(fr, from_=0, to=100, width=4)
widg.grid(column=0, row=10, padx=5, pady=5)
widg1 = Spinbox(fr, from_=0, to=100)
widg1.grid(column=0, row=11, padx=5, pady=5, sticky='ns')
run_state(fr, widg, widg1)

root.mainloop()
Exemple #26
0
    def initialize_settings_ui(self):
        # Initializes resamples field
        resamples_label = Label(self, text="Resamples (affects recognition accuracy)")
        resamples_label.place(y=12.5, x=12.5)
        resamples_text = tk.StringVar()
        resamples_text.set(self.settings["resamples"])
        resamples_spin = Spinbox(self, from_=1, to=10, textvariable=resamples_text)
        resamples_spin.config(command=partial(self.save_settings, "resamples", lambda: int(resamples_text.get())))
        resamples_spin.place(y=37.5, x=12.5)
        separator1 = Separator(self, orient='horizontal')
        separator1.place(y=62.5, x=12.5, width=375, height=1)

        # Initializes tolerance field
        tolerance_label = Label(self, text="Face matching tolerance (lower is more strict)")
        tolerance_label.place(y=68.75, x=12.5)
        tolerance_text = tk.StringVar()
        tolerance_text.set(self.settings["tolerance"])
        tolerance_spin = Spinbox(self, from_=0, to=1, increment=0.1, textvariable=tolerance_text)
        tolerance_spin.config(command=partial(self.save_settings, "tolerance", lambda: float(tolerance_text.get())))
        tolerance_spin.place(y=93.75, x=12.5)
        separator2 = Separator(self, orient='horizontal')
        separator2.place(y=118.75, x=12.5, width=375, height=1)

        # Initializes track period field
        track_period_label = Label(self, text="Track period (the number of frames between each recognition)")
        track_period_label.place(y=125, x=12.5)
        track_period_text = tk.StringVar()
        track_period_text.set(self.settings["track_period"])
        track_period_spin = Spinbox(self, from_=1, to=30, textvariable=track_period_text)
        track_period_spin.config(command=partial(self.save_settings, "track_period", lambda: int(track_period_text.get())))
        track_period_spin.place(y=150, x=12.5)
        separator3 = Separator(self, orient='horizontal')
        separator3.place(y=175, x=12.5, width=375, height=1)

        # Initializes blur method field
        blur_method_label = Label(self, text="Blur method")
        blur_method_label.place(y=181.25, x=12.5)
        blur_method_text = tk.StringVar()
        blur_method_text.set(self.settings["blur_method"])
        blur_method_menu = Combobox(self, textvariable=blur_method_text, values=("pixelate", "blur", "blacken"))
        blur_method_text.trace('w', partial(self.save_settings, "blur_method", lambda: blur_method_text.get()))
        blur_method_menu.place(y=206.25, x=12.5)
        separator4 = Separator(self, orient='horizontal')
        separator4.place(y=231.25, x=12.5, width=375, height=1)

        # Initializes blur intensity field
        blur_intensity_label = Label(self, text="Blur intensity (filter size)")
        blur_intensity_label.place(y=237.5, x=12.5)
        blur_intensity_text = tk.StringVar()
        blur_intensity_text.set(self.settings["blur_intensity"])
        blur_intensity_spin = Spinbox(self, from_=1, to=30, textvariable=blur_intensity_text)
        blur_intensity_spin.config(command=partial(self.save_settings, "blur_intensity", lambda: int(blur_intensity_text.get())))
        blur_intensity_spin.place(y=262.5, x=12.5)
        separator5 = Separator(self, orient='horizontal')
        separator5.place(y=287.5, x=12.5, width=375, height=1)

        # Initializes display output field
        display_output_flag = tk.IntVar()
        display_output_flag.set(self.settings["display_output"])
        display_output_checkbox = tk.Checkbutton(self, text='Display output', variable=display_output_flag, onvalue=1, offvalue=0)
        display_output_checkbox.config(command=partial(self.save_settings, "display_output", lambda: display_output_flag.get()))
        display_output_checkbox.place(y=293.75, x=12.5)
Exemple #27
0
                                                          sticky='W')
rd_notrail = Radiobutton(lbframe_trail,
                         text="non",
                         variable=val_trail,
                         value=ENDTRAIL.NOTHING).grid(column=1,
                                                      row=1,
                                                      sticky='W')

val_timeout = StringVar(frame_sendto_port)

timeout = ["Wait Forever", "Non-blocking"]
for x in range(1, 61):
    timeout.append(str(x) + " Sec")

sp_timeout = Spinbox(frame_sendto_port,
                     state='readonly',
                     values=timeout,
                     textvariable=val_timeout)
val_timeout.set("Wait Forever")

txt_logs = scrolledtext.ScrolledText(frame_view_log, width=48, height=36)


def handle_data(data):
    pass


def read_from_port(ser):
    while ser.inWaiting and connected:
        try:
            txt_logs.insert(tk.END, ser.readline())
            txt_logs.see("end")
font_size = def_font.actual()['size'] + 2

def is_okay(text):
    """ validation function

    Parameters
    ----------
    text : str
        text if allowed

    Returns
    -------
    boolean
    """
    print(text)
    if text in ("", "-", ".", "-."):
        return True
    try:
        float(text)
    except ValueError:
        return False
    return True

vcmd = root.register(is_okay)

ent0 = Spinbox(root, validate="key", validatecommand=(vcmd, '%P'),
           font=(font_family, font_size, 'bold'))
ent0.pack(padx=10)

root.mainloop()
Exemple #29
0
def startPassGen():
    global root
    root = Toplevel()
    root.attributes('-topmost', True)
    root.title("  Password Generator")
    root.geometry("350x380")
    # root.resizable(0,0)
    root.configure(bg="white")
    root.iconphoto(True, PhotoImage(file=assetpath + 'padlock.png'))
    root.tk.call('tk', 'scaling', 1.6)

    style = Style()
    style.configure("TLabel", background="white")
    style.configure('TCheckbutton', background='white')

    mainf = Frame(root, bg="white")
    mainf.pack(pady=20, padx=20, ipadx=10, ipady=10)

    f1 = Frame(mainf, bg="white")
    f1.pack()
    icon = ImageTk.PhotoImage(
        Image.open(assetpath + 'key.png').resize((45, 45)))
    Label(f1, image=icon, bg="white").grid(row=0,
                                           column=0,
                                           rowspan=2,
                                           padx=2,
                                           pady=5)
    Label(f1, text="Pass-Gen", font=('ARIAL', 15, 'bold'),
          bg="white").grid(row=0, column=2)
    Label(f1, text="Password Generator", bg="white").grid(row=1, column=2)

    f2 = Frame(mainf, bg="white")
    f2.pack(padx=10, pady=(30, 15))
    global passe
    passe = Entry(f2, width=30)
    passe.pack(side=LEFT)
    copyi = ImageTk.PhotoImage(
        Image.open(assetpath + 'copy.png').resize((25, 25)))
    copyb = Button(f2,
                   image=copyi,
                   bg="white",
                   bd=0,
                   activebackground="white",
                   command=lambda: copy2clip(passe.get()))
    copyb.pack(side=LEFT, padx=2)

    global length
    length = 8

    lenf = Frame(mainf)
    lenf.pack()
    Label(lenf, text="Length  ", bg="white").pack(side=LEFT)
    s = Spinbox(lenf,
                from_=4,
                to=25,
                width=5,
                command=lambda: setlength(s.get()))
    s.set(8)
    s.pack(side=LEFT)

    upper = BooleanVar()
    digit = BooleanVar()
    special = BooleanVar()
    upper.set(True)
    digit.set(True)
    special.set(True)
    f3 = Frame(mainf, bg="white")
    f3.pack(padx=10, pady=10)
    capb = Checkbutton(f3,
                       text="Include Capitals",
                       variable=upper,
                       offvalue=False,
                       onvalue=True)
    capb.pack(anchor=W, pady=5)
    digitb = Checkbutton(f3,
                         text="Include Digits",
                         variable=digit,
                         offvalue=False,
                         onvalue=True)
    digitb.pack(anchor=W, pady=5)
    specialb = Checkbutton(f3,
                           text="Include Special Symbols",
                           variable=special,
                           offvalue=False,
                           onvalue=True)
    specialb.pack(anchor=W, pady=5)

    genb = Button(mainf,
                  text="Generate",
                  command=lambda: passGen(length, upper.get(), digit.get(),
                                          special.get()),
                  bg="turquoise3",
                  activebackground="turquoise3",
                  bd=0)
    genb.pack(pady=10, ipadx=20, padx=(43, 10), side=LEFT)
    exitb = Button(mainf,
                   text="Exit",
                   command=exitPassGen,
                   bg="firebrick1",
                   activebackground="firebrick1",
                   bd=0,
                   width=37)
    exitb.pack(pady=10, ipadx=20, padx=(10, 30), side=LEFT)

    root.mainloop()
Exemple #30
0
    def build(self):
        """Widget construction."""

        lf1 = LabelFrame(self.fr0, text='rgb')
        lf1.grid(column=0, row=0, sticky='new')
        lf1.columnconfigure(1, weight=1)

        rl0 = Label(lf1, text='red  ')
        rl0.grid(column=0, row=0, sticky='s')

        self.rcan = Canvas(lf1,
                           width=self.canvas_w,
                           height=self.canvas_h,
                           bd=0,
                           highlightthickness=0)
        self.rcan.grid(column=1,
                       row=0,
                       sticky='sew',
                       padx=self.sliderlength // 2)
        self.rcan.bind("<Configure>", self.resize_rcan)

        rsc = TtkScale(lf1,
                       self.scale_l,
                       from_=0,
                       to=255,
                       variable=self.rvar,
                       orient='horizontal',
                       command=self.rhandle,
                       tickinterval=20)
        rsc.grid(column=1, row=1, sticky='new')

        vcmdsb = root.register(sb_okay)

        rsb = Spinbox(lf1,
                      from_=0,
                      to=255,
                      textvariable=self.rvar,
                      validate='key',
                      validatecommand=(vcmdsb, '%d', '%P', '%S', 255),
                      command=self.rhandle,
                      width=5)
        rsb.grid(column=2, row=1, sticky='nw')
        rsb.bind('<KeyRelease>', self.checksb)

        rel = Label(lf1)
        rel.grid(column=2, row=2)

        gl0 = Label(lf1, text='green')
        gl0.grid(column=0, row=3)

        self.gcan = Canvas(lf1,
                           width=self.canvas_w,
                           height=self.canvas_h,
                           bd=0,
                           highlightthickness=0)
        self.gcan.grid(column=1,
                       row=3,
                       sticky='sew',
                       padx=self.sliderlength // 2)
        self.gcan.bind("<Configure>", self.resize_gcan)

        gsc = TtkScale(lf1,
                       self.scale_l,
                       from_=0,
                       to=255,
                       variable=self.gvar,
                       orient='horizontal',
                       command=self.ghandle,
                       tickinterval=20)
        gsc.grid(column=1, row=4, sticky='new')

        gsb = Spinbox(lf1,
                      from_=0,
                      to=255,
                      textvariable=self.gvar,
                      validate='key',
                      validatecommand=(vcmdsb, '%d', '%P', '%S', 255),
                      command=self.ghandle,
                      width=5)
        gsb.grid(column=2, row=4, sticky='nw')
        gsb.bind('<KeyRelease>', self.checksb)

        gel = Label(lf1)
        gel.grid(column=2, row=5)

        bl0 = Label(lf1, text='blue ')
        bl0.grid(column=0, row=6, sticky='s')

        self.bcan = Canvas(lf1,
                           width=self.canvas_w,
                           height=self.canvas_h,
                           bd=0,
                           highlightthickness=0)
        self.bcan.grid(column=1,
                       row=6,
                       sticky='new',
                       padx=self.sliderlength // 2)
        self.bcan.bind("<Configure>", self.resize_bcan)

        bsc = TtkScale(lf1,
                       self.scale_l,
                       from_=0,
                       to=255,
                       variable=self.bvar,
                       orient='horizontal',
                       command=self.bhandle,
                       tickinterval=20)
        bsc.grid(column=1, row=7, sticky='new')

        bsb = Spinbox(lf1,
                      from_=0,
                      to=255,
                      textvariable=self.bvar,
                      validate='key',
                      validatecommand=(vcmdsb, '%d', '%P', '%S', 255),
                      command=self.bhandle,
                      width=5)
        bsb.grid(column=2, row=7, sticky='nw')
        bsb.bind('<KeyRelease>', self.checksb)

        bel = Label(lf1)
        bel.grid(column=2, row=8)

        lf3 = LabelFrame(self.fr0, text='colour mix')
        lf3.grid(column=1, row=0, sticky='nw')

        self.cmcan = cmcan = Canvas(lf3,
                                    width=30,
                                    height=30,
                                    bd=0,
                                    highlightthickness=0)
        cmcan.grid(column=0, row=0, sticky='n', columnspan=2)
        cmcan.grid_propagate(0)
        vdraw_gradient(self.cmcan, (255, 0, 0), alpha=255)

        cml = Label(lf3, text='hash\nvalue')
        cml.grid(column=0, row=1)

        vcmd = root.register(is_okay)
        self.ent0 = ent0 = Entry(lf3,
                                 width=8,
                                 validate='key',
                                 validatecommand=(vcmd, '%i', '%P', '%S'),
                                 textvariable=self.evar)
        ent0.grid(column=1, row=1)
        ent0.bind('<KeyRelease>', self.checkhash)

        lf5 = LabelFrame(lf3, text='related colours', style='Wide.TLabelframe')
        lf5.grid(column=0, row=2, sticky='nw', columnspan=2)

        self.srcls = []
        self.vrcls = []
        self.srccans = []
        self.vrccans = []
        relateds = [25, 50, 75, 100]
        stexts = ['25% sat', '50% sat', '75% sat', '100% sat']
        vtexts = ['25% val', '50% val', '75% val', '100% val']

        for ix, rel in enumerate(relateds):
            Label(lf5, text=stexts[ix]).grid(row=1 + 2 * ix,
                                             column=0,
                                             sticky='n')
            self.srcls.append(Label(lf5))
            self.srcls[ix].grid(row=1 + 2 * ix, column=1, sticky='n')
            self.srccans.append(
                Canvas(lf5, width=30, height=30, bd=0, highlightthickness=0))
            self.srccans[ix].grid(row=2 * ix,
                                  column=0,
                                  sticky='n',
                                  columnspan=2)
            Label(lf5, text=vtexts[ix]).grid(row=9 + 2 * ix,
                                             column=0,
                                             sticky='n')
            self.vrcls.append(Label(lf5))
            self.vrcls[ix].grid(row=9 + 2 * ix, column=1, sticky='n')
            self.vrccans.append(
                Canvas(lf5, width=30, height=30, bd=0, highlightthickness=0))
            self.vrccans[ix].grid(row=8 + 2 * ix,
                                  column=0,
                                  sticky='n',
                                  columnspan=2)

        self.cccan = Canvas(lf5,
                            width=30,
                            height=30,
                            bd=0,
                            highlightthickness=0)
        self.cccan.grid(column=0, row=17, sticky='n', columnspan=2)

        self.ccla = Label(lf5, text="comp'y")
        self.ccla.grid(column=0, row=18, sticky='n')

        self.ccl = Label(lf5, text="")
        self.ccl.grid(column=1, row=18, sticky='n')

        al0 = Label(lf1, text='alpha')
        al0.grid(column=0, row=10, sticky='s')

        self.acan = Canvas(lf1,
                           width=self.canvas_w,
                           height=self.canvas_h,
                           bd=0,
                           highlightthickness=0)
        self.acan.grid(column=1,
                       row=10,
                       sticky='new',
                       padx=self.sliderlength // 2)
        self.acan.bind("<Configure>", self.resize_acan)

        asc = TtkScale(lf1,
                       self.scale_l,
                       from_=0,
                       to=255,
                       variable=self.avar,
                       orient='horizontal',
                       command=self.ahandle,
                       tickinterval=20)
        asc.grid(column=1, row=11, sticky='new')

        asb = Spinbox(lf1,
                      from_=0,
                      to=255,
                      textvariable=self.avar,
                      validate='key',
                      validatecommand=(vcmdsb, '%d', '%P', '%S', 255),
                      command=self.ahandle,
                      width=5)
        asb.grid(column=2, row=11, sticky='nw')
        asb.bind('<KeyRelease>', self.checksba)

        ael = Label(lf1, text=' ')
        ael.grid(column=2, row=12, sticky='s')

        draw_gradient(self.rcan, (0, 0, 0), (255, 0, 0), width=self.canvas_w)
        draw_gradient(self.gcan, (255, 0, 0), (255, 0, 255),
                      width=self.canvas_w)
        draw_gradient(self.bcan, (255, 0, 0), (255, 255, 0),
                      width=self.canvas_w)
        draw_agradient(self.acan, (127, 127, 127), (255, 0, 0),
                       width=self.canvas_w)

        lf4 = LabelFrame(self.fr0, text='hsv')
        lf4.grid(column=2, row=0, sticky='news')
        lf4.columnconfigure(1, weight=1)

        hl0 = Label(lf4, text='hue  ')
        hl0.grid(column=0, row=0, sticky='s')

        self.hcan = Canvas(lf4,
                           width=self.canvas_w,
                           height=self.canvas_h,
                           bd=0,
                           highlightthickness=0)
        self.hcan.grid(column=1,
                       row=0,
                       sticky='sew',
                       padx=self.sliderlength // 2)
        self.hcan.bind("<Configure>", self.resize_hcan)

        hsc = TtkScale(lf4,
                       self.scale_l,
                       from_=0,
                       to=360,
                       variable=self.hvar,
                       orient='horizontal',
                       command=self.hhandle,
                       tickinterval=30)
        hsc.grid(column=1, row=1, sticky='new')

        vcmdsb = root.register(sb_okay)

        hsb = Spinbox(lf4,
                      from_=0,
                      to=360,
                      textvariable=self.hvar,
                      validate='key',
                      validatecommand=(vcmdsb, '%P', '%S', 360),
                      command=self.hhandle,
                      width=5)
        hsb.grid(column=2, row=1, sticky='nw')
        hsb.bind('<KeyRelease>', self.checksbh)

        hel = Label(lf4)
        hel.grid(column=2, row=2)

        sl0 = Label(lf4, text='sat  ')
        sl0.grid(column=0, row=3)

        self.scan = Canvas(lf4,
                           width=self.canvas_w,
                           height=self.canvas_h,
                           bd=0,
                           highlightthickness=0)
        self.scan.grid(column=1,
                       row=3,
                       sticky='sew',
                       padx=self.sliderlength // 2)
        self.scan.bind("<Configure>", self.resize_scan)

        ssc = TtkScale(lf4,
                       self.scale_l,
                       from_=0,
                       to=100,
                       variable=self.svar,
                       orient='horizontal',
                       command=self.shandle,
                       tickinterval=10)
        ssc.grid(column=1, row=4, sticky='new')

        ssb = Spinbox(lf4,
                      from_=0,
                      to=100,
                      textvariable=self.svar,
                      validate='key',
                      validatecommand=(vcmdsb, '%P', '%S', 100),
                      command=self.shandle,
                      width=5)
        ssb.grid(column=2, row=4, sticky='nw')
        ssb.bind('<KeyRelease>', self.checksb100)

        sel = Label(lf4)
        sel.grid(column=2, row=5)

        vl0 = Label(lf4, text='value')
        vl0.grid(column=0, row=6, sticky='s')

        self.vcan = Canvas(lf4,
                           width=self.canvas_w,
                           height=self.canvas_h,
                           bd=0,
                           highlightthickness=0)
        self.vcan.grid(column=1,
                       row=6,
                       sticky='new',
                       padx=self.sliderlength // 2)
        self.vcan.bind("<Configure>", self.resize_vcan)

        vsc = TtkScale(lf4,
                       self.scale_l,
                       from_=0,
                       to=100,
                       variable=self.vvar,
                       orient='horizontal',
                       command=self.vhandle,
                       tickinterval=10)
        vsc.grid(column=1, row=7, sticky='new')

        vsb = Spinbox(lf4,
                      from_=0,
                      to=100,
                      textvariable=self.vvar,
                      validate='key',
                      validatecommand=(vcmdsb, '%P', '%S', 100),
                      command=self.vhandle,
                      width=5)
        vsb.grid(column=2, row=7, sticky='nw')
        vsb.bind('<KeyRelease>', self.checksb100)

        vel = Label(lf4)
        vel.grid(column=2, row=8)

        # assume initial setting 0,100,100 hsv
        to_colour = hsv_to_rgb(*(0, 100, 100))

        hue_gradient(self.hcan, width=self.canvas_w)
        draw_gradient(self.scan, (255, 255, 255),
                      to_colour,
                      width=self.canvas_w)
        draw_gradient(self.vcan, (0, 0, 0), to_colour, width=self.canvas_w)

        self.can_hsv = can_hsv = Canvas(lf4,
                                        width=self.wheel_w,
                                        height=self.wheel_w,
                                        bg='#d9d9d9')
        can_hsv.grid(column=0, row=9, columnspan=3, pady=25, sticky='n')
        self.hsv_gamut = PhotoImage(file='../figures/colour_wheel.png')
        can_hsv.create_image(0, 0, anchor='nw', image=self.hsv_gamut)
        self.ring = circle(can_hsv,
                           307,
                           158,
                           self.ring_radius,
                           width=self.ring_width,
                           outline='#555555',
                           activeoutline='black',
                           tags='ring')

        can_hsv.bind('<Button-1>', self.click_ring)
        can_hsv.tag_bind('ring', '<B1-Motion>', self.drag_ring)

        self.related(0, 100, 100, 255, 0, 0)