Пример #1
0
    def _add_entry_to_frame_grid(
            cls,
            frame_and_name: FrameAndName,
            row: int,
            column: int,
            width: int,
            text: str = '',
            padx: int = None,
            pady: int = None,
            is_encrypted: bool = False,
            sticky: GridPositionEnum = GridPositionEnum.NONE) -> Entry:
        if is_encrypted:
            show = '*'
        else:
            show = None

        textbox = Entry(frame_and_name.frame, show=show, width=width)

        if text:
            textbox.insert(END, text)

        textbox.grid(row=row,
                     column=column,
                     sticky=sticky.value,
                     padx=padx,
                     pady=pady)
        return textbox
Пример #2
0
 def set_date(this, calendar: Calendar, enty: Entry,
              frame: tkinter.Toplevel):
     enty.config(state="normal")
     enty.delete(0, "end")
     enty.insert(0, calendar.selection_get())
     enty.config(state="disabled")
     frame.destroy()
Пример #3
0
 def add_entry(self, text):
     entry = Entry(self)
     entry.insert(0, ",".join(text))
     entry.pack(fill="both", expand=True)
     entry.config(state="readonly")
     self.bindings(entry)
     self.entries.append(entry)
Пример #4
0
 def add_entry(self, text):
     entry = Entry(self)
     entry.insert(0, ",".join(text))
     entry.pack(fill="both", expand=True)
     entry.config(state="readonly")
     self.bindings(entry)
     self.entries.append(entry)
Пример #5
0
    def attr_list_entry_callback(self, _event, attrib, entry_box: ttk.Entry,
                                 selected_widget):
        if selected_widget is not None:
            values: str = entry_box.get()
            values.strip(' ')
            if values.startswith('[') and values.endswith(']'):
                values = values[1:-1].strip(' ')
                value_list = []
                while len(values) > 0:
                    if values[0] == "'":
                        next_value = values[1:].split("'")[0]
                        value_list.append(next_value)
                        values = values[(2 + len(next_value)):].strip(' ')
                        if values.startswith(','):
                            values = values[1:].strip(' ')
                    else:
                        entry_box.delete(0, tkinter.END)
                        entry_box.insert(0,
                                         str(getattr(selected_widget, attrib)))
                        raise Exception(
                            'entry should be a list of str, comma separated')

            else:
                value_list = [values]
            return_value = self.pyted_core.update_widget_attribute(
                selected_widget, attrib, value_list)
            # self.update_attr_frame()
            if selected_widget.tk_name is not None:
                self.handles.place_selected_widget_handles(
                    selected_widget.tk_name)
            if return_value is not None:
                messagebox.showwarning(
                    'Renaming problem',
                    'Name already exists for another widget and Name not changed'
                )
Пример #6
0
def gen_file_entry(master,
                   label_text,
                   entry_text,
                   button_text,
                   grid_on=False,
                   irow=None,
                   icol=None):
    def enter_filename():
        file = filedialog.askopenfilename(initialdir='.',
                                          title="Select file",
                                          filetypes=(("fasta files",
                                                      ".fasta .fa .gz"),
                                                     ("all files", "*.*")))
        entry.delete(0, END)
        entry.insert(0, file)

    label = Label(master, text=label_text)
    entry = Entry(master, style='grey.TEntry')
    entry.insert(END, entry_text)

    button = Button(master, text=button_text, command=enter_filename)

    if grid_on:
        grid_widgets_line(master, [label, entry, button], irow, icol)

    return label, entry, button
Пример #7
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)
Пример #8
0
 class DateWidget(Frame):
     """Gets a date from the user."""
     def __init__(self, master):
         """Make boxes, register callbacks etc."""
         Frame.__init__(self, master)
         self.label = Label(self, text="När är du född?")
         self.label.pack()
         self.entry_text = StringVar()
         self.entry_text.trace("w", lambda *args: self.onEntryChanged())
         self.entry = Entry(self, width=date_entry_width,
              textvariable=self.entry_text)
         self.entry.insert(0, "ÅÅÅÅ-MM-DD")
         self.entry.pack(pady=small_pad)
         self.button = Button(self, text="Uppdatera",
              command=lambda: self.onDateChanged())
         self.button.pack()
         self.entry.focus_set()
         self.entry.select_range(0, END)
         self.entry.bind("<Return>", lambda x: self.onDateChanged())
     def setListener(self, pred_view):
         """Select whom to notify when a new date is entered."""
         self.pred_view = pred_view
     def onDateChanged(self):
         """Notifies the PredictionWidget that the date has been changed."""
         try:
             date = datetime.datetime.strptime(self.entry.get(),
                  "%Y-%m-%d").date()
             self.pred_view.update(date)
         except ValueError:
             self.entry.configure(foreground="red")
     def onEntryChanged(self):
         """Reset the text color."""
         self.entry.configure(foreground="")
Пример #9
0
    def loadProject(self):
        self._logger.info("Load Project Called")
        # Find filenames of projects to load
        file_name = tkinter.filedialog.askopenfilename(
            parent=self, title='Choose Project File')
        self._logger.debug(file_name)
        project_map = self._loader.loadProject(file_name)
        file_tuple = project_map['files']
        self._hidden_ops = project_map['hidden_ops']
        # Update the file list with the new files
        self.newProject()
        for elt in file_tuple:
            inner_frame = Frame(self._file_frame)
            inner_frame.pack(fill=X, expand=True)

            lbl = Label(inner_frame, text=path_leaf(elt['filename']), width=24)
            lbl.pack(side=LEFT, padx=5, pady=5)

            entry = Entry(inner_frame)
            entry.pack(fill=X, padx=5, expand=True)
            entry.insert(0, elt['ops'])

            file_dict = {
                "filename": elt['filename'],
                "ops_box": entry,
                "file_label": lbl
            }
            self._files.append(file_dict)
Пример #10
0
    def change_name(self, event):
        """Change category name."""
        def ok(event):
            cats = [l.cget('text').lower() for l in self.cat_labels.values()]
            cat = name.get().strip().lower()
            if cat and cat not in cats:
                label.configure(text=cat.capitalize())
                if old_cat == self.default_category.get():
                    self.default_category.set(cat.capitalize())
                self.update_def_cat_menu()

            name.destroy()

        label = event.widget
        old_cat = label.cget('text')
        name = Entry(self, justify='center')
        name.insert(0, label.cget('text'))
        name.place(in_=label,
                   relx=0,
                   rely=0,
                   anchor='nw',
                   relwidth=1,
                   relheight=1)
        name.bind('<FocusOut>', lambda e: name.destroy())
        name.bind('<Escape>', lambda e: name.destroy())
        name.bind('<Return>', ok)
        name.selection_range(0, 'end')
        name.focus_set()
Пример #11
0
    def add_link(self):
        def ok(eveny=None):
            lien = link.get()
            txt = text.get()
            if lien:
                if not txt:
                    txt = lien
                self.nb_links += 1
                if self.txt.tag_ranges("sel"):
                    index = self.txt.index("sel.first")
                    self.txt.delete('sel.first', 'sel.last')
                else:
                    index = "current"
                tags = self.txt.tag_names(index) + ("link",
                                                    "link#%i" % self.nb_links)
                self.txt.insert("current", txt, tags)
                if not lien[:4] == "http":
                    lien = "http://" + lien
                self.links[self.nb_links] = lien
                self.txt.tag_bind("link#%i" % self.nb_links, "<Button-1>",
                                  lambda e: open_url(lien))
            top.destroy()

        top = Toplevel(self)
        top.transient(self)
        top.update_idletasks()
        top.geometry("+%i+%i" % top.winfo_pointerxy())
        top.grab_set()
        top.resizable(True, False)
        top.title(_("Link"))
        top.columnconfigure(1, weight=1)
        text = Entry(top)
        link = Entry(top)
        if self.txt.tag_ranges('sel'):
            txt = self.txt.get('sel.first', 'sel.last')
        else:
            txt = ''
        text.insert(0, txt)
        text.icursor("end")
        Label(top, text=_("Text")).grid(row=0,
                                        column=0,
                                        sticky="e",
                                        padx=4,
                                        pady=4)
        Label(top, text=_("Link")).grid(row=1,
                                        column=0,
                                        sticky="e",
                                        padx=4,
                                        pady=4)
        text.grid(row=0, column=1, sticky="ew", padx=4, pady=4)
        link.grid(row=1, column=1, sticky="ew", padx=4, pady=4)
        Button(top, text="Ok", command=ok).grid(row=2,
                                                columnspan=2,
                                                padx=4,
                                                pady=4)

        text.focus_set()
        text.bind("<Return>", ok)
        link.bind("<Return>", ok)
Пример #12
0
def create_entry(master, row, col, text, pady=0, padx=0):
    '''Takes in master, row number, col number, entry default value, and 
       position padding and returns the created entry widget'''
    entry = Entry(master)
    entry.insert(0, text)
    entry.grid(row=row, column=col, pady=pady, padx=padx)
    entry.config({"width": 5})
    return entry
    def initUI(self):
        self.parent.title("Test the Gauss point")
        self.pack(fill=BOTH, expand=True)
        self.fields = \
                'bulk_modulus', \
                'scale_hardening', \
                'max_stress_in', \
                'increment_strain', \
                'Nloop', \
                'initial_confinement', \
                'reference_pressure', \
                'modulus_n', \
                'cohesion', \
                'RMC_shape_k', \
                'dilation_angle_eta', \
                'diletion_scale'

        default_values = \
                        '1E7', \
                        '1E3', \
                        '3E4', \
                        '1E-4', \
                        '2', \
                        '1E5', \
                        '1E5', \
                        '0.7', \
                        '0.0', \
                        '1.0', \
                        '1.0', \
                        '1.0'
        # ==================
        # Entries for User input:
        self.entries = []
        for idx, field in enumerate(self.fields):
            row = Frame(self)
            row.pack(fill=X)
            labl = Label(row, text=field, width=30)
            labl.pack(side=LEFT, padx=5, pady=5)
            entry = Entry(row)
            entry.insert(END, default_values[idx])
            entry.pack(fill=X, padx=5, expand=True)
            self.entries.append((field, entry))
            # print field

        # ==================
        # Button for calculation
        frameButtonCalc = Frame(self)
        frameButtonCalc.pack(fill=X)
        calcButton = Button(frameButtonCalc,
                            text="calculate",
                            command=self.calculate)
        calcButton.pack(side=LEFT, padx=5, pady=5)

        # ==================
        # Raw Frame for plot
        self.canvasFrame = Frame(self)
        self.canvasFrame.pack(fill=BOTH, expand=True)
Пример #14
0
 def addInputBox(self, text, placeholder):
     frame = Frame(self)
     frame.pack(fill=X)
     label = Label(frame, text=text, width=23)
     label.pack(side=LEFT, padx=20, pady=5)
     inputBox = Entry(frame, validatecommand=self.onConfigChange, validate="focusout")
     inputBox.insert(END,placeholder)
     inputBox.pack(fill=X, padx=20, expand=True)
     return inputBox
Пример #15
0
 def insert_entry_field(self, txt, default=None):
     frame = Frame(self.frame)
     frame.pack(fill="x")
     label = Label(frame, text=txt, width=6)
     label.pack(side="left", anchor="n", padx=5, pady=5)
     entry = Entry(frame)
     entry.pack(fill="x", padx=5, pady=5, expand=True)
     if default:
         entry.insert("end", default)
     self.entries["Entry"][txt] = entry
Пример #16
0
 def insert_entry_field(self, txt, default=None):
     frame = Frame(self.frame)
     frame.pack(fill="x")
     label = Label(frame, text=txt, width=6)
     label.pack(side="left", anchor="n", padx=5, pady=5)
     entry = Entry(frame)
     entry.pack(fill="x", padx=5, pady=5, expand=True)
     if default:
         entry.insert("end", default)
     self.entries["Entry"][txt] = entry
Пример #17
0
def select_file(entry: ttk.Entry, title: str, extension: str) -> None:

    window = tk.Toplevel()
    window.withdraw()

    path = tkinter.filedialog.askopenfilename(title=title, filetypes=(("{0} files".format(extension),"*.{0}".format(extension)),("all files","*.*")))

    window.destroy()
    entry.delete(0, tk.END)
    entry.insert(0, path)
    return
Пример #18
0
def mac_auto(is_auto: tk.BooleanVar, entry: ttk.Entry):
    logging.info("mac auto clicked")
    if is_auto.get():
        logging.info("disabling mac")
        entry.delete(0, tk.END)
        entry.insert(tk.END, "")
        entry.config(state=tk.DISABLED)
    else:
        entry.delete(0, tk.END)
        entry.insert(tk.END, "00:00:00:00:00:00")
        entry.config(state=tk.NORMAL)
class PasswordGenerator(Frame):

    def __init__(self):
        super().__init__()

        self.initUI()

        self.my_pw = ''

    def initUI(self):
        self.master.title('Simple PasswordGenerator v1.0')
        self.pack(fill=BOTH, expand=False)

        frame1 = Frame(self)
        frame1.pack(fill=X)

        lbl1 = Label(frame1, text='Input password lenght: (6-15)', width=27)
        lbl1.pack(side=LEFT, padx=5, pady=10)

        self.entry1 = Entry(frame1, width=10)
        self.entry1.pack(side=LEFT, padx=2)

        frame2 = Frame(self)
        frame2.pack(fill=X)

        lbl2 = Label(frame2, text='Generated password:'******'end')
        try:
            pw_length = int(self.entry1.get())
            if pw_length >= 6 and pw_length <=15:
                for i in range(pw_length):
                    index = random.randrange(len(possible_chars))
                    self.my_pw += possible_chars[index]
                self.entry2.insert(1, self.my_pw)
                self.my_pw = ''
            else:
                messagebox.showwarning('Error!', 'Password must be 6-15 characters!')
                self.entry1.delete(0, 'end')
        except:
            messagebox.showwarning('Error!', 'Field must contain a number!')
            self.entry1.delete(0, 'end')
Пример #20
0
    def genFileList(self):
        for elt in self._files:
            inner_frame = Frame(self._file_frame)
            inner_frame.pack(fill=X, expand=True)

            lbl = Label(inner_frame, text=path_leaf(elt['filename']), width=18)
            lbl.pack(side=LEFT, padx=5, pady=5)

            entry = Entry(inner_frame)
            entry.pack(fill=X, padx=5, expand=True)
            if self._default_ops is not None:
                entry.insert(0, self._default_ops)
Пример #21
0
def gen_label_entry(master,
                    label_text,
                    entry_text,
                    grid_on=False,
                    irow=None,
                    icol=None):
    label = Label(master, text=label_text)
    entry = Entry(master, style='grey.TEntry')
    entry.insert(END, entry_text)
    if grid_on:
        grid_widgets_line(master, [label, entry], irow, icol)
    return label, entry
class TextureConfigFrame(Frame):
    def __init__(self, parent, configuration):
        Frame.__init__(self, parent)
        self.configuration = configuration

        self.texture_model_path_in = None
        self.texture_model_path_res = configuration.texture_model_path

        self.texture_detection_type_in = None
        self.texture_types = {'Window scan': 0, 'Around each pixel': 1}

        self.texture_detection_area_in = None

        self.init_view()

    def init_view(self):

        self.texture_model_path_in = Label(self,
                                           text=FileUtils.get_filename_from_path(self.configuration.texture_model_path))
        self.texture_model_path_in.grid(row=0, column=1, sticky="we", padx=5, pady=5)

        Button(self,
               text="Browse model",
               command=self.browse_texture_model)\
            .grid(row=0, column=0, sticky="w")

        Label(self, text="Detection type").grid(row=1, column=0, sticky="w")
        self.texture_detection_type_in = Combobox(self, values=list(self.texture_types.keys()))
        self.texture_detection_type_in.grid(row=1, column=1, sticky="w", padx=5, pady=5)

        Label(self, text="Detection area").grid(row=2, column=0, sticky="w")
        self.texture_detection_area_in = Entry(self)
        self.texture_detection_area_in.insert(END, self.configuration.texture_detection_area)
        self.texture_detection_area_in.grid(row=2, column=1, sticky="w", padx=5, pady=5)

    def get_values(self):
        errors = []
        try:
            texture_area_value = int(self.texture_detection_area_in.get())
        except ValueError:
            errors.append("Invalid texture area")

        if self.texture_detection_type_in.get() not in self.texture_types:
            errors.append("You must select a texture detection type")

        if errors:
            raise ValidationError("Texture validation error", errors)

        return self.texture_model_path_res, self.texture_types[self.texture_detection_type_in.get()], texture_area_value

    def browse_texture_model(self):
        self.texture_model_path_res = filedialog.askopenfilename()
        self.texture_model_path_in.config(text=self.texture_model_path_res.split('/')[-1])
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()
Пример #24
0
class SelectKernel(Toplevel):
    """About Toplevel."""
    def __init__(self, master):
        """Create the Toplevel to select an existing Jupyter kernel."""
        Toplevel.__init__(self, master, class_=master.winfo_class(), padx=10, pady=10)
        self.resizable(True, False)
        self.title("Select existing kernel")
        self.columnconfigure(0, minsize=22)
        self.columnconfigure(1, weight=1)
        self.columnconfigure(2, weight=1)

        self.selected_kernel = ''

        Label(self,
              text="Select the .json connection file or enter the existing kernel's id:").grid(columnspan=4,
                                                                                               sticky='w',
                                                                                               pady=4)
        self.entry = Entry(self, width=10)
        self.entry.grid(row=1, columnspan=3, sticky='ew', pady=4)
        self.entry.bind('<Return>', lambda e: self.validate())
        Button(self, text='...', width=2, padding=0,
               command=self.select_file).grid(row=1, column=3, sticky='sn', pady=4)

        Button(self, text='Ok', command=self.validate).grid(row=2, column=1,
                                                            padx=4, pady=4,
                                                            sticky='e')
        Button(self, text='Cancel', command=self.destroy).grid(row=2, column=2,
                                                               padx=4, pady=4,
                                                               sticky='w')
        self.transient(master)
        self.entry.focus_set()
        self.update_idletasks()
        self.grab_set()

    def validate(self):
        self.selected_kernel = self.entry.get()
        self.destroy()

    def select_file(self):
        filename = askopenfilename(self, "Select connection file",
                                   initialdir=jupyter_runtime_dir(),
                                   defaultextension='.json',
                                   filetypes=[('JSON', '*.json'), ('All files', '*')])
        if filename:
            self.entry.delete(0, 'end')
            self.entry.insert(0, filename)
Пример #25
0
class SizeConfigFrame(Frame):
    def __init__(self, parent, configuration):
        Frame.__init__(self, parent)
        self.configuration = configuration

        self.use_resize_in = None
        self.resize_val = IntVar()

        self.width_in = None
        self.height_in = None

        self.init_view()

    def init_view(self):

        self.use_resize_in = Checkbutton(self,
                                         text="Resize image",
                                         variable=self.resize_val).grid(
                                             row=0, column=0, columnspan=2)

        Label(self, text="Width").grid(row=1, column=0, sticky="w")
        self.width_in = Entry(self)
        self.width_in.insert(END, self.configuration.size[1])
        self.width_in.grid(row=1, column=1, sticky="w", padx=5, pady=5)

        Label(self, text="Height").grid(row=2, column=0, sticky="w")
        self.height_in = Entry(self)
        self.height_in.insert(END, self.configuration.size[0])
        self.height_in.grid(row=2, column=1, sticky="w", padx=5, pady=5)

    def get_values(self):
        errors = []
        try:
            height_value = int(self.height_in.get())
        except ValueError:
            errors.append("Invalid height value")

        try:
            width_value = int(self.width_in.get())
        except ValueError:
            errors.append("Invalid width value")

        if errors:
            raise ValidationError("Size validation error", errors)

        return self.resize_val.get(), height_value, width_value
    def concrete_inc_dec(cls, entry: ttk.Entry, operand: str):
        """Concrete function to add or substract the value from an input"""
        old_value = entry.get().split()[0]
        value = float(old_value)
        if operand == "+":
            value += 1
        else:
            value -= 1
            if value < 0:
                value = 0
        if value == int(value):
            value = int(value)

        entry["state"] = "normal"
        entry.delete(0, "end")
        entry.insert(0, value)
        entry["state"] = "readonly"
Пример #27
0
class ArgEntry(Frame):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.__namelabel = Label(self)
        self.__namelabel.pack(expand='yes', fill='x')
        self.__entry = Entry(self)
        self.__entry.pack(side='left', expand='yes', fill='x')
        self.__btn = Button(self)
        self.__btn.pack(side='right')
        self.__btn['state'] = 'disabled'

    @property
    def entry(self):
        return self.__entry

    @property
    def entry_text(self):
        return self.__entry.get()

    @entry_text.setter
    def entry_text(self, value):
        self.__entry.delete(0, 'end')
        self.__entry.insert(0, value)

    @property
    def button(self):
        return self.__btn

    @property
    def arg_name(self):
        return self.__namelabel['text']

    @arg_name.setter
    def arg_name(self, val):
        self.__namelabel['text'] = val

    @property
    def arg_value(self):
        return self.__entry.get()

    @arg_value.setter
    def arg_value(self, val):
        self.__entry.delete(0, 'end')
        self.__entry.insert(0, val)
    def initUI(self):
        self.parent.title("Test the Gauss point")
        self.pack(fill=BOTH, expand=True)
        self.fields = \
                'bulk_modulus', \
                'Scale_Hardening', \
                'max_strain_in', \
                'increment_strain', \
                'Nloop'
        default_values = \
                        '16750', \
                        '1', \
                        '1E-2', \
                        '1E-4', \
                        '0'
        # ==================
        # Entries for User input:
        self.entries = []
        for idx,field in enumerate(self.fields):
            row = Frame(self)
            row.pack(fill=X)
            labl = Label(row, text=field, width=30)
            labl.pack(side=LEFT, padx=5, pady=5)
            entry = Entry(row)
            entry.insert(END, default_values[idx])
            entry.pack(fill=X, padx=5, expand=True)
            self.entries.append((field,entry))
            # print field

        # ==================
        # Button for calculation
        frameButtonCalc = Frame(self)
        frameButtonCalc.pack(fill=X)
        calcButton = Button(frameButtonCalc, text="calculate",
                        command=self.calculate)
        calcButton.pack(side=LEFT,padx=5, pady=5)
              
        # ==================
        # Raw Frame for plot
        self.canvasFrame = Frame(self)
        self.canvasFrame.pack(fill=BOTH, expand=True)
Пример #29
0
    def text_query(self, query_lable, original_text=None, accept_func=None):
        if self._query is not None:
            return
        frame = Frame(self.menubar)
        label = Label(frame, text=query_lable)
        label.grid(column=0, row=0, sticky=(N, S))
        self._accept_func = accept_func

        entry = Entry(frame)
        if original_text is not None:
            entry.insert(0, original_text)
        entry.original_value = original_text
        entry.grid(column=1, row=0, sticky=(N,S,W,E))
        kb.make_bindings(kb.text_query, 
                {'accept': self.accept_query,
                 'cancel': lambda e: self.close_query()}, entry.bind)

        frame.grid(column=self._menucolumn, row=0)
        self._menucolumn += 1
        entry.focus_set()
        self._query = frame
Пример #30
0
    def findFiles(self):
        self._logger.info("Find Files Called")
        file_tuple = tkinter.filedialog.askopenfilenames(
            parent=self,
            title='Choose Blender Files',
            filetypes=(("blend files", "*.blend"), ("all files", "*.*")))
        self._logger.debug(file_tuple)
        for elt in file_tuple:
            inner_frame = Frame(self._file_frame)
            inner_frame.pack(fill=X, expand=True)

            lbl = Label(inner_frame, text=path_leaf(elt), width=24)
            lbl.pack(side=LEFT, padx=5, pady=5)

            entry = Entry(inner_frame)
            entry.pack(fill=X, padx=5, expand=True)
            if self._default_ops is not None:
                entry.insert(0, self._default_ops)

            file_dict = {"filename": elt, "ops_box": entry, "file_label": lbl}
            self._files.append(file_dict)
Пример #31
0
def gen_directory_entry(master,
                        label_text,
                        entry_text,
                        button_text,
                        grid_on=False,
                        irow=None,
                        icol=None):
    def enter_outdir():
        outdir = filedialog.askdirectory(initialdir='.')
        entry.delete(0, END)
        entry.insert(0, outdir)

    label = Label(master, text=label_text)
    entry = Entry(master, style='grey.TEntry')
    entry.insert(END, entry_text)

    button = Button(master, text=button_text, command=enter_outdir)

    if grid_on:
        grid_widgets_line(master, [label, entry, button], irow, icol)
    return label, entry, button
Пример #32
0
    def escrever_mascara_entry(evento_char, ref_entry: ttk.Entry, mascara: str, especial: str = ''):
        """ Método estático para formatar a entrada de um Entry de acordo com mascara.
        Pode ser usado sem instanciação.
        :param evento_char: event.char do evento.
        :param ref_entry: Referência do componente Entry.
        :param mascara: Mascara base para a formatação. Deve apresentar espacos onde quer ser inseridos os números.
        :return: none. """
        # Apaga o Entry caso o conteúdo seja o default.
        if ref_entry.get() == mascara:
            ref_entry.delete(0, 'end')

        # O event.char captura de tecla literalmente, mas não captura teclas de controle(Backspace, ...).
        # O event.keysym usa uma nomenclatura diferente, e captura todas as teclas.
        # Tkinter 8.5 reference gui for Python. 161-162.
        if evento_char in string.digits or evento_char in especial:
            pos = len(ref_entry.get())
            try:
                if mascara[pos] != ' ':
                    ref_entry.insert('end', mascara[pos])
            except IndexError:
                ref_entry.delete(0, 'end')
Пример #33
0
    def edit_config(self):
        self.center = Frame(root,
                            bg=config.bgcolor,
                            width=50,
                            height=40,
                            padx=3,
                            pady=3)

        # layout all of the main containers
        root.grid_rowconfigure(1, weight=1)
        root.grid_columnconfigure(0, weight=1)
        self.center.grid(row=1, sticky="nsew")

        dbpathLBL = Label(self.center, text="Database Path")
        dbpathLBL.grid(column=0, row=0)
        dbpath = Entry(self.center, width=config.textBoxWidthLG)
        dbpath.insert(END, config.db_path)
        dbpath.grid(column=1, row=0)

        dwnloadLBL = Label(self.center, text="Download DIR")
        dwnloadLBL.grid(column=0, row=1)
        downloaddir = Entry(self.center, width=config.textBoxWidthLG)
        downloaddir.insert(END, config.download_dir)
        downloaddir.grid(column=1, row=1)

        watcherdirLBL = Label(self.center, text="Watcher DIR")
        watcherdirLBL.grid(column=0, row=2)
        watcherdir = Entry(self.center, width=config.textBoxWidthLG)
        watcherdir.insert(END, config.watcherdir)
        watcherdir.grid(column=1, row=2)
Пример #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()
Пример #35
0
 def add_entry(self, text):
     entry = Entry(self)
     entry.insert(0, "".join(text))
     entry.pack(fill="both", expand=True)
     entry.config(state="disable")
     self.entries.append(entry)
    def initUI(self):
        self.parent.title("Calculator")
        
        Style().configure("TButton", padding=(0, 5, 0, 5), font='serif 10')
            
        self.columnconfigure(0, pad=3)
        self.columnconfigure(1, pad=3)
        self.columnconfigure(2, pad=3)
        self.columnconfigure(3, pad=3)
        self.columnconfigure(4, pad=3)
        self.columnconfigure(5, pad=3)
        self.rowconfigure(0, pad=3)

        entry1 = Entry(self)
        #entry.grid(row=0, columnspan=4, sticky=W+E)
        entry1.insert(0, "0")

        entry2 = Entry(self)
        entry2.insert(0, "0")

        Team_1_Score = 0
        Team_2_Score = 0


        def Addition_1():
            nonlocal Team_1_Score
            Team_1_Score += 1
            entry1.delete(0, 3)
            entry1.insert(0, Team_1_Score)
            F = open("Team1.txt", "w")
            F.write(str(Team_1_Score))
            F.close()

        def Substraction_1():
            nonlocal Team_1_Score
            Team_1_Score -= 1
            entry1.delete(0, 3)
            entry1.insert(0, Team_1_Score)
            F = open("Team1.txt", "w")
            F.write(str(Team_1_Score))
            F.close()

        def Addition_2():
            nonlocal Team_2_Score
            Team_2_Score += 1
            entry2.delete(0, 3)
            entry2.insert(0, Team_2_Score)
            F = open("Team2.txt", "w")
            F.write(str(Team_2_Score))
            F.close()

        def Substraction_2():
            nonlocal Team_2_Score
            Team_2_Score -= 1
            entry2.delete(0, 3)
            entry2.insert(0, Team_2_Score)
            F = open("Team2.txt", "w")
            F.write(str(Team_2_Score))
            F.close()

        def display_1():
            return Team_1_Score
        def display_2():
            return Team_2_Score


        One_Pls = Button(self, text="+", command = Addition_1)
        One_Pls.grid(row=0, column=0) 
        One_Mns = Button(self, text="-", command = Substraction_1)
        One_Mns.grid(row=0, column=1) 
        #One_Display = Button(self, text="=", command = display_1)
        entry1.grid(row=0, column=2)
        Two_Pls = Button(self, text="+", command = Addition_2)
        Two_Pls.grid(row=0, column=3) 
        Two_Mns = Button(self, text="-", command = Substraction_2)
        Two_Mns.grid(row=0, column=4) 
        #Two_Display = Button(self, text="=", command = display_2)
        entry2.grid(row=0, column=5)

        self.pack()
Пример #37
0
class ModelFrame(LabelFrame):
	
	topPadding = 12

	def __init__(self,parent):        
		LabelFrame.__init__(self,parent,text="Model",borderwidth=5)
		
		self.selection = tkinter.IntVar()
		
		self.exponential = Radiobutton(self,text="Exponential model",variable=self.selection,value=Model.EXP.value,command=self.changeSelection)
		self.powerlaw = Radiobutton(self,text="Power law model",variable=self.selection,value=Model.POW.value,command=self.changeSelection)
		self.weibull = Radiobutton(self,text="Weibull model",variable=self.selection,value=Model.WEI.value,command=self.changeSelection)

		self.exponential.grid(row=0,column=0,sticky="W",padx=10,pady=(self.topPadding,5))
		self.powerlaw.grid(row=1,column=0,sticky="W",padx=10,pady=5)
		self.weibull.grid(row=2,column=0,sticky="W",padx=10,pady=(5,0))
		
		seperator = Separator(self, orient=tkinter.VERTICAL)
		seperator.grid(row=0, column=1, rowspan=3, sticky="NS", padx=(20,10), pady=(self.topPadding,0))
		
		## Exponential setup

		self.expNumberOfSegments_L = Label(self,text="Number of segments: ")
		self.expNumberOfSegments_E = Entry(self,width=5, justify="right")

		self.expNumberOfSegments_E.insert(0, settings.EXP_DEFAULT_NUMBER_OF_SEGMENTS)

		self.expWidgets = [self.expNumberOfSegments_L,self.expNumberOfSegments_E]
		
		## Power law setup

		self.powProximalLimit_L = Label(self,text="Proximal limit of integration: ")
		self.powProximalLimit_E = Entry(self,width=5, justify="right")
		self.powDistalLimit_L = Label(self,text="Distal limit of integration: ")
		self.powDistalLimit_E = Entry(self,width=5, justify="right")

		self.powProximalLimit_E.insert(0, settings.POW_DEFAULT_PROXIMAL_LIMIT)
		self.powDistalLimit_E.insert(0, settings.POW_DEFAULT_DISTAL_LIMIT)

		self.powWidgets = [self.powProximalLimit_L,self.powProximalLimit_E,
						   self.powDistalLimit_L,self.powDistalLimit_E]
		
		## Weibull setup

		self.weiNumberOfRuns_L = Label(self,text="Number of runs: ")
		self.weiNumberOfRuns_E = Entry(self,width=5, justify="right")
		self.weiIterationsPerRun_L = Label(self,text="Iterations per run: ")
		self.weiIterationsPerRun_E = Entry(self,width=5, justify="right")

		self.weiEstimatedTime_L = Label(self,text="Estimated time (s): ")
		self.weiEstimatedTime_E = CustomEntry(self,width=5, justify="right")
		self.weiEstimatedTime_E.setUserEditable(False)

		self.weiLambdaLowerBoundL = Label(self,text="\u03BB lower bound:")
		self.weiLambdaUpperBoundL = Label(self,text="\u03BB upper bound:")
		self.weiLambdaLowerBoundE = Entry(self,width=5, justify="right")
		self.weiLambdaUpperBoundE = Entry(self,width=5, justify="right")

		self.weiKLowerBoundL = Label(self,text="k lower bound:")
		self.weiKUpperBoundL = Label(self,text="k upper bound:")
		self.weiKLowerBoundE = Entry(self,width=5, justify="right")
		self.weiKUpperBoundE = Entry(self,width=5, justify="right")

		self.weiNumberOfRuns_E.insert(0, settings.WEI_DEFAULT_NUMBER_OF_RUNS)
		self.weiIterationsPerRun_E.insert(0, settings.WEI_DEFAULT_ITERATIONS_PER_RUN)
		self.weiLambdaLowerBoundE.insert(0, settings.WEI_DEFAULT_LAMBDA_LOWER_BOUND)
		self.weiLambdaUpperBoundE.insert(0, settings.WEI_DEFAULT_LAMBDA_UPPER_BOUND)
		self.weiKLowerBoundE.insert(0, settings.WEI_DEFAULT_K_LOWER_BOUND)
		self.weiKUpperBoundE.insert(0, settings.WEI_DEFAULT_K_UPPER_BOUND)

		
		self.weiWidgets = [self.weiNumberOfRuns_L,self.weiNumberOfRuns_E,
						   self.weiIterationsPerRun_L,self.weiIterationsPerRun_E,
						   self.weiEstimatedTime_L,self.weiEstimatedTime_E,
						   self.weiLambdaLowerBoundL,self.weiLambdaUpperBoundL,self.weiLambdaLowerBoundE,self.weiLambdaUpperBoundE,
						   self.weiKLowerBoundL,self.weiKUpperBoundL,self.weiKLowerBoundE,self.weiKUpperBoundE]
		
		## General

		self.currentWidgets = []
		self.selection.set(Model.EXP.value)
		self.changeSelection()
		
	def changeSelection(self):
		
		for widget in self.currentWidgets:
			widget.grid_remove()

		modelType = Model(self.selection.get())
		
		sX = 10
		bX = 20
		
		if modelType == Model.EXP:
			self.expNumberOfSegments_L.grid(row=0,column=2,padx=(bX,sX),pady=(self.topPadding,5),sticky="W")
			self.expNumberOfSegments_E.grid(row=0,column=3,padx=(sX,bX),pady=(self.topPadding,5),sticky="W")
			self.currentWidgets = self.expWidgets
		elif modelType == Model.POW:
			self.powProximalLimit_L.grid(row=0,column=2,padx=(bX,sX),pady=(self.topPadding,5),sticky="W")
			self.powProximalLimit_E.grid(row=0,column=3,padx=(sX,bX),pady=(self.topPadding,5),sticky="W")
			self.powDistalLimit_L.grid(row=1,column=2,padx=(bX,sX),pady=5,sticky="W")
			self.powDistalLimit_E.grid(row=1,column=3,padx=(sX,bX),pady=5,sticky="W")
			self.currentWidgets = self.powWidgets
		elif modelType == Model.WEI:
			self.weiNumberOfRuns_L.grid(row=0,column=2,padx=(bX,sX),pady=(self.topPadding,5),sticky="W")
			self.weiNumberOfRuns_E.grid(row=0,column=3,padx=(sX,bX),pady=(self.topPadding,5),sticky="W")
			self.weiIterationsPerRun_L.grid(row=1,column=2,padx=(bX,sX),pady=5,sticky="W")
			self.weiIterationsPerRun_E.grid(row=1,column=3,padx=(sX,bX),pady=5,sticky="W")
			self.weiEstimatedTime_L.grid(row=2,column=2,padx=(bX,sX),pady=5,sticky="W")
			self.weiEstimatedTime_E.grid(row=2,column=3,padx=(sX,bX),pady=5,sticky="W")
			
			self.weiLambdaLowerBoundL.grid(row=0,column=4,padx=(bX,sX),pady=(self.topPadding,5),sticky="W")
			self.weiLambdaLowerBoundE.grid(row=0,column=5,padx=(sX,bX),pady=(self.topPadding,5))
			self.weiLambdaUpperBoundL.grid(row=1,column=4,padx=(bX,sX),pady=5,sticky="W")
			self.weiLambdaUpperBoundE.grid(row=1,column=5,padx=(sX,bX),pady=5)
			
			self.weiKLowerBoundL.grid(row=0,column=6,padx=(bX,sX),pady=(self.topPadding,5),sticky="W")
			self.weiKLowerBoundE.grid(row=0,column=7,padx=(sX,sX),pady=(self.topPadding,5))
			self.weiKUpperBoundL.grid(row=1,column=6,padx=(bX,sX),pady=5,sticky="W")
			self.weiKUpperBoundE.grid(row=1,column=7,padx=(sX,sX),pady=5)
			
			self.currentWidgets = self.weiWidgets
	
	def getModelDetails(self):
		modelType = Model(self.selection.get())
		values = [modelType]

		if modelType == Model.EXP:
			numberOfSegments = helper_functions.validateValue(
									self.expNumberOfSegments_E.get(),
									"The number of exponential segments must be 1 \u2264 n \u2264 " + str(settings.EXP_MAX_NUMBER_OF_SEGMENTS),
									"int",
									lowerBound=1,
									upperBound=settings.EXP_MAX_NUMBER_OF_SEGMENTS)
			values.append(numberOfSegments)
			
		elif modelType == Model.POW:
			proximalLimitKM = helper_functions.validateValue(
									self.powProximalLimit_E.get(),
									"The proximal limit of integration must be 0 \u2264 x \u2264 \u221E",
									"float",
									strictLowerBound=0,
									strictUpperBound=float('inf'))
			proximalLimitKM /= SQRT_PI
			
			distalLimitKM = helper_functions.validateValue(
									self.powDistalLimit_E.get(),
									"The distal limit of integration must be prox \u2264 x \u2264 \u221E",
									"float",
									strictLowerBound=proximalLimitKM,
									strictUpperBound=float('inf'))
			distalLimitKM /= SQRT_PI
			
			values.extend([proximalLimitKM,distalLimitKM])
			
		elif modelType == Model.WEI:
			numberOfRuns = helper_functions.validateValue(
									self.weiNumberOfRuns_E.get(),
									"The number of runs must be greater than 0",
									"int",
									strictLowerBound=0)
			
			iterationsPerRun = helper_functions.validateValue(
									self.weiIterationsPerRun_E.get(),
									"The number of iterations must be greater than 0",
									"int",
									strictLowerBound=0)
			
			lambdaLowerBound = helper_functions.validateValue(
									self.weiLambdaLowerBoundE.get(),
									"The lower bound for \u03BB must be a decimal",
									"float")
			  
			lambdaUpperBound = helper_functions.validateValue(
									self.weiLambdaUpperBoundE.get(),
									"The upper bound for \u03BB must be greater than the lower bound",
									"float",
									strictLowerBound=lambdaLowerBound)
			
			kLowerBound = helper_functions.validateValue(
									self.weiKLowerBoundE.get(),
									"The lower bound for k must be numeric and less than 2",
									"float",
									strictUpperBound=2)
												
			kUpperBound = helper_functions.validateValue(
									self.weiKUpperBoundE.get(),
									"The upper bound for k must be greater than the lower bound and less than or equal to 2",
									"float",
									strictLowerBound=kLowerBound,
									upperBound=2)
			
			values.extend([numberOfRuns,iterationsPerRun,[[lambdaLowerBound,lambdaUpperBound],[kLowerBound,kUpperBound]]])
		
		return values
Пример #38
0
class Example(Frame):
    def __init__(self, parent, q):
        Frame.__init__(self, parent)
        self.queue = q
        self.parent = parent
        self.initUI()

    def initUI(self):
        self.parent.title("Pi computation")
        self.pack(fill=BOTH, expand=True)

        self.grid_columnconfigure(4, weight=1)
        self.grid_rowconfigure(3, weight=1)

        lbl1 = Label(self, text="Digits:")
        lbl1.grid(row=0, column=0, sticky=E, padx=10, pady=10)

        self.ent1 = Entry(self, width=10)
        self.ent1.insert(END, "4000")
        self.ent1.grid(row=0, column=1, sticky=W)

        lbl2 = Label(self, text="Accuracy:")
        lbl2.grid(row=0, column=2, sticky=E, padx=10, pady=10)

        self.ent2 = Entry(self, width=10)
        self.ent2.insert(END, "100")
        self.ent2.grid(row=0, column=3, sticky=W)

        self.startBtn = Button(self, text="Start",
                               command=self.onStart)
        self.startBtn.grid(row=1, column=0, padx=10, pady=5, sticky=W)

        self.pbar = Progressbar(self, mode='indeterminate')
        self.pbar.grid(row=1, column=1, columnspan=3, sticky=W+E)

        self.txt = scrolledtext.ScrolledText(self)
        self.txt.grid(row=2, column=0, rowspan=4, padx=10, pady=5,
                      columnspan=5, sticky=E+W+S+N)

    def onStart(self):
        self.startBtn.config(state=DISABLED)
        self.txt.delete("1.0", END)

        self.digits = int(self.ent1.get())
        self.accuracy = int(self.ent2.get())

        self.p1 = Process(target=self.generatePi, args=(self.queue,))
        self.p1.start()
        self.pbar.start(DELAY2)
        self.after(DELAY1, self.onGetValue)

    def onGetValue(self):
        if (self.p1.is_alive()):
            self.after(DELAY1, self.onGetValue)
            return
        else:
            try:
                self.txt.insert('end', self.queue.get(0))
                self.txt.insert('end', "\n")
                self.pbar.stop()
                self.startBtn.config(state=NORMAL)
            except queue.Empty:
                print("queue is empty")

    def generatePi(self, queue):
        getcontext().prec = self.digits
        time.sleep(10)

        pi = Decimal(0)
        k = 0
        n = self.accuracy

        while k < n:
            pi += (Decimal(1)/(16**k))*((Decimal(4)/(8*k+1)) -
                                        (Decimal(2)/(8*k+4)) -
                                        (Decimal(1)/(8*k+5)) -
                                        (Decimal(1)/(8*k+6)))
            k += 1
            print(self.p1.is_alive())

        queue.put(pi)
        print("end")