Example #1
0
    def __init__(self, parent, funnel, index, command_stack):
        tk.Frame.__init__(self, parent, borderwidth=4, relief="raised")
        Subscriber.__init__(self, funnel)
        Observable.__init__(self)
        self._funnel = funnel
        self._command_stack = command_stack

        self._active_var = tk.IntVar()
        self._active_var.trace_add("write", self._switch_active)

        self._y_var = tk.StringVar()
        self._y_var.set(0)
        self._y_var.trace_add("write", self._set_position)

        self._x_var = tk.StringVar()
        self._x_var.set(0)
        self._x_var.trace_add("write", self._set_position)

        self._oval_var = tk.IntVar()
        self._oval_var.trace_add("write", self._switch_oval)

        self._update()
        self.bind("<Button-1>", self._on_click)

        is_active = Checkbutton(
            self, text=f"Funnel n°{index}:  ", variable=self._active_var)
        is_active.grid(columnspan=3)
        is_active.bind("<FocusIn>", self._on_get_focus)
        is_active.bind("<FocusOut>", self._on_lost_focus)

        x_label = Label(self, text="\u21d5", anchor=tk.CENTER)
        x_label.grid(sticky=tk.E + tk.W)
        x_label.bind("<Button-1>", self._on_click)

        self.x_entry = Entry(self, textvariable=self._x_var, width=6)
        self.x_entry.grid(row=2, column=0, sticky=tk.W + tk.E)
        self.x_entry.bind("<FocusIn>", self._on_get_focus)
        self.x_entry.bind("<FocusOut>", self._on_lost_focus)

        y_label = Label(self, text="\u21d4", anchor=tk.CENTER)
        y_label.grid(row=1, column=1, sticky=tk.E+tk.W)
        y_label.bind("<Button-1>", self._on_click)

        self.y_entry = Entry(self, textvariable=self._y_var, width=6)
        self.y_entry.grid(row=2, column=1, sticky=tk.W + tk.E)
        self.y_entry.bind("<FocusIn>", self._on_get_focus)
        self.y_entry.bind("<FocusOut>", self._on_lost_focus)

        is_oval = Checkbutton(self, text="Is Oval", variable=self._oval_var)
        is_oval.grid(row=1, column=2)
        is_oval.bind("<FocusIn>", self._on_get_focus)
        is_oval.bind("<FocusOut>", self._on_lost_focus)

        force_centerline = Button(
            self, text="force on centerline", command=self._force_centerline)
        force_centerline.grid(row=2, column=2)

        self.columnconfigure(0, weight=1)
        self.columnconfigure(1, weight=1)
        self.columnconfigure(2, weight=1)
Example #2
0
 def body(self, master, cfg={}):
     "place user dialog widgets"
     self.config = cfg
     self.config["OK button"] = False
     self.site = StringVar()
     self.site.set(cfg.get("site", ""))
     self.login = StringVar()
     self.login.set(cfg.get("user", ""))
     self.password = StringVar()
     self.password.set(str(cfg.get("password", "")))
     site = Entry(master, width=15, textvariable=self.site)
     site.grid(column=1, row=0, sticky="e")
     Label(master, text=_("Site:")).grid(column=0, row=0, sticky="w")
     loge = Entry(master, width=15, textvariable=self.login)
     loge.grid(column=1, row=1, sticky="e")
     Label(master, text=_("Username:"******"w")
     pase = Entry(master, width=15, textvariable=self.password, show="*")
     pase.grid(column=1, row=2, sticky="e")
     Label(master, text=_("Password:"******"w")
     self.to_remember = IntVar()
     self.to_remember.set(cfg.get("remember_passwd", 1))
     chk1 = Checkbutton(master, text="Remember",
                        variable=self.to_remember)
     chk1.grid(column=0, row=3, sticky="w", columnspan=2)
     self.resizable(width=0, height=0)
     return loge
Example #3
0
class SettingsWindow(Toplevel):
    def __init__(self) -> None:
        Toplevel.__init__(self)
        self.title("Settings")
        #self.geometry("300x180")
        self.config = configparser.ConfigParser()
        self.config.read('config.ini')
        self.val_int_cmd = (self.register(vcmdtk.test_int), '%d', '%S')
        self.create_gui()
        self.load_settings()
        self.grid_gui()

    def create_gui(self):
        #Label

        self.y_max_label = Label(self, text='Y max')
        self.y_min_label = Label(self, text='Y min')
        #Entry
        self.y_max_entry = Entry(self,
                                 validate='key',
                                 validatecommand=self.val_int_cmd)
        self.y_min_entry = Entry(self,
                                 validate='key',
                                 validatecommand=self.val_int_cmd)
        #Check buttons
        self.check_var_1 = BooleanVar()
        self.check_var_1.set(
            self.config.getboolean('Y Limits', 'use_auto_values'))
        self.auto_y_cbutton = Checkbutton(self,
                                          text='Use auto Y-value ranges',
                                          variable=self.check_var_1,
                                          command=self.auto_y)
        #buttons
        self.ok_button = Button(self, text='Ok', command=self.ok_command)
        self.cancel_button = Button(self, text='Cancel', command=self.destroy)

    def grid_gui(self):
        self.y_max_label.grid(row=0, column=0, pady=2)
        self.y_min_label.grid(row=1, column=0, pady=2)
        self.y_max_entry.grid(row=0, column=1, pady=2)
        self.y_min_entry.grid(row=1, column=1, pady=2)
        self.auto_y_cbutton.grid(row=0, column=2, columnspan=2, sticky=W)
        self.ok_button.grid(row=2, column=2)
        self.cancel_button.grid(row=2, column=3)

    def auto_y(self):
        '''configures values afor check button'''
        if self.check_var_1.get():  #if checked
            state = 'disabled'
        else:
            state = 'enabled'
        self.y_max_entry['state'] = state
        self.y_min_entry['state'] = state

    def load_settings(
            self):  #Inserts settings values(if not none) to tk.entry widghets
        if (x := self.config['Y Limits']['y_max']) != 'None':
            self.y_max_entry.insert(0, x)
        if (x := self.config['Y Limits']['y_min']) != 'None':
            self.y_min_entry.insert(0, x)
Example #4
0
        def save(event=None):
            name = name_entry.get().strip()
            if not mailbox:
                # new mailbox
                i = self.b_add.grid_info()['row']
                self.b_add.grid_configure(row=i + 1)
                c = Checkbutton(self.frame)
                c.state(('selected',))
                c.grid(row=i, column=0, pady=4, padx=(4, 0))
                l = Label(self.frame, text=name)
                l.grid(row=i, column=1, padx=4, pady=4)
                b_edit = Button(self.frame, image=self.im_edit, width=1,
                                command=lambda m=name: self.mailbox_info(m))
                b_edit.grid(row=i, column=2, padx=4, pady=4)
                b_del = Button(self.frame, image=self.im_del, width=1,
                               command=lambda m=name: self.del_mailbox(m))
                b_del.grid(row=i, column=3, padx=4, pady=4)
                self.mailboxes[name] = [c, l, b_edit, b_del]
            elif name != mailbox:
                # change name of mailbox
                os.remove(os.path.join(LOCAL_PATH, mailbox))
                c, l, b_edit, b_del = self.mailboxes[mailbox]
                del(self.mailboxes[mailbox])
                l.configure(text=name)
                b_edit.configure(command=lambda m=name: self.mailbox_info(m))
                b_del.configure(command=lambda m=name: self.del_mailbox(m))
                self.mailboxes[name] = [c, l, b_edit, b_del]

            encrypt(name, self.pwd, server_entry.get().strip(),
                    login_entry.get().strip(), password_entry.get().strip(),
                    folder_entry.get().strip())
            top.destroy()
Example #5
0
 def __init__(self, title="", message="", button="Ok", image=None,
              checkmessage="", style="clam", **options):
     """
         Create a messagebox with one button and a checkbox below the button:
             parent: parent of the toplevel window
             title: message box title
             message: message box text
             button: message displayed on the button
             image: image displayed at the left of the message
             checkmessage: message displayed next to the checkbox
             **options: other options to pass to the Toplevel.__init__ method
     """
     Tk.__init__(self, **options)
     self.resizable(False, False)
     self.title(title)
     s = Style(self)
     s.theme_use(style)
     if image:
         Label(self, text=message, wraplength=335,
               font="Sans 11", compound="left",
               image=image).grid(row=0, padx=10, pady=(10, 0))
     else:
         Label(self, text=message, wraplength=335,
               font="Sans 11").grid(row=0, padx=10, pady=(10, 0))
     b = Button(self, text=button, command=self.destroy)
     b.grid(row=2, padx=10, pady=10)
     self.var = BooleanVar(self)
     c = Checkbutton(self, text=checkmessage, variable=self.var)
     c.grid(row=1, padx=10, pady=0, sticky="e")
     self.grab_set()
     b.focus_set()
     self.wait_window(self)
    def PrintDataFrame(self,data,place):
        row,col,width = self.row,0,0

        for element in data.iloc[:, col]:
            var = tk.BooleanVar()
            var.set(True)
            self.stateList.append(var)

            checkBtn = Checkbutton(place, var=self.stateList[-1], onvalue=True, offvalue=False)
            checkBtn.grid(row=row+1, column=0)

            row = row + 1
        row,col = self.row,0

        while (col != len(data.columns)):
            for element in data.iloc[:, col]:
                if (width == 0):
                    width = len(data.columns[col])
                if (len(str(element)) > width):
                    width = len(str(element))
            dataFrameTitles = tk.Label(place, text=data.columns[col], font='Arial 10 bold', relief=tk.RIDGE,width=width + 1,bg='#D3D3D3')
            dataFrameTitles.grid(row=row, column=col+1, sticky='w,e')
            row = row + 1
            color = 'White'
            for element in data.iloc[:, col]:
                dataFrameLabel = tk.Label(place, text=element, font='Arial 10', relief=tk.RIDGE, width=width + 1,bg=color)
                dataFrameLabel.grid(row=row, column=col+1, sticky='w,e')
                row = row + 1
                if (color == 'White'):
                    color = '#D3D3D3'
                else:
                    color = 'White'
            row,width = self.row,0
            col = col + 1
        self.row = self.row + len(data.index) + 1
Example #7
0
def main():
    window = Tk()
    window.title("Welcome Python GUI")

    label = Label(window, text="My Label", font=("Arial Bold", 16))
    label.grid(column=0, row=0)

    txt = Entry(window, width=18)
    txt.grid(column=1, row=0)

    btn = Button(window,
                 text="Button",
                 bg="black",
                 fg="white",
                 command=lambda: clicked(label, txt))
    btn.grid(column=2, row=0)

    combo = Combobox(window)
    combo['values'] = (1, 2, 3, 4, 5, "Text")
    combo.current(1)
    combo.grid(column=0, row=1)

    chk_state = BooleanVar()
    chk_state.set(False)
    chk = Checkbutton(window, text='Choose', var=chk_state)
    chk.grid(column=0, row=2)

    window.geometry('640x480')
    window.mainloop()
Example #8
0
 def _chkbox(self, init: dict, grid: dict) -> Checkbutton:
     chkbox = Checkbutton(
         master=init["master"] if "master" in init else self._frame,
         text=init["text"],
         variable=init["variable"],
         command=init["command"] if "command" in init else None)
     chkbox.grid(row=grid["row"], column=grid["column"], sticky=W, padx=2)
     return chkbox
Example #9
0
    def render_ui(self):
        '''Render the parameter UI elements and attach bindings'''

        row = self.parent.get_row()
        win = self.label_frame

        # The parameter name
        lab = Label(win, text=self.sherpa_par.name,
                    width=12, anchor="e")
        lab.grid(row=row, column=0, padx=(5, 5), pady=2)

        # The current parameter value
        self.val_str = StringVar()
        self.val = Entry(win, textvariable=self.val_str,
                         foreground="black", width=12, justify="right")
        self.val.grid(row=row, column=1, padx=(5, 5), pady=2)
        self.val.delete(0, END)
        self.val.insert(0, self.__format_val(self.sherpa_par.val))
        self.val.last_value = self.val.get()
        self.val.bind("<KeyRelease>",
                      lambda x: self.entry_callback(x, field='val'))

        # Frozen|Thawed checkbox.  Checked if frozen.
        self.fz_box = IntVar()
        if self.sherpa_par.frozen is True:
            self.fz_box.set(1)
        else:
            self.fz_box.set(0)
        fzbtn = Checkbutton(win, text="", variable=self.fz_box,
                            command=self._freeze_thaw)
        fzbtn.grid(row=row, column=2, padx=(5, 5), pady=2)

        # The min value
        self.min_str = StringVar()
        self.min = Entry(win, textvariable=self.min_str,
                         foreground="black", width=12, justify="right")
        self.min.grid(row=row, column=3, padx=(5, 5), pady=2)
        self.min.delete(0, END)
        self.min.insert(0, self.__format_val(self.sherpa_par.min))
        self.min.last_value = self.min.get()
        self.min.bind("<KeyRelease>",
                      lambda x: self.entry_callback(x, field='min'))

        # The max value
        self.max_str = StringVar()
        self.max = Entry(win, textvariable=self.max_str,
                         foreground="black", width=12, justify="right")
        self.max.grid(row=row, column=4, padx=(5, 5), pady=2)
        self.max.delete(0, END)
        self.max.insert(0, self.__format_val(self.sherpa_par.max))
        self.max.last_value = self.max.get()
        self.max.bind("<KeyRelease>",
                      lambda x: self.entry_callback(x, field='max'))

        # The units of the parameter
        par_units = Label(win, text="{}".format(self.sherpa_par.units),
                          width=20, anchor="e")
        par_units.grid(row=row, column=5, padx=(5, 5), pady=2)
Example #10
0
    def __init__(self, master, pwd):
        """Create the mailbox manager dialog."""
        Toplevel.__init__(self, master, class_="CheckMails")
        self.title(_("Mailbox Manager"))
        self.minsize(200, 10)
        self.pwd = pwd
        self.resizable(False, False)
        self.protocol("WM_DELETE_WINDOW", self.quit)
        self.im_add = PhotoImage(master=self, file=ADD)
        self.im_del = PhotoImage(master=self, file=DEL)
        self.im_edit = PhotoImage(master=self, file=EDIT)
        self.mailboxes = {}
        active = CONFIG.get("Mailboxes", "active").split(", ")
        inactive = CONFIG.get("Mailboxes", "inactive").split(", ")
        while "" in active:
            active.remove("")
        while "" in inactive:
            inactive.remove("")
        active.sort()
        inactive.sort()
        self.frame = Frame(self)
        self.columnconfigure(0, weight=1)
        self.frame.columnconfigure(1, weight=1)
        self.frame.grid(row=0, column=0, padx=10, pady=10, sticky="eswn")
        i = -1
        for i, box in enumerate(active):
            c = Checkbutton(self.frame)
            c.state(('selected',))
            c.grid(row=i, column=0, pady=4, padx=(4, 0))
            l = Label(self.frame, text=box)
            l.grid(row=i, column=1, padx=4, pady=4)
            b_edit = Button(self.frame, image=self.im_edit, width=1,
                            command=lambda m=box: self.mailbox_info(m))
            b_edit.grid(row=i, column=2, padx=4, pady=4)
            b_del = Button(self.frame, image=self.im_del, width=1,
                           command=lambda m=box: self.del_mailbox(m))
            b_del.grid(row=i, column=3, padx=4, pady=4)
            self.mailboxes[box] = [c, l, b_edit, b_del]
        for box in inactive:
            i += 1
            c = Checkbutton(self.frame)
            c.grid(row=i, column=0, pady=4, padx=(4, 0))
            l = Label(self.frame, text=box)
            l.grid(row=i, column=1, padx=4, pady=4)
            b_edit = Button(self.frame, image=self.im_edit, width=1,
                            command=lambda m=box: self.mailbox_info(m))
            b_edit.grid(row=i, column=2, padx=4, pady=4)
            b_del = Button(self.frame, image=self.im_del, width=1,
                           command=lambda m=box: self.del_mailbox(m))
            b_del.grid(row=i, column=3, padx=4, pady=4)
            self.mailboxes[box] = [c, l, b_edit, b_del]

        self.b_add = Button(self.frame, image=self.im_add, command=self.mailbox_info, width=1)
        self.b_add.grid(row=i + 1, column=0, columnspan=4, pady=4, padx=4, sticky='w')
Example #11
0
    def initUI(self):
        gui_style = Style()
        gui_style.configure('My.TRadioButton', foreground='#334353')
        gui_style.configure('My.TFrame', columnspan=4)

        self.parent.title("Commands")
        self.pack(fill=BOTH, expand=True)

        self.btn = tk.Button(self, text="Button", command=self.onButton1Click)
        self.btn.grid(row=0, column=0, padx=15)
        ##self.btn.config(foreground = 'green')
        self.btn['fg'] = 'dark green'

        ##cb = Checkbutton(self , text="Checkbutton", command=self.onButton2Click)
        ##cb.pack(side=LEFT)
        self.parent.bind("<Escape>", self.quitApp)

        self.var = BooleanVar()
        cb = Checkbutton(self,
                         text="Bind event",
                         variable=self.var,
                         command=lambda: self.onBind(self.btn))
        cb.grid(row=0, column=1)

        self.rbvar = IntVar()
        self.rbvar.set(1)
        self._1 = 5
        self._2 = 10
        self._3 = 15
        btnFrame = tk.Frame(self)
        self.rb0 = tk.Radiobutton(btnFrame,
                                  text="On",
                                  variable=self.rbvar,
                                  value=self._1,
                                  foreground='red',
                                  background='light gray',
                                  command=self.rbSelected)
        self.rb1 = tk.Radiobutton(btnFrame,
                                  text="Off",
                                  variable=self.rbvar,
                                  value=self._2,
                                  background='light gray',
                                  command=self.rbSelected)
        self.rb2 = tk.Radiobutton(btnFrame,
                                  text="Limbo",
                                  variable=self.rbvar,
                                  value=self._3,
                                  background='light gray',
                                  command=self.rbSelected)
        self.rb0.grid(row=0, column=0)
        self.rb1.grid(row=0, column=1)
        self.rb2.grid(row=0, column=2)
        btnFrame.grid(row=1, column=0, sticky='news', padx=6, pady=12)
Example #12
0
    def create_extra(self):
        "Add run mode on rows 10-12."
        frame = self.frame
        self.restartvar = BooleanVar(self, value=True)
        restart = Checkbutton(frame, variable=self.restartvar, onvalue=True,
                              offvalue=False, text='Restart shell')
        self.args_error = Label(frame, text=' ', foreground='red',
                                font=self.error_font)

        restart.grid(column=0, row=10, columnspan=3, padx=5, sticky='w')
        self.args_error.grid(column=0, row=12, columnspan=3, padx=5,
                             sticky='we')
Example #13
0
    def create_widgets(self):
        super().create_widgets(ok_text='Run')
        frame = self.frame
        self.restartvar = BooleanVar(self, value=True)
        restart = Checkbutton(frame, variable=self.restartvar, onvalue=True,
                              offvalue=False, text='Restart shell')
        self.args_error = Label(frame, text=' ', foreground='red',
                                font=self.error_font)

        restart.grid(column=0, row=4, columnspan=3, padx=5, sticky='w')
        self.args_error.grid(column=0, row=12, columnspan=3, padx=5,
                             sticky='we')
class SegmentationConfigFrame(Frame):
    def __init__(self, parent, configuration):
        Frame.__init__(self, parent)
        self.configuration = configuration

        self.sigma_in = None
        self.tau_in = None
        self.position_in = None
        self.position_value = None

        self.init_view()

    def init_view(self):
        Label(self, text="Sigma").grid(row=0, column=0, sticky="w")
        self.sigma_in = Entry(self)
        self.sigma_in.insert(END, self.configuration.qs_sigma)
        self.sigma_in.grid(row=0, column=1, sticky="w", padx=5, pady=5)

        Label(self, text="Tau").grid(row=1, column=0, sticky="w")
        self.tau_in = Entry(self)
        self.tau_in.insert(END, self.configuration.qs_tau)
        self.tau_in.grid(row=1, column=1, sticky="w", padx=5, pady=5)

        self.position_value = IntVar()
        self.position_in = Checkbutton(self,
                                       text="Use position",
                                       variable=self.position_value)
        self.position_in.grid(row=2,
                              column=0,
                              columnspan=2,
                              sticky="w",
                              padx=5,
                              pady=5)

    def get_values(self):
        errors = []

        try:
            sigma_val = int(self.sigma_in.get())
        except ValueError:
            errors.append("Invalid value for sigma")

        try:
            tau_val = int(self.tau_in.get())
        except ValueError:
            errors.append("Invalid value for tau")

        if errors:
            raise ValidationError("Segmentation validation error", errors)
        return sigma_val, tau_val, self.position_value.get()
Example #15
0
    def make_cdna_frame(self, parent):
        cdna_f = Frame(parent, borderwidth=1, relief="sunken")
        self.cdna = IntVar(cdna_f, value=1)
        cb = Checkbutton(cdna_f, variable=self.cdna, text="get cDNA sequence")
        cb.bind("<Button-1>", self.check_box_callback)
        cb.grid(row=1, column=1, sticky="W")
        self.splice = StringVar(cdna_f)

        [Radiobutton(cdna_f,text=label[1],variable=self.splice,value=label[0])\
             .grid(column=1,row=num+2,sticky="W") for num,label in \
             enumerate(self.splice_values)]
        self.splice.set("cds")
        self.check_box_callback(cb)
        return cdna_f
Example #16
0
 def make_gdna_frame(self, parent):
     gdna_f = Frame(parent, borderwidth=1, relief="sunken")
     self.gdna = IntVar(gdna_f, value=1)
     cb = Checkbutton(gdna_f, variable=self.gdna, text="get gDNA sequence")
     cb.bind("<Button-1>", self.check_box_callback)
     cb.grid(row=1, column=1, sticky="W", columnspan=2)
     self.flank = IntVar(gdna_f, value=0)
     Entry(gdna_f, width=6, text=self.flank,
           justify="right").grid(row=2, column=1, sticky="W")
     Label(gdna_f, text="bp flanking gene").grid(row=2,
                                                 column=2,
                                                 sticky="W")
     self.check_box_callback(cb)
     return gdna_f
    def __init__(self,
                 title="",
                 message="",
                 button="Ok",
                 image=None,
                 checkmessage="",
                 **options):
        """
            Create a messagebox with one button and a checkbox below the button:
                parent: parent of the toplevel window
                title: message box title
                message: message box text
                button: message displayed on the button
                image: image displayed at the left of the message
                checkmessage: message displayed next to the checkbox
                **options: other options to pass to the Toplevel.__init__ method
        """
        Tk.__init__(self, **options)
        self.title(title)
        self.resizable(False, False)
        self.columnconfigure(1, weight=1)
        self.rowconfigure(0, weight=1)

        style = Style(self)
        style.theme_use(STYLE)
        self.img = None
        if isinstance(image, str):
            try:
                self.img = PhotoImage(file=image)
            except TclError:
                self.img = PhotoImage(data=image)
        elif image:
            self.img = image
        if self.img:
            Label(self, image=self.img).grid(row=0,
                                             column=0,
                                             padx=10,
                                             pady=(10, 0))
        Label(self, text=message, wraplength=335,
              font="TkDefaultFont 10 bold").grid(row=0,
                                                 column=1,
                                                 padx=10,
                                                 pady=(10, 0))
        b = Button(self, text=button, command=self.destroy)
        b.grid(row=2, padx=10, pady=10, columnspan=2)
        self.var = BooleanVar(self)
        c = Checkbutton(self, text=checkmessage, variable=self.var)
        c.grid(row=1, padx=10, pady=4, sticky="e", columnspan=2)
        self.grab_set()
        b.focus_set()
Example #18
0
def popup_settings() -> None:
    """Открывает окно 'Настройки'."""
    popup = Toplevel()
    log_var = BooleanVar()
    launchicon = PhotoImage(file = 'data/imgs/20ok.png')
    center_x_pos = int(popup.winfo_screenwidth() / 2) - POPUP_WIDTH
    center_y_pos = int(popup.winfo_screenheight() / 2) - POPUP_HEIGHT

    popup.geometry(f'{POPUP_WIDTH}x{POPUP_HEIGHT}+'
                   f'{center_x_pos}+{center_y_pos}')
    popup.title(_('Settings'))
    popup.resizable(False, False)
    frame_settings = LabelFrame(popup, text = _('Settings'))
    frame_settings.grid(sticky = 'NWSE', column = 0, row = 0,
                        ipadx = 5, padx = 5, pady = 5)

    lang_label = Label(frame_settings, text = _('Localisation'))
    lang_label.grid(column = 0, row = 0, ipadx = 5)

    logs_label = Label(frame_settings, text = _('Logging'))
    logs_label.grid(column = 0, row = 1, ipadx = 5)

    lang_vars = Combobox(frame_settings, state = 'readonly',
                         values = check_langs(), width = 4)
    lang_vars.current(current_lang())
    lang_vars.grid(column = 1, row = 0)
    log_settings = Checkbutton(frame_settings,
                               variable = log_var, onvalue = True,
                               offvalue = False)

    log_settings.grid(column = 1, row = 1)

    if getconfig()['settings']['logging'] == 'True':
        log_var.set(True)
    elif getconfig()['settings']['logging'] == 'False':
        log_var.set(False)

    apply_button = Button(popup, text = _('Apply'), width = 20,
                          compound = 'left', image = launchicon,
                          command = lambda: apply(
                                                  lang_vars.get(),
                                                  popup, log_var.get()
                                                  )
                          )
    apply_button.grid(column = 0, row = 1)

    popup.grab_set()
    popup.focus_set()
    popup.wait_window()
Example #19
0
    def __init__(self, parent, values, callback, **kwargs):
        super().__init__(parent, **kwargs)
        self.callback = callback
        self.options = []
        self.values = {}

        for value in values:
            option_selected = IntVar(self.frame)
            option = Checkbutton(self.frame,
                                 text=value,
                                 variable=option_selected,
                                 command=partial(self._option_changed, value))
            option.grid(padx=5, pady=5, sticky=W)
            self.options.append((value, option_selected))
            self.values[value] = option_selected
    def __init__(self, window):
        super(Parameters, self).__init__(window)
        self.window = window

        title = Label(self, text="Paramètres")
        self.usespace = IntVar()
        check_usespace = Checkbutton(self,
                                     text="Espace préféré",
                                     variable=self.usespace)
        valide = Button(self, text="Valider", command=self.validate)

        title.grid(row=0, column=0, padx=10, pady=10)
        check_usespace.grid(row=1, column=0, padx=10, pady=5)
        valide.grid(row=2, column=0, padx=10, pady=5)

        self.setup_ui()
Example #21
0
    def make_feature_frame(self, parent):
        primer_f = Frame(parent, borderwidth=1, relief="sunken")
        self.get_primers = IntVar(primer_f, 0)
        cb = Checkbutton(primer_f,
                         text="Import primers from file",
                         variable=self.get_primers)
        cb.bind("<Button-1>", self.check_box_callback)
        cb.grid(row=1, column=1, sticky="SNW", columnspan=3)
        if self.default_primer_path and self.default_primer_path.exists():
            self.primer_path = self.default_primer_path

        else:
            self.primer_path = plp().home().resolve()
        primer_path_view = StringVar(primer_f, "")
        self.text_view_limit(self.primer_path,
                             primer_path_view,
                             width=self.width)
        Label(primer_f, text="Select primer file:",
              justify="left").grid(row=2,
                                   column=1,
                                   sticky="SNEW",
                                   columnspan=2)
        kw = {
            "method": tfd.askopenfilename,
            "path_var": "primer_path",
            "width": self.width,
            "title": "Select primer file",
            "str_var": primer_path_view
        }
        Button(primer_f,
               textvariable=primer_path_view,
               command=self.path_callback(**kw),
               width=35,
               style="B.TButton").grid(row=2,
                                       column=3,
                                       sticky="SNEW",
                                       columnspan=3)
        Label(primer_f, text="Allow up to", justify="left").grid(row=3,
                                                                 column=1,
                                                                 sticky="NWS")
        self.mismatch = IntVar(primer_f, "0")
        Entry(primer_f, textvariable=self.mismatch, justify="center",
              width=3).grid(row=3, column=2, sticky="NWS")
        Label(primer_f, text="mismatches in primers",
              justify="left").grid(row=3, column=3, sticky="NWS")
        self.check_box_callback(cb)
        return primer_f
Example #22
0
    def __init__(self, parent, plot, k):
        super(ClusterSelect,
              self).__init__(parent)  #,text="Scatterplot-Options")
        self.plot = plot  #type:SimpleScatter
        self.ds = plot.ds
        apply = plot.apply_settings

        self.cvars = []

        for i in range(k):
            cv = StringVar(self, value="1")
            cb = Checkbutton(self,
                             text="Cluster " + str(i),
                             variable=cv,
                             command=apply)
            cb.grid(column=0, row=i, sticky=(N, E, W), columnspan=1)
            self.cvars.append(cv)
Example #23
0
    def create_rdfs_frame(self, master:Notebook):
        rdfsframe = Frame(master, padding = '3 3 3 3', width=600, height=400)
        Label(rdfsframe, text='RDFS Name:', padding='3 3 3 3').grid(row=0, column=0, padx=3, pady=3)
        rdfsNameLbl = Label(rdfsframe, textvariable=self.rdfsName,
                            background='#bbb', relief=SUNKEN, padding='3 0 3 3')
        rdfsNameLbl.grid(row=0, column=1, columnspan=3, sticky=EW, padx=3, pady=6)
        self.classtree.heading(column='#0', text='ClassTree')
        ysb = Scrollbar(rdfsframe, orient='vertical', command=self.classtree.yview)
        xsb = Scrollbar(rdfsframe, orient='horizontal', command=self.classtree.xview)
        self.classtree.configure(yscrollcommand=ysb.set)
        self.classtree.configure(xscrollcommand=xsb.set)
        self.classtree.bind('<<TreeviewSelect>>', self.update_classinfo)
        self.classtree.grid(row=1, column=0, columnspan=2, in_=rdfsframe, sticky=NSEW)
        self.classtree.lift(rdfsframe)
        self.classtree.tag_configure('include', foreground='black')
        self.classtree.tag_configure('notinclude', foreground='gray')
        ysb.grid(row=1, column=2, sticky=(NS))
        xsb.grid(row=2, column=0, columnspan=2, sticky=(EW))
        classinfoframe = Frame(rdfsframe, width=300, height=400)
        classinfoframe.grid(row=1, column=3, padx=3, pady=3, sticky=(NSEW))
        Label(classinfoframe, text='Class Name:',
              font='bold', padding='3 3 3 3').grid(row=1, column=0, sticky=NW)
        classNameLbl = Label(classinfoframe, textvariable=self.className,
                            background='#bbb', relief=SUNKEN, padding='3 3 3 3',
                             font='bold', width=25)
        classNameLbl.grid(row=1, column=1, sticky=EW)
        Label(classinfoframe, text='Description:',
              font='bold', padding='3 3 3 3').grid(row=2, column=0, sticky=NW)
        self.classDescrTxt.grid(row=2, column=1, in_=classinfoframe, sticky=EW)
        self.classDescrTxt.lift(classinfoframe)
        include_chk = Checkbutton(classinfoframe,
                                  text='include this class',
                                  variable=self.includeclass,
                                  command=self.include_class)
        include_chk.grid(row=3, column=1, sticky=E)
        Label(classinfoframe, text='Properties:',
              font='bold', padding='3 3 3 3').grid(row=5, column=0, sticky=NW)
        self.propertiesframe.grid(in_ = classinfoframe, row=5, column=1, sticky=(N+E+S+W))
        self.propertiesframe.lift(classinfoframe)

        classinfoframe.rowconfigure(5, weight=1)
        classinfoframe.columnconfigure(1, weight=1)
        rdfsframe.columnconfigure(1, weight=1)
        rdfsframe.columnconfigure(3, weight=3)
        rdfsframe.rowconfigure(1, weight=1)        
        master.add(rdfsframe, text='RDFS')
Example #24
0
    def _create_widgets(self):
        frame = Frame(self)
        frame.grid(sticky='nsew')

        # TODO: add line to show destination for data? maybe source too...

        # number of files being transferred and total size
        lbl_file_count = Label(frame, textvariable=self.file_count_var)
        lbl_file_count.grid(column=0, row=0)
        lbl_total_size = Label(frame, textvariable=self.total_file_size)
        lbl_total_size.grid(column=1, row=0)
        # info about current file being transferred
        label2 = Label(frame, text="Current file being transferred:")
        label2.grid(column=0, row=1, columnspan=2, sticky='w')
        lbl_curr_file = Label(frame, textvariable=self.curr_file, width=60)
        lbl_curr_file.grid(column=0, row=2)
        self.file_prog = Progressbar(frame, variable=self.curr_file_progress)
        self.file_prog.grid(column=1, row=2, pady=2)
        # info about total progress
        label3 = Label(frame, text="Overall progress:")
        label3.grid(column=0, row=3, sticky='w')
        total_prog = Progressbar(frame,
                                 variable=self.transferred_count,
                                 maximum=self.file_count)
        total_prog.grid(column=1, row=3)

        # buttons
        btn_frame = Frame(frame)
        force_check = Checkbutton(btn_frame,
                                  text="Force",
                                  variable=self.force_override)
        force_check.grid(column=0, row=0, sticky='e')
        verify_check = Checkbutton(btn_frame,
                                   text="Verify",
                                   variable=self.verify)
        if self.opt_verify:
            verify_check.grid(column=1, row=0, sticky='e')
        ttm.register(force_check,
                     ("Whether to force the overwriting of current data.\n"
                      "This should only be done if there was an error and the "
                      "data needs to be re-sent."))
        btn_start = Button(btn_frame, text="Begin", command=self._transfer)
        btn_start.grid(column=2, row=0, sticky='e')
        btn_exit = Button(btn_frame, text="Exit", command=self._exit)
        btn_exit.grid(column=3, row=0, sticky='w')
        btn_frame.grid(column=0, row=4, columnspan=2)
Example #25
0
    def init_ui(self):
        self.master.title("MAC forger")
        self.master.resizable(False, False)

        Style().configure("TButton", padding=(0, 5, 0, 5), font='serif 10', foreground='Blue')
        Style().configure("TLabel", font='serif 10')
        Style().configure("TCheckbutton", foreground='Blue')
        Style().configure("mac.TLabel", font='serif 12', foreground='Red')

        title = Label(self, text="MAC forger")
        title.grid(row=0)

        interfaces_label = Label(self.master, text="Interface:")
        interfaces_label.grid(row=1, column=0, sticky=E, pady=10, padx=20)
        self.interface_selected.set(self.interfaces[0])
        interfaces = OptionMenu(self.master, self.interface_selected, *self.interfaces)
        interfaces.grid(row=1, column=1, sticky=(E, W), pady=10, padx=20)
        self.interface_selected.trace_add('write', self.reload_mac)
        reload_button = Button(self.master, text="Reload", command=self.update_interface)
        reload_button.grid(row=1, column=2, pady=10, padx=10)
        reload_button = Button(self.master, text="Reload All", command=self.update_interfaces)
        reload_button.grid(row=1, column=3, pady=10, padx=10)

        actual_mac_label = Label(self.master, text="Actual MAC Address:")
        actual_mac_label.grid(row=2, column=0, sticky=E, pady=10, padx=20, rowspan=2)
        actual_mac = Label(self.master, style='mac.TLabel', justify=CENTER, textvariable=self.actual_mac)
        actual_mac.grid(row=2, column=1, pady=10, padx=20, rowspan=2)
        self.actual_mac.set("FF : FF : FF : FF : FF : FF")
        reload_interface = Checkbutton(self.master, text=" Reload interface\n after changes", variable=self.reload_interface)
        reload_interface.grid(row=2, column=2, padx=5, rowspan=2, sticky=(N, W))
        fix_button = Checkbutton(self.master, text="  Fix 1° byte", variable=self.fix_first_byte)
        fix_button.grid(row=3, column=2, padx=5, rowspan=2, sticky=(N, W))
        reset_button = Button(self.master, text="Restore\n Default", command=self.reset_mac)
        reset_button.grid(row=2, column=3, pady=10, padx=5, rowspan=2)

        mac_label = Label(self.master, text="MAC Address: ")
        mac_label.grid(row=4, column=0, sticky=E, pady=10, padx=20)
        mac_entry = Entry(width=25, justify=CENTER, font='serif 12', textvariable=self.mac)
        mac_entry.grid(row=4, column=1, pady=10, padx=20)
        self.mac.set("FF:FF:FF:FF:FF:FF")
        self.mac.trace_add('write', self.mac_entry_rules)
        random_button = Button(self.master, text="Generate\nRandom", command=self.random_mac)
        random_button.grid(row=4, column=2, pady=10, padx=5)
        change_button = Button(self.master, text="Confirm\n  MAC", command=self.change_mac)
        change_button.grid(row=4, column=3, pady=10, padx=5)
Example #26
0
class HControls(LabelFrame):
    def __init__(self, parent, params):
        super(HControls, self).__init__(parent, text="Histogram-Options")
        self.params = params
        self.parent = parent  #type:SimpleScatter

        apply_changes = self.parent.apply_settings

        #logarithmic scale
        self.lgvar = StringVar(value="0")
        self.log_cb = Checkbutton(self,
                                  text='logarithmic scale',
                                  command=apply_changes,
                                  variable=self.lgvar)
        self.log_cb.grid(column=0, row=1, sticky=(W, N), columnspan=2)

    # returns True if the setting for a logarithmic scale is enabled, else False
    def doLog(self):
        return self.lgvar.get() is not "0"
Example #27
0
    def query_and_result(self,query_from_client):
        query = str(query_from_client)
        n_relevant_docs,relevant_docs = self.start_search(query=query)

        # create canvas
        canvas = Canvas(self.master)
        canvas.grid(row=4, columnspan=3, sticky="news")

        # create another frame
        canvas_Frame = Frame(canvas)
        canvas.create_window((0, 0), window=canvas_Frame, anchor=N + W)

        if n_relevant_docs > 0:
            sort_var = IntVar()
            sort_time_chack_btn = Checkbutton(self.master,text="sort by time",onvalue=0 ,variable=sort_var,command=lambda :self.sort_by_time(canvas_Frame,relevant_docs))
            sort_pop_chack_btn = Checkbutton(self.master,text="sort by popularity",onvalue=1,variable=sort_var,command=lambda :self.sort_by_pop(canvas_Frame,relevant_docs))
            sort_chack_btn = Checkbutton(self.master, text="sort by relevant", onvalue=2, variable=sort_var,
                                         command=lambda: self.print_results(canvas_Frame, relevant_docs))
            sort_chack_btn.grid(row=3, column=0)
            sort_pop_chack_btn.grid(row=3, column=1)
            sort_time_chack_btn.grid(row=3, column=2)

        #create scrollbar
        scrollbar = Scrollbar(self.master, orient="vertical", command=canvas.yview)
        scrollbar.grid(row=3, columnspan=4,sticky=E)

        #bind canvas and scrollbar
        canvas.configure(yscrollcommand=scrollbar.set)
        canvas.bind('<Configure>',lambda e: canvas.configure(scrollregion=canvas.bbox("all")))

        n_text = "There is "+str(n_relevant_docs)+" results"
        n_lable = Label(canvas_Frame, text=n_text, font=("serif", 10))
        n_lable.grid(row=3, column=1)
        self.print_results(canvas_Frame= canvas_Frame,relevant_docs=relevant_docs)
Example #28
0
    def __init__(self, parent, funnel, index, command_stack):
        tk.Frame.__init__(self, parent, borderwidth=4, relief="raised")
        Subscriber.__init__(self, funnel)
        Observable.__init__(self)
        self._funnel = funnel
        self._command_stack = command_stack
        self._active_var = tk.IntVar()
        self._active_var.trace_add("write", self._switch_active)
        self._position_var = tk.StringVar()
        self._position_var.trace_add("write", self._set_position)
        self._oval_var = tk.IntVar()
        self._oval_var.trace_add("write", self._switch_oval)

        self._update()
        self.bind("<Button-1>", self._on_click)

        is_active = Checkbutton(self,
                                text=f"Funnel n°{index}:  ",
                                variable=self._active_var)
        is_active.grid(columnspan=3)
        is_active.bind("<FocusIn>", self._on_get_focus)
        is_active.bind("<FocusOut>", self._on_lost_focus)

        pos_label = Label(self, text="  Position: ")
        pos_label.grid(sticky=tk.E)
        pos_label.bind("<Button-1>", self._on_click)

        self._pos_entry = Entry(self, textvariable=self._position_var, width=6)
        self._pos_entry.grid(row=1, column=1, sticky=tk.W)
        self._pos_entry.bind("<FocusIn>", self._on_get_focus)
        self._pos_entry.bind("<FocusOut>", self._on_lost_focus)

        is_oval = Checkbutton(self, text="Is Oval", variable=self._oval_var)
        is_oval.grid(row=1, column=2)
        is_oval.bind("<FocusIn>", self._on_get_focus)
        is_oval.bind("<FocusOut>", self._on_lost_focus)

        self.columnconfigure(0, weight=1)
        self.columnconfigure(1, weight=1)
        self.columnconfigure(2, weight=1)
Example #29
0
 def __init__(self, master, ordinances=False, **kwargs):
     super(Options, self).__init__(master, **kwargs)
     self.ancestors = IntVar()
     self.ancestors.set(4)
     self.descendants = IntVar()
     self.spouses = IntVar()
     self.ordinances = IntVar()
     self.contributors = IntVar()
     self.start_indis = StartIndis(self)
     self.fid = StringVar()
     btn = Frame(self)
     entry_fid = EntryWithMenu(btn, textvariable=self.fid, width=16)
     entry_fid.bind('<Key>', self.enter)
     label_ancestors = Label(self, text=_('Number of generations to ascend'))
     entry_ancestors = EntryWithMenu(self, textvariable=self.ancestors, width=5)
     label_descendants = Label(self, text=_('Number of generations to descend'))
     entry_descendants = EntryWithMenu(self, textvariable=self.descendants, width=5)
     btn_add_indi = Button(btn, text=_('Add a FamilySearch ID'), command=self.add_indi)
     btn_spouses = Checkbutton(self, text='\t' + _('Add spouses and couples information'), variable=self.spouses)
     btn_ordinances = Checkbutton(self, text='\t' + _('Add Temple information'), variable=self.ordinances)
     btn_contributors = Checkbutton(self, text='\t' + _('Add list of contributors in notes'), variable=self.contributors)
     self.start_indis.grid(row=0, column=0, columnspan=3)
     entry_fid.grid(row=0, column=0, sticky='w')
     btn_add_indi.grid(row=0, column=1, sticky='w')
     btn.grid(row=1, column=0, columnspan=2, sticky='w')
     entry_ancestors.grid(row=2, column=0, sticky='w')
     label_ancestors.grid(row=2, column=1, sticky='w')
     entry_descendants.grid(row=3, column=0, sticky='w')
     label_descendants.grid(row=3, column=1, sticky='w')
     btn_spouses.grid(row=4, column=0, columnspan=2, sticky='w')
     if ordinances:
         btn_ordinances.grid(row=5, column=0, columnspan=3, sticky='w')
     btn_contributors.grid(row=6, column=0, columnspan=3, sticky='w')
     entry_ancestors.focus_set()
Example #30
0
 def make_auto_open(self, parent):
     auto_f = Frame(parent)
     self.do_open = IntVar(auto_f, value=1)
     cb = Checkbutton(
         auto_f,
         variable=self.do_open,
         text="Automatically open files after annotation complete")
     cb.bind("<Button-1>", self.check_box_callback)
     cb.grid(row=1, column=1, sticky="NW", columnspan=3)
     if self.default_program_path and self.default_program_path.exists():
         self.program_path = self.default_program_path
     else:
         self.program_path = plp.home()
         for i in self.program_locations:
             if i.exists():
                 self.program_path = i
     program_path_view = StringVar(auto_f, "")
     self.text_view_limit(self.program_path,
                          program_path_view,
                          width=self.width)
     Label(auto_f, text="Select ApE program:",
           justify="left").grid(row=2, column=1, sticky="SNW", columnspan=2)
     kw = {
         "method": tfd.askopenfilename,
         "path_var": "program_path",
         "title": "Select ApE program",
         "str_var": program_path_view,
         "width": self.width
     }
     Button(auto_f,
            textvariable=program_path_view,
            command=self.path_callback(**kw),
            width=35,
            style="B.TButton").grid(row=2,
                                    column=3,
                                    sticky="NSW",
                                    columnspan=3)
     self.check_box_callback(cb)
     return auto_f
Example #31
0
 def _add_checkbox_to_frame_grid(
         cls,
         frame_and_name: FrameAndName,
         text: str,
         var: Variable,
         on_value,
         off_value,
         function: Callable,
         row: int,
         column: int,
         sticky: GridPositionEnum = GridPositionEnum.NONE) -> Checkbutton:
     cls._debug(f'Add Checkbox Grid [{text}] Row [{row}] Column [{column}]')
     checkbox = \
         Checkbutton(
             frame_and_name.frame,
             text='Show only active securities',
             variable=var,
             onvalue=on_value,
             offvalue=off_value,
             command=function)
     checkbox.grid(row=row, column=column, sticky=sticky.value)
     return checkbox
Example #32
0
	def open_light_settings( self, top, toplevel = 0 ):
		""" Opens a dialog for modifying the light settings """
		L = self.dir['canvas'].config("lighting")
		frame = tk.Frame(top)
		
		vars = [tk.IntVar() for val in range(len(L.settings))]
		[var.set(val) for var,val in zip(vars,L.settings.values())]
		def set(key,val):
			if key == 'texture': 
				self.dir['canvas'].texture = 1-self.dir['canvas'].texture
				L.settings[key] = self.dir['canvas'].texture
			elif key == 'fill': 
				self.dir['canvas'].fill = 1-self.dir['canvas'].fill
				L.settings[key] = self.dir['canvas'].fill
			else: L.settings[key] = 1-L.settings[key]
		
		for i,(key,val) in enumerate(L.settings.items()):				
			choice = Checkbutton(top,text=str(key),variable=vars[i])
			choice.config(command=lambda i=i,
				key=key:set(key,val))
			choice.grid(row=i,column=0,sticky='w')

		if toplevel:
			top.mainloop()
Example #33
0
 def __init__(self, master, ordinances=False, **kwargs):
     super().__init__(master, **kwargs)
     self.ancestors = IntVar()
     self.ancestors.set(4)
     self.descendants = IntVar()
     self.spouses = IntVar()
     self.ordinances = IntVar()
     self.contributors = IntVar()
     self.start_indis = StartIndis(self)
     self.fid = StringVar()
     btn = Frame(self)
     entry_fid = EntryWithMenu(btn, textvariable=self.fid, width=16)
     entry_fid.bind("<Key>", self.enter)
     label_ancestors = Label(self,
                             text=_("Number of generations to ascend"))
     entry_ancestors = EntryWithMenu(self,
                                     textvariable=self.ancestors,
                                     width=5)
     label_descendants = Label(self,
                               text=_("Number of generations to descend"))
     entry_descendants = EntryWithMenu(self,
                                       textvariable=self.descendants,
                                       width=5)
     btn_add_indi = Button(btn,
                           text=_("Add a FamilySearch ID"),
                           command=self.add_indi)
     btn_spouses = Checkbutton(
         self,
         text="\t" + _("Add spouses and couples information"),
         variable=self.spouses,
     )
     btn_ordinances = Checkbutton(self,
                                  text="\t" + _("Add Temple information"),
                                  variable=self.ordinances)
     btn_contributors = Checkbutton(
         self,
         text="\t" + _("Add list of contributors in notes"),
         variable=self.contributors,
     )
     self.start_indis.grid(row=0, column=0, columnspan=3)
     entry_fid.grid(row=0, column=0, sticky="w")
     btn_add_indi.grid(row=0, column=1, sticky="w")
     btn.grid(row=1, column=0, columnspan=2, sticky="w")
     entry_ancestors.grid(row=2, column=0, sticky="w")
     label_ancestors.grid(row=2, column=1, sticky="w")
     entry_descendants.grid(row=3, column=0, sticky="w")
     label_descendants.grid(row=3, column=1, sticky="w")
     btn_spouses.grid(row=4, column=0, columnspan=2, sticky="w")
     if ordinances:
         btn_ordinances.grid(row=5, column=0, columnspan=3, sticky="w")
     btn_contributors.grid(row=6, column=0, columnspan=3, sticky="w")
     entry_ancestors.focus_set()
Example #34
0
class MarkovDemo(Frame):

    "MarkovDemo(master=None, **kw) -> MarkovDemo instance"

    TEXT = dict(height=2, width=46, wrap=WORD)  # Text Options
    GRID = dict(padx=5, pady=5)                 # Grid Options

    # Initialize a MarkovDemo instance with a GUI for interaction.

    def __init__(self, master=None, **kw):
        "Initialize the MarkovDemo instance's widgets and settings."
        super().__init__(master, **kw)
        self.build_widgets()
        self.place_widgets()
        self.setup_widgets()
        self.grid_rowconfigure(2, weight=1)
        self.grid_rowconfigure(3, weight=1)
        self.grid_columnconfigure(0, weight=1)
        self.key = self.primer = None

    def build_widgets(self):
        "Build the various widgets that will be used in the program."
        # Create processing frame widgets.
        self.processing_frame = LabelFrame(self, text='Processing Mode:')
        self.mode_var = StringVar(self, 'encode')
        self.decode_button = Radiobutton(self.processing_frame,
                                         text='Decode Cipher-Text',
                                         command=self.handle_radiobuttons,
                                         value='decode',
                                         variable=self.mode_var)
        self.encode_button = Radiobutton(self.processing_frame,
                                         text='Encode Plain-Text',
                                         command=self.handle_radiobuttons,
                                         value='encode',
                                         variable=self.mode_var)
        self.freeze_var = BooleanVar(self, False)
        self.freeze_button = Checkbutton(self.processing_frame,
                                         text='Freeze Key & Primer',
                                         command=self.handle_checkbutton,
                                         offvalue=False,
                                         onvalue=True,
                                         variable=self.freeze_var)
        # Create encoding frame widgets.
        self.encoding_frame = LabelFrame(self, text='Encoding Options:')
        self.chain_size_label = Label(self.encoding_frame, text='Chain Size:')
        self.chain_size_entry = Entry(self.encoding_frame)
        self.plain_text_label = Label(self.encoding_frame, text='Plain-Text:')
        self.plain_text_entry = Entry(self.encoding_frame)
        # Create input frame widgets.
        self.input_frame = LabelFrame(self, text='Input Area:')
        self.input_text = ScrolledText(self.input_frame, **self.TEXT)
        # Create output frame widgets.
        self.output_frame = LabelFrame(self, text='Output Area:')
        self.output_text = ScrolledText(self.output_frame, **self.TEXT)

    def place_widgets(self):
        "Place the widgets where they belong in the MarkovDemo frame."
        # Locate processing frame widgets.
        self.processing_frame.grid(sticky=EW, **self.GRID)
        self.decode_button.grid(row=0, column=0, **self.GRID)
        self.encode_button.grid(row=0, column=1, **self.GRID)
        self.freeze_button.grid(row=0, column=2, **self.GRID)
        # Locate encoding frame widgets.
        self.encoding_frame.grid(sticky=EW, **self.GRID)
        self.chain_size_label.grid(row=0, column=0, sticky=W, **self.GRID)
        self.chain_size_entry.grid(row=0, column=1, sticky=EW, **self.GRID)
        self.plain_text_label.grid(row=1, column=0, sticky=W, **self.GRID)
        self.plain_text_entry.grid(row=1, column=1, sticky=EW, **self.GRID)
        self.encoding_frame.grid_columnconfigure(1, weight=1)
        # Locate input frame widgets.
        self.input_frame.grid(sticky=NSEW, **self.GRID)
        self.input_text.grid(sticky=NSEW, **self.GRID)
        self.input_frame.grid_rowconfigure(0, weight=1)
        self.input_frame.grid_columnconfigure(0, weight=1)
        # Locate output frame widgets.
        self.output_frame.grid(sticky=NSEW, **self.GRID)
        self.output_text.grid(sticky=NSEW, **self.GRID)
        self.output_frame.grid_rowconfigure(0, weight=1)
        self.output_frame.grid_columnconfigure(0, weight=1)

    def setup_widgets(self):
        "Setup each widget's configuration for the events they handle."
        self.input_text.bind('<Key>', self.handle_key_events)
        self.input_text.bind('<Control-Key-a>', self.handle_control_a)
        self.input_text.bind('<Control-Key-/>', lambda event: 'break')
        self.output_text['state'] = DISABLED
        self.output_text.bind('<Control-Key-a>', self.handle_control_a)
        self.output_text.bind('<Control-Key-/>', lambda event: 'break')

    ########################################################################

    # Take care of any special event needing dedicated processing.

    def handle_radiobuttons(self):
        "Change the interface based on the encoding / decoding setting."
        if self.encrypting:
            self.freeze_button.grid()
            if not self.freeze_var.get():
                self.encoding_frame.grid()
        else:
            self.freeze_button.grid_remove()
            if not self.freeze_var.get():
                self.encoding_frame.grid_remove()
        self.handle_key_events(None)

    def handle_checkbutton(self):
        "Change the interface based on the key / primer freeze setting."
        if self.freeze_var.get():
            self.encoding_frame.grid_remove()
        else:
            self.encoding_frame.grid()

    def handle_key_events(self, event):
        "Schedule refreshing the output area after an input area event."
        if event is None or event.char and event.state | 0o11 == 0o11:
            self.after_idle(self.refresh)

    @staticmethod
    def handle_control_a(event):
        "Select all text in the widget associated with the given event."
        event.widget.tag_add(SEL, 1.0, END + '-1c')
        return 'break'

    ########################################################################

    # Handle interface's updates when either encoding or decoding.

    def refresh(self):
        "Refresh the output based on the value of the input."
        text = self.input_text.get(1.0, END + '-1c')
        if not text:
            self.output = text
        elif self.encrypting:
            self.encode(text)
        else:
            self.decode(text)

    def output(self, value):
        "Set the text in the output area to the string value."
        self.output_text['state'] = NORMAL
        self.output_text.delete(1.0, END)
        self.output_text.insert(END, value)
        if self.encrypting and self.freeze_var.get():
            self.output_text.see(END)
        self.output_text['state'] = DISABLED

    output = property(fset=output, doc='Output area property.')

    @property
    def chain_size(self):
        "Chain size for the Markov chains used when encrypting."
        try:
            value = ast.literal_eval(self.chain_size_entry.get())
            assert isinstance(value, int) and 2 <= value <= 256
            return value
        except:
            self.chain_size_entry.delete(0, END)
            self.chain_size_entry.insert(0, '2')
            return 2

    @property
    def plain_text(self):
        "Plain text or ignored characters in encryption process."
        try:
            value = self.repr_to_obj(self.plain_text_entry.get(), '')
            assert isinstance(value, str)
            return value
        except:
            self.plain_text_entry.delete(0, END)
            return ''

    ########################################################################

    # Encrypt a string for display in the interface's output area.

    def encode(self, string):
        "Encode the string and show the cipher-text in the output."
        try:
            cipher = self.build_cipher(string)
        except ValueError:
            self.output = ''
        except:
            self.output = traceback.format_exc()
        else:
            self.output = self.build_header() + '\n\n' + cipher

    def build_cipher(self, string):
        "Build cipher-text based on plain-text and return answer."
        if self.key and self.freeze_var.get():
            cipher, primer = me.encrypt_str(string, self.key, self.primer)
        else:
            args = string, self.chain_size, self.plain_text
            cipher, self.key, self.primer = me.auto_encrypt_str(*args)
        return cipher

    def build_header(self):
        "Build header from key and primer values in current use."
        header = '\n'.join(map(self.bytes_to_repr, self.key.data))
        header += '\n' + self.bytes_to_repr(self.primer.data)
        return header

    ########################################################################

    # Decrypt a string for display in the interface's output area.

    def decode(self, string):
        "Decode encrypted message and display plain-text in output."
        try:
            cipher = self.extract_keys(string)
            text = self.extract_text(cipher)
        except ValueError:
            self.output = ''
        except:
            self.output = traceback.format_exc()
        else:
            self.output = text

    def extract_keys(self, string):
        "Extract keys to decryption and return the cipher-text area."
        header, cipher = string.split('\n\n', 1)
        *key, primer = map(self.repr_to_obj, header.split('\n'))
        self.key, self.primer = me.Key(tuple(key)), me.Primer(primer)
        return cipher

    def extract_text(self, string):
        "Extract text message from string using built key and primer."
        text, primer = me.decrypt_str(string, self.key, self.primer)
        return text

    ########################################################################

    # Provide some special methods to simplify the program's code.

    @property
    def encrypting(self):
        "Encrypting boolean stating current operations mode."
        return {'encode': True, 'decode': False}[self.mode_var.get()]

    @staticmethod
    def bytes_to_repr(obj):
        "Convert bytes object into suitable representation."
        if not isinstance(obj, bytes):
            raise TypeError('Object must be a bytes instance!')
        return repr(obj)[2:-1]

    @staticmethod
    def repr_to_obj(string, prefix='b'):
        "Convert representation into an equivalent object."
        for template in '{}"{}"', "{}'{}'":
            try:
                return ast.literal_eval(template.format(prefix, string))
            except:
                pass
        raise ValueError('Cannot convert {!r} to object!'.format(string))

    @classmethod
    def main(cls):
        "Create context for demo and run a test instance."
        NoDefaultRoot()
        root = Tk()
        root.minsize(420, 330)
        root.title('Markov Demo 2')
        test = cls(root)
        test.grid(sticky=NSEW)
        root.grid_rowconfigure(0, weight=1)
        root.grid_columnconfigure(0, weight=1)
        root.mainloop()
    def create_widgets(self):
        ''' Creates all widgets.
        '''
        rts_lbl = Label(self, text='Return to scale:')
        rts_lbl.grid(row=0, column=0, padx=XPAD_VALUE, pady=YPAD_VALUE,
                     sticky=W)
        self._create_frame_with_radio_btns(self, 'RETURN_TO_SCALE',
                                           ['VRS', 'CRS'],
                                           row_index=1, column_index=0)

        orientation_lbl = Label(self, text='Orientation:')
        orientation_lbl.grid(row=0, column=1, sticky=W, padx=XPAD_VALUE,
                             pady=YPAD_VALUE)
        self._create_frame_with_radio_btns(self, 'ORIENTATION',
                                           ['Input', 'Output'],
                                           row_index=1, column_index=1)

        model_lbl = Label(self, text='Model:')
        model_lbl.grid(row=0, column=2, padx=XPAD_VALUE, pady=YPAD_VALUE,
                       sticky=W)
        self._create_frame_with_radio_btns(self, 'DEA_FORM',
                                           ['Envelopment', 'Multiplier'],
                                           row_index=1, column_index=2,
                                           add_both=False)

        other_lbl = Label(self, text='Others:')
        other_lbl.grid(row=0, column=3, sticky=W, padx=XPAD_VALUE)

        max_slacks = IntVar()
        self.options['MAXIMIZE_SLACKS'] = max_slacks
        frame_other_options = Frame(self)
        self.max_slack_box = max_slacks_check_btn = Checkbutton(
            frame_other_options, text='Two phase', variable=max_slacks,
            command=(lambda: self.on_check_box_click(
                max_slacks, 'MAXIMIZE_SLACKS')))
        max_slacks_check_btn.grid(row=1, column=0, sticky=W)
        super_efficiency = IntVar()
        self.options['USE_SUPER_EFFICIENCY'] = super_efficiency
        super_efficiency_check_btn = Checkbutton(frame_other_options,
                                                 text='Super efficiency',
                                                 variable=super_efficiency,
                                                 command=(
                                                 lambda: self.on_check_box_click(
                                                 super_efficiency,
                                                 'USE_SUPER_EFFICIENCY')))
        super_efficiency_check_btn.grid(row=2, column=0, sticky=W)
        peel_the_onion = IntVar()
        self.options['PEEL_THE_ONION'] = peel_the_onion
        peel_the_onion_check_btn = Checkbutton(
            frame_other_options, text='Peel the onion', variable=peel_the_onion,
            command=(lambda: self.on_check_box_click(peel_the_onion,
                     'PEEL_THE_ONION')))
        peel_the_onion_check_btn.grid(row=3, column=0, sticky=W)
        frame_other_options.grid(row=1, column=3, padx=XPAD_VALUE,
                                 pady=YPAD_VALUE, sticky=W)

        frame_for_toleramce = Frame(self)
        tolerance_lbl = Label(frame_for_toleramce,
                              text='Multiplier model tolerance:')
        tolerance_lbl.grid(row=0, column=0, padx=XPAD_VALUE, pady=YPAD_VALUE,
                           sticky=W)
        tolerance_ent = Entry(frame_for_toleramce, width=5,
                              textvariable=self.multi_tol_strvar)
        tolerance_ent.insert(END, 0)
        tolerance_ent.grid(row=0, column=1, sticky=W, padx=XPAD_VALUE)
        categorical_lbl = Label(frame_for_toleramce, text='Categorical:')
        categorical_lbl.grid(row=1, column=0, padx=XPAD_VALUE,
                             pady=YPAD_VALUE, sticky=W)
        self.categorical_box = categorical_box = Combobox(
            frame_for_toleramce, textvariable=self.combobox_text_var,
            exportselection=0, state="readonly",
            width=20, values=(''),
            postcommand=self.change_categorical_box)
        categorical_box.grid(row=1, column=1, padx=XPAD_VALUE,
                             pady=YPAD_VALUE, sticky=W)
        frame_for_toleramce.grid(row=5, column=0, sticky=W, padx=XPAD_VALUE,
                                 pady=YPAD_VALUE, columnspan=4)
Example #36
0
lbl = Label(window, text="Текст Label: ")  #добавить текст
lbl.grid(column=0, row=0)  #позиция текста

txt = Entry(
    window,
    width=10)  #форма ввода. Для выключения формы ввода , state='disabled
txt.grid(column=1, row=0)  #позиция ввода

btn = Button(window, text="▲ Кнопка", command=clicked)  #добавить кнопку
btn.grid(column=2, row=0)  #позиция кнопки

combo = Combobox(window)  #создаём окно
combo['values'] = ("Виджет Combobox →", 1, 2, 3, 4, 5)  #вводим значение
combo.current(0)  #какую строку выводит?
combo.grid(column=0, row=1)  #размеры окна

chk_state = BooleanVar()  #логический тип данных
chk_state.set(
    0)  # задайте проверку состояния чекбокса 0 False(Ложь), 1 True(Истина)
chk = Checkbutton(window, text='← Виджет Checkbutton', var=chk_state)  #
chk.grid(column=0, row=2)  #позиция кнопки

rad1 = Radiobutton(window, text='Первый', value=1)  #Кнопка чекбокс с названием
rad2 = Radiobutton(window, text='Второй', value=2)
rad3 = Radiobutton(window, text='Третий', value=3)
rad1.grid(column=0, row=3)  #позиция
rad2.grid(column=1, row=3)  #позиция
rad3.grid(column=2, row=3)  #позиция

window.mainloop()  #функция бесконечного окна
Example #37
0
    def create_widgets(self):
        self.frame = frame = Frame(self, borderwidth=2, relief='sunken')
        frame.pack(side='top', expand=True, fill='both')

        frame_buttons = Frame(self)
        frame_buttons.pack(side='bottom', fill='x')

        self.button_ok = Button(frame_buttons, text='OK',
                                width=8, command=self.ok)
        self.button_ok.grid(row=0, column=0, padx=5, pady=5)
        self.button_cancel = Button(frame_buttons, text='Cancel',
                                   width=8, command=self.cancel)
        self.button_cancel.grid(row=0, column=1, padx=5, pady=5)

        # Basic entry key sequence.
        self.frame_keyseq_basic = Frame(frame, name='keyseq_basic')
        self.frame_keyseq_basic.grid(row=0, column=0, sticky='nsew',
                                      padx=5, pady=5)
        basic_title = Label(self.frame_keyseq_basic,
                            text=f"New keys for '{self.action}' :")
        basic_title.pack(anchor='w')

        basic_keys = Label(self.frame_keyseq_basic, justify='left',
                           textvariable=self.key_string, relief='groove',
                           borderwidth=2)
        basic_keys.pack(ipadx=5, ipady=5, fill='x')

        # Basic entry controls.
        self.frame_controls_basic = Frame(frame)
        self.frame_controls_basic.grid(row=1, column=0, sticky='nsew', padx=5)

        # Basic entry modifiers.
        self.modifier_checkbuttons = {}
        column = 0
        for modifier, variable in zip(self.modifiers, self.modifier_vars):
            label = self.modifier_label.get(modifier, modifier)
            check = Checkbutton(self.frame_controls_basic,
                                command=self.build_key_string, text=label,
                                variable=variable, onvalue=modifier, offvalue='')
            check.grid(row=0, column=column, padx=2, sticky='w')
            self.modifier_checkbuttons[modifier] = check
            column += 1

        # Basic entry help text.
        help_basic = Label(self.frame_controls_basic, justify='left',
                           text="Select the desired modifier keys\n"+
                                "above, and the final key from the\n"+
                                "list on the right.\n\n" +
                                "Use upper case Symbols when using\n" +
                                "the Shift modifier.  (Letters will be\n" +
                                "converted automatically.)")
        help_basic.grid(row=1, column=0, columnspan=4, padx=2, sticky='w')

        # Basic entry key list.
        self.list_keys_final = Listbox(self.frame_controls_basic, width=15,
                                       height=10, selectmode='single')
        self.list_keys_final.insert('end', *AVAILABLE_KEYS)
        self.list_keys_final.bind('<ButtonRelease-1>', self.final_key_selected)
        self.list_keys_final.grid(row=0, column=4, rowspan=4, sticky='ns')
        scroll_keys_final = Scrollbar(self.frame_controls_basic,
                                      orient='vertical',
                                      command=self.list_keys_final.yview)
        self.list_keys_final.config(yscrollcommand=scroll_keys_final.set)
        scroll_keys_final.grid(row=0, column=5, rowspan=4, sticky='ns')
        self.button_clear = Button(self.frame_controls_basic,
                                   text='Clear Keys',
                                   command=self.clear_key_seq)
        self.button_clear.grid(row=2, column=0, columnspan=4)

        # Advanced entry key sequence.
        self.frame_keyseq_advanced = Frame(frame, name='keyseq_advanced')
        self.frame_keyseq_advanced.grid(row=0, column=0, sticky='nsew',
                                         padx=5, pady=5)
        advanced_title = Label(self.frame_keyseq_advanced, justify='left',
                               text=f"Enter new binding(s) for '{self.action}' :\n" +
                                     "(These bindings will not be checked for validity!)")
        advanced_title.pack(anchor='w')
        self.advanced_keys = Entry(self.frame_keyseq_advanced,
                                   textvariable=self.key_string)
        self.advanced_keys.pack(fill='x')

        # Advanced entry help text.
        self.frame_help_advanced = Frame(frame)
        self.frame_help_advanced.grid(row=1, column=0, sticky='nsew', padx=5)
        help_advanced = Label(self.frame_help_advanced, justify='left',
            text="Key bindings are specified using Tkinter keysyms as\n"+
                 "in these samples: <Control-f>, <Shift-F2>, <F12>,\n"
                 "<Control-space>, <Meta-less>, <Control-Alt-Shift-X>.\n"
                 "Upper case is used when the Shift modifier is present!\n\n" +
                 "'Emacs style' multi-keystroke bindings are specified as\n" +
                 "follows: <Control-x><Control-y>, where the first key\n" +
                 "is the 'do-nothing' keybinding.\n\n" +
                 "Multiple separate bindings for one action should be\n"+
                 "separated by a space, eg., <Alt-v> <Meta-v>." )
        help_advanced.grid(row=0, column=0, sticky='nsew')

        # Switch between basic and advanced.
        self.button_level = Button(frame, command=self.toggle_level,
                                  text='<< Basic Key Binding Entry')
        self.button_level.grid(row=2, column=0, stick='ew', padx=5, pady=5)
        self.toggle_level()