Exemple #1
0
    def __init__(self, master, image, name, enhancer, lo, hi):
        Frame.__init__(self, master)

        # set up the image
        self.tkim = ImageTk.PhotoImage(image.mode, image.size)
        self.enhancer = enhancer(image)
        self.update("1.0")  # normalize

        # image window
        Label(self, image=self.tkim).pack()

        # scale
        s = Scale(self,
                  label=name,
                  orient=HORIZONTAL,
                  from_=lo,
                  to=hi,
                  resolution=0.01,
                  command=self.update)
        s.set(self.value)
        s.pack()
Exemple #2
0
    def initUI(self):
        self.parent.title("Phương pháp nén ảnh JPEG")
        self.pack(fill=BOTH, expand=1)

        menuBar = Menu(self.parent)
        self.parent.config(menu=menuBar)

        fileMenu = Menu(menuBar)
        fileMenu.add_command(label="Open", command=self.onOpen)
        menuBar.add_cascade(label="File", menu=fileMenu)
        menuBar.add_command(label="About", command=self.onInfo)
        menuBar.add_command(label="Exit", command=self.quit)

        self.txt = Text(self)
        self.txt.pack(fill=BOTH, expand=1)

        lbl0 = Label(
            self,
            text=
            "Xin gửi lời cảm ơn đến thầy Nguyễn Linh Giang đã giúp đỡ chúng em hoàn thành đề tài này, mở ảnh chọn File/Open"
        )
        lbl0.place(x=20, y=10)
        lbl1 = Label(self, text="Original Image", width=20)
        lbl1.place(x=20, y=50)
        lbl2 = Label(self, text="Output Image", width=20)
        lbl2.place(x=400, y=50)
        lbl3 = Label(self, text="Size:", width=10)
        lbl3.place(x=20, y=300)
        lbl4 = Label(self, text="Size:", width=10)
        lbl4.place(x=400, y=300)
        lbl5 = Label(self, text="Tỷ lệ nén", width=10)
        lbl5.place(x=250, y=50)
        scale = Scale(self, from_=1, to=90, command=self.onScale)
        scale.place(x=270, y=80)
        self.var = IntVar()

        start = Button(self, text="Start", command=self.onRelease)
        start.place(x=270, y=200)
        self.a = 0
        self.b = 0
    def __init__(self, parent, text="", value=0.0, slider_bind_func=None):
        Frame.__init__(self, parent)

        self.main_bg = parent['bg']
        self.config(bg=self.main_bg)
        self.slider_events = ["<ButtonRelease-1>", "<ButtonRelease-3>"]

        self.label = Label(self, text=text)
        self.label.grid(row=0, column=0, padx=5, pady=3, sticky='s')
        self.slider = Scale(self,
                            from_=1,
                            to=0,
                            orient=VERTICAL,
                            resolution=0.01,
                            length=200,
                            width=18)
        self.slider.grid(row=1, column=0, padx=5, pady=5, sticky='n')
        if slider_bind_func is not None:
            for event in self.slider_events:
                self.slider.bind(event, slider_bind_func)
            self.slider.set(value)
        self.label.config(bg=self.slider['bg'])
    def __init__(self, master):
        self.master = master

        # Window dimensions and fields
        self.depth = 1
        self.index = 0
        self.colors = ["white", "#444444"]
        self.width = 600
        self.height = int(round(self.width * math.sqrt(3) / 2))
        self.margin = 10

        # Setup Tk
        Tk.config(master, bg=self.colors[self.index])
        master.title("Sierpinski")
        master.iconbitmap('tri.ico')
        master.bind("<space>", self.invert)
        master.bind("<Key-Up>", self.updatedepth)
        master.bind("<Key-Down>", self.updatedepth)
        master.bind("<Key-Right>", self.updatedepth)
        master.bind("<Key-Left>", self.updatedepth)

        # setup window
        self.canvas = Canvas(master,
                             width=self.width + (2 * self.margin),
                             height=self.height + (2 * self.margin))
        self.canvas.config(bg=self.colors[self.index], highlightthickness=0)
        self.canvas.bind("<Button-1>", self.invert)
        self.canvas.pack()

        # slider to set triangle depth
        self.level = Scale(master,
                           from_=1,
                           to=8,
                           orient=HORIZONTAL,
                           command=self.updatedepth)
        self.level.config(bg=self.colors[self.index], highlightthickness=0)
        self.level.pack()

        self.draw(self.level.get())
Exemple #5
0
    def create_buttons(self, parent, create_sliders):

        self.jso = Button(parent,
                          text="Import from .json",
                          command=self.import_json)
        self.jso.grid(row=0, column=0, sticky="w")
        self.sav = Button(parent,
                          text="Import from .sav",
                          command=self.import_sav)
        self.sav.grid(row=0, column=1, sticky="w")

        self.scales = []

        # create sliders
        if create_sliders:
            self.jso.grid_configure(row=0, column=0)
            self.sav.grid_configure(row=1, column=0)
            resources = [
                'minerals', 'energy', 'physics', 'society', 'engineering'
            ]
            colors = ["red", "yellow", "blue", "green", "orange"]
            for i in range(len(resources)):
                var = DoubleVar()
                var.set(500)
                callback = lambda event, tag=i: self.weight_update(event, tag)
                b = Scale(parent,
                          from_=1,
                          to=1000,
                          variable=var,
                          length=135,
                          orient='horizontal',
                          troughcolor=colors[i],
                          resolution=1,
                          label=resources[i],
                          showvalue=0)
                b.grid(row=2 + i, column=0, sticky="w")
                b.bind('<ButtonRelease-1>',
                       self.redraw)  # redraw when user release scale
                self.scales.append(var)
Exemple #6
0
    def inicializar_gui(self):
        canvas = Canvas(self.master,
                        width=50,
                        height=50,
                        bd=0,
                        highlightthickness=0)

        canvas.create_polygon(0, 0, 1, 1, 2, 2, fill='blue', tags='flecha')
        canvas.create_line(0, 0, 1, 1, 2, 2, 0, 0, fill='black', tags='linea')

        self.escala = Scale(self.master,
                            orient=VERTICAL,
                            length=285,
                            from_=0,
                            to=250,
                            tickinterval=50,
                            command=lambda h, c=canvas: establecerAltura(c, h))

        self.escala.grid(row=0, column=0, sticky='NE')
        canvas.grid(row=0, column=1, sticky='NWSE')

        self.escala.set(100)
Exemple #7
0
    def __init__(self, root, x, y, name, pin):
        super().__init__(root, x, y, name)

        self._pin = Device.pin_factory.pin(pin,
                                           pin_class=PreciseMockChargingPin)

        self._scale = Scale(root,
                            from_=0,
                            to=90,
                            showvalue=0,
                            orient=VERTICAL,
                            command=self._scale_changed,
                            sliderlength=20,
                            length=150,
                            highlightthickness=0,
                            background="white")
        self._scale.place(x=x + 90, y=y)
        self._scale.set(30)
        self._scale_changed(self._scale.get())

        self._set_image_for_state("light_sensor.png", "normal", (75, 150))
        self._create_main_widget(Label, "normal")
Exemple #8
0
def main(extension):
    root=Toplevel()
    if 'DejaVu Sans' in list(prgm.font.families()):
        police=prgm.font.Font(root,family='DejaVu Sans',size=10)
        root.option_add('*Font',police)
    qualite=prgm.IntVar(root)
    qualite.set(100)
    transparent=prgm.IntVar(root)
    transparent.set(0)
    bar_qualite=Scale(root,from_=100,to=500,orient='horizontal',var=qualite,tickinterval=50,label='Résolution',length=325,resolution=5)
    bar_qualite.grid(column=0,row=0)
    bar_transparent=Checkbutton(root,text='Transparent',variable=transparent)
    bar_transparent.grid(column=0,row=1)
    prgm.Label(root,text='',width=50).grid(column=0,row=2)
    bouton_fermer=prgm.Button(root,text='Valider',command=root.destroy)
    bouton_fermer.grid(column=0,row=3)
    root.title('Exporter en png')
    root.resizable(width=False,height=False)
    if prgm.os.name=='nt':
        root.iconbitmap('python.ico')
    prgm.root.wait_window(root)
    return qualite.get(),transparent.get()
Exemple #9
0
    def main(self):
        """Produce the app window"""
        def clicked(event=None):
            pass

        def unclicked(event=None):
            self.robot.stop()

        def updateFlywheelDuty(event=None):
            duty = self.slider.get()
            print(duty)
            self.robot.setDefaultFlywheelDuty(duty)

        self.up = NoHoverButton(self.frame,
                                text="Start collection",
                                height=5,
                                width=10)
        self.up.pack(padx=10, pady=10)  #grid(column=0, row=0)
        self.up.bind("<ButtonPress>", lambda x: self.robot.autonomous())
        self.up.bind("<ButtonRelease>", unclicked)

        self.calibrate = NoHoverButton(
            self.frame, text="Calibrate\nflywheels")  #, height=5, width=5)
        self.calibrate.pack(padx=10, pady=10)  #.grid(column=1, row=0)
        self.calibrate.bind(
            "<ButtonPress>",
            lambda x: unclicked)  #self.robot.flywheels.calibrate())
        self.calibrate.bind("<ButtonRelease>", lambda x: unclicked)

        self.slider = Scale(self.frame,
                            from_=1000,
                            to=2000,
                            tickinterval=250,
                            resolution=10,
                            length=75,
                            command=updateFlywheelDuty)
        self.slider.set(1130)
        self.slider.pack(padx=10, pady=10)  #.grid(column=2, row=0)
Exemple #10
0
    def create_middle_frame(self, master):
        middle_frame = Frame(master, bg="black")

        Scale(
            middle_frame,
            from_=0,
            to=100,
            orient=HORIZONTAL,
            bg="black",
            fg=self.green_color,
            activebackground=self.green_color,
            highlightcolor=self.green_color,
            sliderlength=20
        ).pack()

        Label(
            middle_frame,
            text="Brightness",
            fg=self.green_color,
            bg="black"
        ).pack()

        middle_frame.grid(row=0, column=1, sticky="nsew")
    def __init__(self, master):
        self.master = master
        master.title("Password Generator")
        self.lbl1 = Label(master, text="Include:").grid(row=0, sticky=W)
        self.incLower = IntVar()
        self.incLower.set(1)        
        self.chk1 = Checkbutton(master, text="lower case", variable=self.incLower).grid(row=1, sticky=W)
        self.incUpper = IntVar()
        self.incUpper.set(1)
        self.chk2 = Checkbutton(master, text="UPPER CASE", variable=self.incUpper).grid(row=2, sticky=W)
        self.incNumeric = IntVar()
        self.incNumeric.set(1)
        self.chk3 = Checkbutton(master, text="numeric", variable=self.incNumeric).grid(row=3, sticky=W)
        self.incPunc = IntVar()
        self.chk4 = Checkbutton(master, text="punctuation", variable=self.incPunc).grid(row=4, sticky=W)
        self.b1 = Button(master, text="Generate password", width=20, command=self.genPwd).grid(row=5, sticky=W)
        self.b2 = Button(master, text="Quit", width=20, command=self.exitApp).grid(row=5, column=1, sticky=W)
        self.label_text = StringVar()
        self.lbl2 = Label(master, textvariable=self.label_text).grid(row=6, column=0, columnspan=2, sticky=W + E)
        self.label_text.set("")

        self.numDigits = IntVar()
        self.sc1 = Scale(master, from_=6, to=40, variable=self.numDigits).grid(row=0, rowspan=5, column=1, sticky=E)
Exemple #12
0
    def __init__(self,
                 root,
                 x,
                 y,
                 name,
                 trigger_pin,
                 echo_pin,
                 min_distance=0,
                 max_distance=50):
        super().__init__(root, x, y, name)

        self._echo_pin = Device.pin_factory.pin(echo_pin)
        self._trigger_pin = Device.pin_factory.pin(
            trigger_pin,
            pin_class=PreciseMockTriggerPin,
            echo_pin=self._echo_pin,
            echo_time=0.004)

        self._echo_pin._bounce = 0
        self._trigger_pin._bounce = 0

        self._set_image_for_state("distance_sensor.png", "normal", (86, 50))
        self._create_main_widget(Label, "normal")

        self._scale = Scale(root,
                            from_=min_distance,
                            to=max_distance,
                            orient=HORIZONTAL,
                            command=self._scale_changed,
                            sliderlength=20,
                            length=150,
                            highlightthickness=0,
                            background="white")
        self._scale.place(x=x + 100, y=y)
        self._scale.set(round((min_distance + max_distance) / 2))
        self._scale_changed(self._scale.get())
Exemple #13
0
    def __init__(self, root):
        super().__init__(root)
        self.configure(relief=SOLID, padx=10, pady=10)
        self.pack(fill=BOTH, expand=True, padx=10, pady=10)

        # Sliders
        for i, name in enumerate(['red', 'green', 'blue']):
            Scale(self, length=256, from_=255, to=0,
                  label=name[0].upper(),
                  variable=getattr(root.color, name),
                  command=root.update_color) \
                .grid(row=0, column=i, sticky=EW)

        def create_callback(x):
            return lambda: root.set_color(*COLORS[x][1:])

        for i, c in enumerate(COLORS):
            Button(self, text=c[0], command=create_callback(i)) \
                .grid(row=i // 3 + 1, column=i % 3, padx=2, pady=2, sticky=EW)

        # Create the color box and color labels
        color_box = Label(self, bg='black', height=7, width=15)
        self.paint_box = Label(self, bg='black', height=7, width=15)
        self.color_tuple = Label(self, text=root.color.get_color_tuple_str())
        self.color_hex = Label(self, text=root.color.get_color_str())

        # Make the paint_box smaller than the color_box due to ipadx and ipday on the color_box
        color_box.grid(row=0,
                       column=3,
                       columnspan=2,
                       padx=(20, 10),
                       ipadx=10,
                       ipady=10)
        self.paint_box.grid(row=0, column=3, columnspan=2, padx=(20, 10))
        self.color_tuple.grid(row=1, column=3, columnspan=2)
        self.color_hex.grid(row=2, column=3, columnspan=2)
    def __init__(self, master):
        self.master = master
        master.title("Stock Analysis - BIT F4E")

        self.label = Label(master, text="This is our first GUI!")
        # self.label.pack()

        self.greet_button = Button(master, text="Greet", command=self.greet)
        # self.greet_button.pack()

        self.close_button = Button(master, text="Close", command=master.quit)
        # self.close_button.pack()

        self.scale = Scale(master,
                           from_=0,
                           to=10,
                           resolution=0.1,
                           command=self.val,
                           orient=HORIZONTAL)

        self.label.grid(columnspan=2, sticky=W)
        self.greet_button.grid(row=1)
        self.close_button.grid(row=1, column=1)
        self.scale.grid(columnspan=4)
#loops through and creates buttons and selecters etc. for trains
for i in range(max_trains):  #one section for each train
    temp_column = 0  #temp column decides how far left/right train options are placed
    if ((i == 1) | (i == 3)):
        temp_column = 5
    temp_row = 1  #decides how far up or down train options are placed
    if ((i == 2) | (i == 3)):
        temp_row = 9 + num_train_actions - 5

    #create label for train
    train_slider_labels[i] = Label(sliders_frame,
                                   text=("Train " + str(i + 1) + " Controls"))
    train_slider_labels[i].grid(column=temp_column, row=temp_row, columnspan=3)
    #create the speed slider for train
    train_speed_sliders[i] = Scale(sliders_frame,
                                   from_=50,
                                   to=0,
                                   tickinterval=10)
    train_speed_sliders[i].grid(column=temp_column,
                                row=temp_row + 1,
                                rowspan=5,
                                columnspan=1,
                                ipady=20,
                                ipadx=10)

    #create forward/reverse options for train
    train_dir_variables[i] = IntVar()
    train_dir_buttons[i][0] = Radiobutton(sliders_frame,
                                          text="Forward",
                                          variable=train_dir_variables[i],
                                          value=0,
                                          indicatoron=0).grid(
Exemple #16
0
    def __init__(self, game: Game):

        Tk.__init__(self)
        # for 4k
        self.tk.call('tk', 'scaling', '-displayof', '.', 1)

        # setup variables
        self.game = game
        self.is_automoving = False

        # create widgets
        self.board_canvas = Canvas(self, background="white")
        self.control_frame = Frame(self)
        self.label_current_player = Label(self.control_frame,
                                          text="Current Player: X")
        self.button_next_turn = Button(self.control_frame,
                                       text="Next Turn",
                                       command=self.next_turn)
        self.slider_automove_speed = scale = Scale(self.control_frame,
                                                   orient='horizontal',
                                                   from_=0,
                                                   to_=2000)
        self.button_toggle_automove = Button(self.control_frame,
                                             text="Start Automove",
                                             command=self.toggle_automove)
        self.checkbox_frame = Frame(self.control_frame)
        # controls user input
        self.user_controlled = []
        for pick in ['X', 'A', 'B', 'C', 'D', 'E']:
            var = IntVar()
            chk = Checkbutton(self.checkbox_frame, text=pick, variable=var)
            chk.pack(side=TOP, anchor=N, expand=YES)
            self.user_controlled.append(var)
        self.text_user_input = Entry(self.control_frame, text="move")
        #self.text_user_input.grid(column=0, sticky='N')
        drop_down_options = {"taxi", "bus", "underground", "black"}
        self.drop_down_selected = StringVar(self.control_frame)
        self.drop_down_selected.set("taxi")
        self.drop_down_menu = OptionMenu(self.control_frame,
                                         self.drop_down_selected,
                                         *drop_down_options)
        #self.drop_down_menu.grid(column=1, sticky='N')
        self.button_send_action = Button(self.control_frame,
                                         text="Send",
                                         command=self.send_move)
        #self.button_send_action.grid(column=2, sticky='N')

        # layout widgets
        self.board_canvas.pack(fill='both', expand=True, anchor='w')
        self.control_frame.pack(before=self.board_canvas,
                                side='right',
                                anchor='e')
        self.label_current_player.pack(fill='x')
        self.button_next_turn.pack(fill='x')
        self.slider_automove_speed.pack(fill='x')
        self.button_toggle_automove.pack(fill='x')
        Label(self.control_frame, text="\n\n\n").pack(fill='x')
        self.checkbox_frame.pack(fill='x', expand=True, anchor='w')
        self.text_user_input.pack(fill='y')
        self.drop_down_menu.pack(fill='y')
        self.button_send_action.pack(fill='y')

        # setup canvas
        self.board_img_pil = Image.open('board.jpg')
        self.board_img = ImageTk.PhotoImage(self.board_img_pil)
        self.img_id = self.board_canvas.create_image(300,
                                                     300,
                                                     image=self.board_img)

        # move image on resize
        self.bind("<Configure>", self.update_ui)
        self.player_colors = [
            "black", "red", "yellow", "green", "blue", "purple"
        ]
        #random.shuffle(self.player_colors)
        self.old_canvas_size = self.winfo_width(), self.winfo_height()
        self.player_rects = [
            self.board_canvas.create_rectangle(0,
                                               0,
                                               1,
                                               1,
                                               fill=self.player_colors[i])
            for i in range(len(self.game.players))
        ]
        self.player_txts = [
            self.board_canvas.create_text(0, 0, text=plr.name)
            for plr in self.game.players
        ]

        # create data for node locations on image
        self.node_locations = {}
        with open("node_locations.txt", "r") as f:
            for line in f:
                l = line.split(" ")
                self.node_locations[int(l[0])] = (float(l[1]), float(l[2]))
    def openCmdWindow(self):
        """
        open the cmd window and initial all the button and text
        """
        panel = Toplevel(self.root)
        panel.wm_title("Command Panel")

        # create text input entry
        text0 = tki.Label(
            panel,
            text=
            'This Controller map keyboard inputs to Tello control commands\n'
            'Adjust the trackbar to reset distance and degree parameter',
            font='Helvetica 10 bold')
        text0.pack(side='top')

        text1 = tki.Label(
            panel,
            text='W - Move Tello Up\t\t\tArrow Up - Move Tello Forward\n'
            'S - Move Tello Down\t\t\tArrow Down - Move Tello Backward\n'
            'A - Rotate Tello Counter-Clockwise\tArrow Left - Move Tello Left\n'
            'D - Rotate Tello Clockwise\t\tArrow Right - Move Tello Right',
            justify="left")
        text1.pack(side="top")

        self.btn_landing = tki.Button(panel,
                                      text="Land",
                                      relief="raised",
                                      command=self.telloLanding)
        self.btn_landing.pack(side="bottom",
                              fill="both",
                              expand="yes",
                              padx=10,
                              pady=5)

        self.btn_takeoff = tki.Button(panel,
                                      text="Takeoff",
                                      relief="raised",
                                      command=self.telloTakeOff)
        self.btn_takeoff.pack(side="bottom",
                              fill="both",
                              expand="yes",
                              padx=10,
                              pady=5)

        # binding arrow keys to drone control
        self.tmp_f = tki.Frame(panel, width=100, height=2)
        self.tmp_f.bind('<KeyPress-w>', self.on_keypress_w)
        self.tmp_f.bind('<KeyPress-s>', self.on_keypress_s)
        self.tmp_f.bind('<KeyPress-a>', self.on_keypress_a)
        self.tmp_f.bind('<KeyPress-d>', self.on_keypress_d)
        self.tmp_f.bind('<KeyPress-Up>', self.on_keypress_up)
        self.tmp_f.bind('<KeyPress-Down>', self.on_keypress_down)
        self.tmp_f.bind('<KeyPress-Left>', self.on_keypress_left)
        self.tmp_f.bind('<KeyPress-Right>', self.on_keypress_right)
        self.tmp_f.pack(side="bottom")
        self.tmp_f.focus_set()

        self.btn_landing = tki.Button(panel,
                                      text="Flip",
                                      relief="raised",
                                      command=self.openFlipWindow)
        self.btn_landing.pack(side="bottom",
                              fill="both",
                              expand="yes",
                              padx=10,
                              pady=5)

        self.distance_bar = Scale(panel,
                                  from_=0.02,
                                  to=5,
                                  tickinterval=0.01,
                                  digits=3,
                                  label='Distance(m)',
                                  resolution=0.01)
        self.distance_bar.set(0.2)
        self.distance_bar.pack(side="left")

        self.btn_distance = tki.Button(
            panel,
            text="Reset Distance",
            relief="raised",
            command=self.updateDistancebar,
        )
        self.btn_distance.pack(side="left",
                               fill="both",
                               expand="yes",
                               padx=10,
                               pady=5)

        self.degree_bar = Scale(panel,
                                from_=1,
                                to=360,
                                tickinterval=10,
                                label='Degree')
        self.degree_bar.set(30)
        self.degree_bar.pack(side="right")

        self.btn_distance = tki.Button(panel,
                                       text="Reset Degree",
                                       relief="raised",
                                       command=self.updateDegreebar)
        self.btn_distance.pack(side="right",
                               fill="both",
                               expand="yes",
                               padx=10,
                               pady=5)
Exemple #18
0
Button(root, text='tk Button').grid(row=1, column=0)
ttk.Button(root, text='ttk Button').grid(row=1, column=1)

Checkbutton(root, text='tk CheckButton').grid(row=2, column=0)
ttk.Checkbutton(root, text='ttk CheckButton').grid(row=2, column=1)

Entry(root).grid(row=3, column=0)
ttk.Entry(root).grid(row=3, column=1)

PanedWindow(root).grid(row=4, column=0)
ttk.PanedWindow(root).grid(row=4, column=1)

Radiobutton(root, text='tk Radio').grid(row=5, column=0)
ttk.Radiobutton(root, text='ttk Radio').grid(row=5, column=1)

Scale(root, orient=HORIZONTAL).grid(row=6, column=0)
ttk.Scale(root).grid(row=6, column=1)

ttk.Separator(root, orient=HORIZONTAL).grid(row=7, columnspan=2, sticky="ew")
ttk.Label(root, text='NEW WIDGETS INTRODUCED IN ttk').grid(row=8, columnspan=2)
ttk.Separator(root, orient=HORIZONTAL).grid(row=9, columnspan=2, sticky="ew")

ttk.Combobox(root).grid(row=11, column=0)

my_notebook = ttk.Notebook(root)
my_notebook.grid(row=12, column=1)
frame_1 = ttk.Frame(my_notebook)
frame_2 = ttk.Frame(my_notebook)
my_notebook.add(frame_1, text='Tab One')
my_notebook.add(frame_2, text='Tab Two')
Exemple #19
0
    for slider, bounds in zip(sliders, sliderbounds):randomise_slider(slider, bounds)

def set_sliders_to_val_row(sliders, vals_row):
    for slider, val in zip(sliders, vals_row):slider.set(val)

def multiply_bounds_from_mean(bounds, factor):
    midpoint=mean(bounds)
    distance=midpoint-bounds[0]
    return (midpoint-factor*distance, midpoint+factor*distance)


root=Tk()

component_bounds=[(min(vals[:,i]), max(vals[:,i])) for i in range(num_components)]
sliderbounds=[multiply_bounds_from_mean(bounds, slider_factor) for bounds in component_bounds]
sliders=[Scale(root, from_=min(bounds), to=max(bounds), length=500) for i,bounds in zip(range(num_components), sliderbounds)]

for n,slider in enumerate(sliders):
    if display_sliders:
        slider.grid(row=0, column=num_images+n, rowspan=3)

default_vals_row=random.choice(vals)
set_sliders_to_val_row(sliders, default_vals_row)


# Button(root, text="ok", command=display_image_from_sliders).pack()
Button(root, text="randomise", command=randomise_sliders).grid(row=2, column=0, columnspan=num_images)

frame=Frame(root, width=size[0], height=size[1], background='white')
frame.grid(row=0, column=0, columnspan=num_images)
Exemple #20
0
    def __init__(self, master):

        self.master = master
        master.title("GUI")

        self.label = Label(master, text="Fluid Cell Control")
        self.label.pack()

        self.var1 = IntVar()
        self.check1 = Checkbutton(master,
                                  text="1",
                                  variable=self.var1,
                                  command=self.update_valve)
        self.check1.pack()

        self.var2 = IntVar()
        self.check2 = Checkbutton(master,
                                  text="2",
                                  variable=self.var2,
                                  command=self.update_valve)
        self.check2.pack()

        self.var3 = IntVar()
        self.check3 = Checkbutton(master,
                                  text="3",
                                  variable=self.var3,
                                  command=self.update_valve)
        self.check3.pack()

        self.var4 = IntVar()
        self.check4 = Checkbutton(master,
                                  text="4",
                                  variable=self.var4,
                                  command=self.update_valve)
        self.check4.pack()

        self.var5 = IntVar()
        self.check5 = Checkbutton(master,
                                  text="5",
                                  variable=self.var5,
                                  command=self.update_valve)
        self.check5.pack()

        self.var6 = IntVar()
        self.check6 = Checkbutton(master,
                                  text="6",
                                  variable=self.var6,
                                  command=self.update_valve)
        self.check6.pack()

        self.apply_button = Button(master,
                                   text="Apply",
                                   command=self.print_valve)
        self.apply_button.pack()

        self.speed = StringVar()
        self.speed_entry = Entry(master, textvariable=self.speed)
        self.speed_entry.pack()

        self.speed_scale = Scale(master,
                                 from_=0,
                                 to=255,
                                 variable=self.speed,
                                 orient=HORIZONTAL)
        self.speed_scale.pack()

        self.apply_speed = Button(master,
                                  text="Apply",
                                  command=self.print_speed)
        self.apply_speed.pack()

        self.close_button = Button(master, text="Close", command=master.quit)
        self.close_button.pack()
window.birdViewPhotoImage = Label(window, image=birdViewPhotoImage)
window.birdViewPhotoImage.grid(row=3, column=0)

detectedLinesPhotoImage = PhotoImage(
    Image.fromarray(resize_image(mpimg.imread(images[0]))))
window.detectedLinesPhotoImage = Label(window, image=detectedLinesPhotoImage)
window.detectedLinesPhotoImage.grid(row=3, column=1)

projectedPhotoImage = PhotoImage(
    Image.fromarray(resize_image(mpimg.imread(images[0]))))
window.projectedPhotoImage = Label(window, image=projectedPhotoImage)
window.projectedPhotoImage.grid(row=3, column=2)

window.sobelLowThreshold = Scale(window,
                                 from_=0,
                                 to=255,
                                 orient=HORIZONTAL,
                                 command=change_sobel_thresh_min,
                                 label="Low Sobel Threshold")
window.sobelLowThreshold.grid(row=4, column=0, columnspan=3, sticky='we')

window.sobelHighThreshold = Scale(window,
                                  from_=0,
                                  to=255,
                                  orient=HORIZONTAL,
                                  command=change_sobel_thresh_min,
                                  label="High Sobel Threshold")
window.sobelHighThreshold.grid(row=5, column=0, columnspan=3, sticky='we')
window.sobelHighThreshold.set(255)

window.sLowThreshold = Scale(window,
                             from_=0,
Exemple #22
0
def guiMain(settings=None):
    frames = {}

    mainWindow = Tk()
    mainWindow.wm_title("OoT Randomizer %s" % ESVersion)

    set_icon(mainWindow)

    notebook = ttk.Notebook(mainWindow)
    frames['rom_tab'] = ttk.Frame(notebook)
    frames['rules_tab'] = ttk.Frame(notebook)
    frames['logic_tab'] = ttk.Frame(notebook)
    frames['other_tab'] = ttk.Frame(notebook)
    frames['aesthetic_tab'] = ttk.Frame(notebook)
    adjustWindow = ttk.Frame(notebook)
    customWindow = ttk.Frame(notebook)
    notebook.add(frames['rom_tab'], text='ROM Options')
    notebook.add(frames['rules_tab'], text='Main Rules')
    notebook.add(frames['logic_tab'], text='Detailed Logic')
    notebook.add(frames['other_tab'], text='Other')
    notebook.add(frames['aesthetic_tab'], text='Aesthetics')

    # Shared Controls   

    # adds a LabelFrame containing a list of radio buttons based on the given data
    # returns the label_frame, and a variable associated with it
    def MakeRadioList(parent, data):
        # create a frame to hold the radio buttons
        lable_frame = LabelFrame(parent, text=data["name"], labelanchor=NW)
        # create a variable to hold the result of the user's decision
        radio_var = StringVar(value=data["default"]);
        # setup orientation
        side = TOP
        anchor = W
        if "horizontal" in data and data["horizontal"]:
            side = LEFT
            anchor = N
        # add the radio buttons
        for option in data["options"]:
            radio_button = Radiobutton(lable_frame, text=option["description"], value=option["value"], variable=radio_var,
                                       justify=LEFT, wraplength=data["wraplength"])
            radio_button.pack(expand=True, side=side, anchor=anchor)
        # return the frame so it can be packed, and the var so it can be used
        return (lable_frame, radio_var)

    #######################
    # randomizer controls #
    #######################

    # hold the results of the user's decisions here
    guivars = {}

    # hierarchy
    ############

    #Rules Tab
    frames['open']   = LabelFrame(frames['rules_tab'], text='Open',   labelanchor=NW)
    frames['logic']  = LabelFrame(frames['rules_tab'], text='Logic',  labelanchor=NW)

    # Logic tab
    frames['rewards'] = LabelFrame(frames['logic_tab'], text='Remove Specific Locations', labelanchor=NW)
    frames['tricks']  = LabelFrame(frames['logic_tab'], text='Specific expected tricks', labelanchor=NW)

    #Other Tab
    frames['convenience'] = LabelFrame(frames['other_tab'], text='Speed Ups', labelanchor=NW)
    frames['other']       = LabelFrame(frames['other_tab'], text='Misc',      labelanchor=NW)

    #Aesthetics tab
    frames['tuniccolor'] = LabelFrame(frames['aesthetic_tab'], text='Tunic Color', labelanchor=NW)
    frames['navicolor']       = LabelFrame(frames['aesthetic_tab'], text='Navi Color',  labelanchor=NW)
    frames['lowhp']      = LabelFrame(frames['aesthetic_tab'], text='Low HP SFX',  labelanchor=NW)


    # shared
    settingsFrame = Frame(mainWindow)
    settings_string_var = StringVar()
    settingsEntry = Entry(settingsFrame, textvariable=settings_string_var)

    def show_settings(event=None):
        settings = guivars_to_settings(guivars)
        settings_string_var.set( settings.get_settings_string() )

        # Update any dependencies
        for info in setting_infos:
            if info.gui_params and 'dependency' in info.gui_params:
                dep_met = True
                for dep_var, dep_val in info.gui_params['dependency'].items():
                    if guivars[dep_var].get() != dep_val:
                        dep_met = False

                if widgets[info.name].winfo_class() == 'Frame':
                    for child in widgets[info.name].winfo_children():
                        child.configure(state= 'normal' if dep_met else 'disabled')
                else:
                    widgets[info.name].config(state = 'normal' if dep_met else 'disabled')


    def import_settings(event=None):
        try:
            settings = guivars_to_settings(guivars)
            text = settings_string_var.get().upper()
            settings.seed = guivars['seed'].get()
            settings.update_with_settings_string(text)
            settings_to_guivars(settings, guivars)
        except Exception as e:
            messagebox.showerror(title="Error", message="Invalid settings string")

    label = Label(settingsFrame, text="Settings String")
    importSettingsButton = Button(settingsFrame, text='Import Settings String', command=import_settings)
    label.pack(side=LEFT, anchor=W, padx=5)
    settingsEntry.pack(side=LEFT, anchor=W)
    importSettingsButton.pack(side=LEFT, anchor=W, padx=5)



    fileDialogFrame = Frame(frames['rom_tab'])

    romDialogFrame = Frame(fileDialogFrame)
    baseRomLabel = Label(romDialogFrame, text='Base Rom')
    guivars['rom'] = StringVar(value='ZOOTDEC.z64')
    romEntry = Entry(romDialogFrame, textvariable=guivars['rom'], width=40)

    def RomSelect():
        rom = filedialog.askopenfilename(filetypes=[("Rom Files", (".z64", ".n64")), ("All Files", "*")])
        if rom != '':
            guivars['rom'].set(rom)
    romSelectButton = Button(romDialogFrame, text='Select Rom', command=RomSelect, width=10)

    baseRomLabel.pack(side=LEFT, padx=(40,0))
    romEntry.pack(side=LEFT, padx=3)
    romSelectButton.pack(side=LEFT)

    romDialogFrame.pack()

    fileDialogFrame.pack(side=TOP, anchor=W, padx=5, pady=(5,1))

    def open_output():
        open_file(output_path(''))
    
    def output_dir_select():
        rom = filedialog.askdirectory(initialdir = default_output_path(guivars['output_dir'].get()))
        if rom != '':
            guivars['output_dir'].set(rom)

    outputDialogFrame = Frame(frames['rom_tab'])
    outputDirLabel = Label(outputDialogFrame, text='Output Directory')
    guivars['output_dir'] = StringVar(value='')
    outputDirEntry = Entry(outputDialogFrame, textvariable=guivars['output_dir'], width=40)
    outputDirButton = Button(outputDialogFrame, text='Select Dir', command=output_dir_select, width=10)
    outputDirLabel.pack(side=LEFT, padx=(3,0))
    outputDirEntry.pack(side=LEFT, padx=3)
    outputDirButton.pack(side=LEFT)
    outputDialogFrame.pack(side=TOP, anchor=W, padx=5, pady=(5,1))

    if os.path.exists(local_path('README.html')):
        def open_readme():
            open_file(local_path('README.html'))
        openReadmeButton = Button(outputDialogFrame, text='Open Documentation', command=open_readme)
        openReadmeButton.pack(side=LEFT, padx=5)

    outputDialogFrame.pack(side=TOP, anchor=W, pady=3)

    countDialogFrame = Frame(frames['rom_tab'])
    countLabel = Label(countDialogFrame, text='Generation Count')
    guivars['count'] = StringVar()
    countSpinbox = Spinbox(countDialogFrame, from_=1, to=100, textvariable=guivars['count'], width=3)

    countLabel.pack(side=LEFT)
    countSpinbox.pack(side=LEFT, padx=2)
    countDialogFrame.pack(side=TOP, anchor=W, padx=5, pady=(1,1))

    multiworldFrame = LabelFrame(frames['rom_tab'], text='Multi-World Generation')
    countLabel = Label(multiworldFrame, wraplength=300, justify=LEFT, text='This is used for co-op generations. Increasing World Count will drastically increase the generation time. For more information see https://github.com/TestRunnerSRL/bizhawk-co-op')
    countLabel.pack(side=TOP, anchor=W, padx=5, pady=(1,1))


    worldCountFrame = Frame(multiworldFrame)
    countLabel = Label(worldCountFrame, text='World Count')
    guivars['world_count'] = StringVar()
    countSpinbox = Spinbox(worldCountFrame, from_=1, to=100, textvariable=guivars['world_count'], width=3)

    countLabel.pack(side=LEFT)
    countSpinbox.pack(side=LEFT, padx=2)
    worldCountFrame.pack(side=LEFT, anchor=N, padx=5, pady=(1,1))

    playerNumFrame = Frame(multiworldFrame)
    countLabel = Label(playerNumFrame, text='Player Number')
    guivars['player_num'] = StringVar()
    countSpinbox = Spinbox(playerNumFrame, from_=1, to=100, textvariable=guivars['player_num'], width=3)

    countLabel.pack(side=LEFT)
    countSpinbox.pack(side=LEFT, padx=2)
    playerNumFrame.pack(side=LEFT, anchor=N, padx=5, pady=(1,1))
    multiworldFrame.pack(side=TOP, anchor=W, padx=5, pady=(1,1))




    # build gui
    ############

    widgets = {}

    for info in setting_infos:
        if info.gui_params:
            if info.gui_params['widget'] == 'Checkbutton':
                # determine the initial value of the checkbox
                default_value = 1 if info.gui_params['default'] == "checked" else 0
                # create a variable to access the box's state
                guivars[info.name] = IntVar(value=default_value)
                # create the checkbox
                widgets[info.name] = Checkbutton(frames[info.gui_params['group']], text=info.gui_params['text'], variable=guivars[info.name], justify=LEFT, wraplength=200, command=show_settings)
                widgets[info.name].pack(expand=False, anchor=W)
            elif info.gui_params['widget'] == 'Combobox':
                # create the variable to store the user's decision
                guivars[info.name] = StringVar(value=info.gui_params['default'])
                # create the option menu
                widgets[info.name] = Frame(frames[info.gui_params['group']])
                # dropdown = OptionMenu(widgets[info.name], guivars[info.name], *(info['options']))
                if isinstance(info.gui_params['options'], list):
                    info.gui_params['options'] = dict(zip(info.gui_params['options'], info.gui_params['options']))
                dropdown = ttk.Combobox(widgets[info.name], textvariable=guivars[info.name], values=list(info.gui_params['options'].keys()), state='readonly', width=30)
                dropdown.bind("<<ComboboxSelected>>", show_settings)
                dropdown.pack(side=BOTTOM, anchor=W)
                # label the option
                if 'text' in info.gui_params:
                    label = Label(widgets[info.name], text=info.gui_params['text'])
                    label.pack(side=LEFT, anchor=W, padx=5)
                # pack the frame
                widgets[info.name].pack(expand=False, side=TOP, anchor=W, padx=3, pady=3)
            elif info.gui_params['widget'] == 'Scale':
                # create the variable to store the user's decision
                guivars[info.name] = IntVar(value=info.gui_params['default'])
                # create the option menu
                widgets[info.name] = Frame(frames[info.gui_params['group']])
                # dropdown = OptionMenu(widgets[info.name], guivars[info.name], *(info['options']))
                minval = 'min' in info.gui_params and info.gui_params['min'] or 0
                maxval = 'max' in info.gui_params and info.gui_params['max'] or 100
                stepval = 'step' in info.gui_params and info.gui_params['step'] or 1


                scale = Scale(widgets[info.name], variable=guivars[info.name], from_=minval, to=maxval, tickinterval=stepval, resolution=stepval, showvalue=0, orient=HORIZONTAL, sliderlength=15, length=200, command=show_settings)
                scale.pack(side=BOTTOM, anchor=W)
                # label the option
                if 'text' in info.gui_params:
                    label = Label(widgets[info.name], text=info.gui_params['text'])
                    label.pack(side=LEFT, anchor=W, padx=5)
                # pack the frame
                widgets[info.name].pack(expand=False, side=TOP, anchor=W, padx=3, pady=3)
            elif info.gui_params['widget'] == 'Entry':
                # create the variable to store the user's decision
                guivars[info.name] = StringVar(value=info.gui_params['default'])
                # create the option menu
                widgets[info.name] = Frame(frames[info.gui_params['group']])

                entry = Entry(widgets[info.name], textvariable=guivars[info.name], width=30)
                entry.pack(side=BOTTOM, anchor=W)
                # label the option
                if 'text' in info.gui_params:
                    label = Label(widgets[info.name], text=info.gui_params['text'])
                    label.pack(side=LEFT, anchor=W, padx=5)
                # pack the frame
                widgets[info.name].pack(expand=False, side=TOP, anchor=W, padx=3, pady=3)


    # pack the hierarchy

    frames['open'].pack(  fill=BOTH, expand=True, anchor=N, side=LEFT, pady=(5,1) )
    frames['logic'].pack( fill=BOTH, expand=True, anchor=N, side=LEFT, pady=(5,1) )

    # Logic tab
    frames['rewards'].pack(fill=BOTH, expand=True, anchor=N, side=LEFT, pady=(5,1) )
    frames['tricks'].pack( fill=BOTH, expand=True, anchor=N, side=LEFT, pady=(5,1) )

    #Other Tab
    frames['convenience'].pack(fill=BOTH, expand=True, anchor=N, side=LEFT, pady=(5,1) )
    frames['other'].pack(      fill=BOTH, expand=True, anchor=N, side=LEFT, pady=(5,1) )

    #Aesthetics tab
    frames['navicolor'].pack( fill=BOTH, expand=True, anchor=N, side=RIGHT, pady=(5,1) )
    frames['tuniccolor'].pack(fill=BOTH, expand=True, anchor=W, side=TOP, pady=(5,1) )
    frames['lowhp'].pack(     fill=BOTH, expand=True, anchor=W, side=BOTTOM, pady=(5,1) )

    
    notebook.pack(fill=BOTH, expand=True, padx=5, pady=5)



    # didn't refactor the rest, sorry


    # create the option menu

    settingsFrame.pack(fill=BOTH, anchor=W, padx=5, pady=(10,0))

    def generateRom():
        settings = guivars_to_settings(guivars)

        try:
            if settings.count is not None:
                orig_seed = settings.seed
                for i in range(settings.count):
                    settings.update_seed(orig_seed + '-' + str(i))
                    main(settings)
            else:
                main(settings)
        except Exception as e:
            messagebox.showerror(title="Error while creating seed", message=str(e))
        else:
            messagebox.showinfo(title="Success", message="Rom patched successfully")

    generateSeedFrame = Frame(mainWindow)
    generateButton = Button(generateSeedFrame, text='Generate Patched Rom', command=generateRom)

    seedLabel = Label(generateSeedFrame, text='Seed')
    guivars['seed'] = StringVar()
    seedEntry = Entry(generateSeedFrame, textvariable=guivars['seed'])
    seedLabel.pack(side=LEFT)
    seedEntry.pack(side=LEFT)
    generateButton.pack(side=LEFT, padx=(5, 0))

    generateSeedFrame.pack(side=BOTTOM, anchor=W, padx=5, pady=10)

    if settings is not None:
        # load values from commandline args
        settings_to_guivars(settings, guivars)
    else:
        # try to load saved settings
        try:
            with open('settings.sav') as f:
                settings = Settings( json.load(f) )
                settings.update_seed("")
                settings_to_guivars(settings, guivars)
        except:
            pass

    show_settings()

    mainWindow.mainloop()

    # save settings on close
    with open('settings.sav', 'w') as outfile:
        settings = guivars_to_settings(guivars)
        json.dump(settings.__dict__, outfile)
Exemple #23
0
    def __init__(self,parent):
        chosenFont = font.Font(family='Verdana', size=10, weight='normal')
        Frame.__init__(self,parent,background="white")
        self.parent = parent
        self.parent.title("simple window")
        self.style = ttk.Style()
        self.style.theme_use("default")
        self.centreWindow()
        self.pack(fill=BOTH,expand=1)

        # 라벨 표시와 입력
        firstNameLabel = Label(self, text="First Name", font=chosenFont) # 폰트설정
        firstNameLabel.grid(row=0, column=0, sticky=W + E)
        lastNameLabel = Label(self, text="Last Name")
        lastNameLabel.grid(row=1, column=0, sticky=W + E)
        countryLabel = Label(self, text="Country")
        countryLabel.grid(row=2, column=0, sticky=W + E)
        addressLabel = Label(self, text="Address")
        addressLabel.grid(row=3, column=0, pady=10, sticky=W + E + N)

        firstNameText = Entry(self, width=20)
        firstNameText.grid(row=0, column=1, padx=5, pady=5, ipady=2, sticky=W + E)
        lastNameText = Entry(self, width=20)
        lastNameText.grid(row=1, column=1, padx=5, pady=5, ipady=2, sticky=W + E)
        addressText = Text(self, padx=5, pady=5, width=20, height=6)
        addressText.grid(row=3, column=1, padx=5, pady=5, sticky=W)


        # 내가 필요한 클릭 스크롤바
        self.countryVar = StringVar()
        self.countryCombo = ttk.Combobox(self, textvariable=self.countryVar)
        self.countryCombo['values'] = ('United States', 'United Kingdom', 'France')
        self.countryCombo.current(1)
        self.countryCombo.bind("<<ComboboxSelected>>", self.newCountry)
        self.countryCombo.grid(row=2, column=1, padx=5, pady=5, ipady=2, sticky=W)

        # 좌우 스크롤로 값 변경
        self.salaryVar = StringVar()
        salaryLabel = Label(self, text="Salary:",textvariable=self.salaryVar)
        salaryLabel.grid(row=0, column=2,columnspan=2, sticky=W+E)
        salaryScale = Scale(self, from_=0,to=1, orient=HORIZONTAL,
                            resolution=1,command=self.onSalaryScale)
        salaryScale.grid(row=1, column=2,columnspan=1, sticky=W+E)

        # 체크박스 기능
        self.fullTimeVar = IntVar()
        fullTimeCheck = Checkbutton(self, text="Full-time?",
                                    variable=self.fullTimeVar, command=self.fullChecked)
        fullTimeCheck.grid(row=2, column=2, columnspan=2, sticky=W + E)

        # -
        self.titleVar = StringVar()
        self.titleVar.set("TBA")
        Label(self, textvariable=self.titleVar).grid(
            row=4, column=1, sticky=W + E
        )  # a reference to the label is not retained

        title = ['Programmer', 'Developer', 'Web Developer', 'Designer']
        titleList = Listbox(self, height=5)
        for t in title:
            titleList.insert(END, t)
        titleList.grid(row=3, column=2, columnspan=2, pady=5, sticky=N + E + S + W)
        titleList.bind("<<ListboxSelect>>", self.newTitle)

        # 버튼
        okBtn = Button(self, text="OK", width=10, command=self.onConfirm)
        okBtn.grid(row=4, column=2, padx=5, pady=3, sticky=W + E)
        closeBtn = Button(self, text="Close", width=10, command=self.onExit)
        closeBtn.grid(row=4, column=3, padx=5, pady=3, sticky=W + E)
Exemple #24
0
    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent, bg="#1959B3")
        self.controller = controller

        canvas = Canvas(self, bg="#1959B3", height=583, width=673)
        canvas.pack()
        canvas.create_line(320, 157, 320, 500, dash=(6, 4),
                           fill="white")  #Linea punteada
        canvas.place(x=10, y=10)  #Linea externa

        label = tk.Label(self,
                         text="OpenBCI",
                         font=("Times", 70),
                         fg="white",
                         bg="#1959B3")
        label.pack(side="top", fill="x", pady=10)
        label.place(relx=0.32, rely=0.07)
        label2 = tk.Label(self,
                          text="Camila Andrea Navarrete Cataño",
                          fg="white",
                          bg="#1959B3",
                          font=("Verdana"))
        label2.pack(side="bottom", fill="x", pady=10)
        label2.place(relx=0.08, rely=0.96)
        label3 = tk.Label(self,
                          text="Seleccionar puerto USB:",
                          font=("Helvetica", 17),
                          fg="white",
                          bg="#1959B3")
        label3.pack(fill="x", pady=5)
        label3.place(relx=0.50, rely=0.31)
        label4 = tk.Label(self,
                          text="Bluetooth:",
                          font=("Helvetica", 17),
                          fg="white",
                          bg="#1959B3")
        label4.pack(fill="x", pady=5)
        label4.place(relx=0.50, rely=0.39)
        label6 = tk.Label(self,
                          text="Seleccionar tiempo de grabación:",
                          font=("Helvetica", 17),
                          fg="white",
                          bg="#1959B3")
        label6.pack(side="top", fill="x", pady=10)
        label6.place(relx=0.50, rely=0.58)
        label7 = tk.Label(
            self,
            text=
            "Este programa le ayudará a interactuar con las interfaces cerebro - computadora mediante el movimiento de una barra virtual y el robot mBot Ranger, en tiempo real."
            " En la siguiente página podra visualizar la señal de EEG del canal 8, el espectro de frecuencias y la barra  ",
            font=("Helvetica", 17),
            fg="white",
            bg="#1959B3",
            justify="left",
            wraplength=250)
        label7.pack(side="top", fill="x", pady=10)
        label7.place(relx=0.1, rely=0.35)

        button1 = tk.Button(self,
                            text="Iniciar",
                            command=lambda: controller.show_frame("PageOne"))
        button1.pack()
        button1.place(relx=0.64, rely=0.81, height=50, width=80)
        button3 = tk.Button(self, text="OK", command=self.callbackserial)
        button3.pack()
        button3.place(relx=0.87, rely=0.46, height=35, width=60)
        button2 = tk.Button(self, text="OK", command=self.callbacktime)
        button2.pack()
        button2.place(relx=0.87, rely=0.67, height=35, width=60)

        number = tk.StringVar()
        self.combo = ttk.Combobox(
            self, textvariable=number)  #Seleccionar puerto serial
        self.combo.place(x=355, y=285, width=240)
        self.combo["values"] = serial_ports()

        self.slider = Scale(self,
                            orient='horizontal',
                            from_=1,
                            to=10,
                            tickinterval=1)  #Barra de tiempos
        self.slider.pack()
        self.slider.place(relx=0.50, rely=0.65, width=240)
Exemple #25
0
    def _entry(self):
        '''Method for creating widgets for collecting user input.'''

        # N (no of turtles)
        dim = 30 * 30
        self._N_label = Label(self._entryPane,
                              anchor='w',
                              justify='left',
                              text="N:",
                              relief='raised',
                              width=12,
                              height=1,
                              font="italic 20")
        self._N_label.grid(row=0, column=1, ipady=14)

        self._N = Scale(self._entryPane,
                        from_=1,
                        to=dim - 50,
                        resolution=1,
                        bd=3,
                        relief='sunken',
                        orient='horizontal',
                        length=235,
                        tickinterval=849)
        self._N.set(400)
        self._N.grid(row=0, column=2)

        # Ticks (lenght of simulation)
        self._Ticks_label = Label(self._entryPane,
                                  anchor='w',
                                  justify='left',
                                  text="Time:",
                                  relief='raised',
                                  width=12,
                                  height=1,
                                  font="bold 20")
        self._Ticks_label.grid(row=1, column=1, ipady=14)

        self._Ticks = Scale(self._entryPane,
                            from_=10,
                            to=1000,
                            resolution=1,
                            bd=3,
                            relief='sunken',
                            orient='horizontal',
                            length=235,
                            tickinterval=990)
        self._Ticks.set(500)
        self._Ticks.grid(row=1, column=2)

        # % similar wanted
        self._Similar_label = Label(self._entryPane,
                                    anchor='w',
                                    justify='left',
                                    text="Similar wanted:",
                                    relief='raised',
                                    width=12,
                                    height=1,
                                    font="bold 20")

        self._Similar_label.grid(row=2, column=1, ipady=14)

        self._Similar = Scale(self._entryPane,
                              from_=0.0,
                              to=1.0,
                              resolution=0.01,
                              bd=3,
                              relief='sunken',
                              orient='horizontal',
                              length=235,
                              tickinterval=1)
        self._Similar.set(0.76)
        self._Similar.grid(row=2, column=2)
Exemple #26
0
    def __init__(self):
        # MQTT Client
        self.client = mqtt.Client(client_id="simulator")
        self.client.connect("localhost", port=1883)

        # Window settings
        self.window = Tk()
        self.window.title(cnst.WINDOW_TITLE)
        self.window.geometry(
            str(cnst.WINDOW_WIDTH) + 'x' + str(cnst.WINDOW_HEIGHT))

        # Temperature slider
        self.temp_lbl = Label(self.window, text="Temperature")
        self.temp_lbl.pack(anchor=CENTER)
        self.temp_var = DoubleVar(value=cnst.DEFAULT_TEMP)
        self.slider_temperature = Scale(self.window,
                                        variable=self.temp_var,
                                        from_=cnst.MIN_TEMP,
                                        to_=cnst.MAX_TEMP,
                                        resolution=-1,
                                        orient=HORIZONTAL)
        self.slider_temperature.pack(anchor=CENTER)

        # API Temperature slider
        self.api_temp_lbl = Label(self.window, text="API Temperature")
        self.api_temp_lbl.pack(anchor=CENTER)
        self.api_temp_var = DoubleVar(value=cnst.DEFAULT_TEMP)
        self.slider_api_temperature = Scale(self.window,
                                            variable=self.api_temp_var,
                                            from_=cnst.MIN_TEMP,
                                            to_=cnst.MAX_TEMP,
                                            resolution=-1,
                                            orient=HORIZONTAL)
        self.slider_api_temperature.pack(anchor=CENTER)

        # API Min temperature slider
        self.api_min_temp_lbl = Label(self.window, text="API Min Temperature")
        self.api_min_temp_lbl.pack(anchor=CENTER)
        self.api_min_temp_var = DoubleVar(value=cnst.DEFAULT_TEMP)
        self.slider_api_min_temperature = Scale(self.window,
                                                variable=self.api_min_temp_var,
                                                from_=cnst.MIN_TEMP,
                                                to_=cnst.MAX_TEMP,
                                                resolution=-1,
                                                orient=HORIZONTAL)
        self.slider_api_min_temperature.pack(anchor=CENTER)

        # API Max temperature slider
        self.api_max_temp_lbl = Label(self.window, text="API Max Temperature")
        self.api_max_temp_lbl.pack(anchor=CENTER)
        self.api_max_temp_var = DoubleVar(value=cnst.DEFAULT_TEMP)
        self.slider_api_max_temperature = Scale(self.window,
                                                variable=self.api_max_temp_var,
                                                from_=cnst.MIN_TEMP,
                                                to_=cnst.MAX_TEMP,
                                                resolution=-1,
                                                orient=HORIZONTAL)
        self.slider_api_max_temperature.pack(anchor=CENTER)

        # API Feels temperature slider
        self.api_feels_temp_lbl = Label(self.window,
                                        text="API Feels Temperature")
        self.api_feels_temp_lbl.pack(anchor=CENTER)
        self.api_feels_temp_var = DoubleVar(value=cnst.DEFAULT_TEMP)
        self.slider_api_feels_temperature = Scale(
            self.window,
            variable=self.api_feels_temp_var,
            from_=cnst.MIN_TEMP,
            to_=cnst.MAX_TEMP,
            resolution=-1,
            orient=HORIZONTAL)
        self.slider_api_feels_temperature.pack(anchor=CENTER)

        # API Humidity slider
        self.api_humidity_lbl = Label(self.window, text="API Humidity")
        self.api_humidity_lbl.pack(anchor=CENTER)
        self.api_humidity_var = DoubleVar(value=cnst.DEFAULT_HUMIDITY)
        self.slider_api_humidity = Scale(self.window,
                                         variable=self.api_humidity_var,
                                         from_=cnst.MIN_HUMIDITY,
                                         to_=cnst.MAX_HUMIDITY,
                                         resolution=-1,
                                         orient=HORIZONTAL)
        self.slider_api_humidity.pack(anchor=CENTER)

        # Luminosity slider
        self.luminosity_lbl = Label(self.window, text="Luminosity")
        self.luminosity_lbl.pack(anchor=CENTER)
        self.luminosity_var = DoubleVar(value=cnst.DEFAULT_LUMINOSITY)
        self.slider_luminosity = Scale(self.window,
                                       variable=self.luminosity_var,
                                       from_=cnst.MIN_LUMINOSITY,
                                       to_=cnst.MAX_LUMINOSITY,
                                       resolution=-1,
                                       orient=HORIZONTAL)
        self.slider_luminosity.pack(anchor=CENTER)

        # Humidity slider
        self.humidity_lbl = Label(self.window, text="Humidity")
        self.humidity_lbl.pack(anchor=CENTER)
        self.humidity_var = DoubleVar(value=cnst.DEFAULT_HUMIDITY)
        self.slider_humidity = Scale(self.window,
                                     variable=self.humidity_var,
                                     from_=cnst.MIN_HUMIDITY,
                                     to_=cnst.MAX_HUMIDITY,
                                     resolution=-1,
                                     orient=HORIZONTAL)
        self.slider_humidity.pack(anchor=CENTER)

        # Noise slider
        self.noise_lbl = Label(self.window, text="Noise")
        self.noise_lbl.pack(anchor=CENTER)
        self.noise_var = DoubleVar(value=cnst.DEFAULT_NOISE)
        self.slider_noise = Scale(self.window,
                                  variable=self.noise_var,
                                  from_=cnst.MIN_NOISE,
                                  to_=cnst.MAX_NOISE,
                                  resolution=-1,
                                  orient=HORIZONTAL)
        self.slider_noise.pack(anchor=CENTER)

        # Air Quality slider
        self.airquality_lbl = Label(self.window, text="AirQuality")
        self.airquality_lbl.pack(anchor=CENTER)
        self.airquality_var = DoubleVar(value=cnst.DEFAULT_AIRQUALITY)
        self.slider_airquality = Scale(self.window,
                                       variable=self.airquality_var,
                                       from_=cnst.MIN_AIRQUALITY,
                                       to_=cnst.MAX_AIRQUALITY,
                                       resolution=-1,
                                       orient=HORIZONTAL)
        self.slider_airquality.pack(anchor=CENTER)

        # Button to publish the data
        self.submit_btn = Button(self.window,
                                 text="Simulate",
                                 command=self.publish)
        self.submit_btn.pack(anchor=CENTER)
Exemple #27
0
    def __init__(self):
        self.root = ThemedTk(theme="radiance")
        INIT_WIDTH, INIT_HEIGHT = self.root.winfo_screenwidth(
        ), self.root.winfo_screenheight()
        boldStyle = ttk.Style()
        boldStyle.configure("Bold.TButton", font=('Sans', '12', 'bold'))
        #icon_loc = os.path.join(os.getcwd(),ICON_NAME)
        #img = ImageTk.PhotoImage(master = self.root, file=icon_loc)
        #self.root.wm_iconbitmap(img)
        #self.root.ttk.call('wm', 'iconphoto', self.root._w, img)
        self.root.title("Form Labeller")
        self.root.maxsize(INIT_WIDTH, INIT_HEIGHT)
        self.supported_formats = SUPPORTED_FORMATS

        self.left_frame = Frame(self.root, width=BUTTON_WIDTH)
        self.top_frame1 = Frame(self.left_frame,
                                width=BUTTON_WIDTH,
                                height=int(INIT_HEIGHT / 2))
        self.top_frame = Frame(self.left_frame,
                               width=BUTTON_WIDTH,
                               height=INIT_HEIGHT - int(INIT_HEIGHT / 2))
        self.bottom_frame = Frame(self.root, width=INIT_WIDTH - BUTTON_WIDTH)

        self.load_image_directory_button = Button(self.top_frame1,
                                                  text='Open Folder',
                                                  command=self.load_directory,
                                                  width=int(BUTTON_WIDTH),
                                                  style="Bold.TButton")
        self.load_image_directory_button.grid(row=OPEN_FOLDER_ROW,
                                              columnspan=2,
                                              sticky=tk.W + tk.E)

        self.prev_img_button = Button(self.top_frame1,
                                      text='← Prev',
                                      command=self.previous_img,
                                      state=tk.DISABLED,
                                      width=int(BUTTON_WIDTH / 2),
                                      style="Bold.TButton")
        self.prev_img_button.grid(row=PREV_ROW, column=0, sticky=tk.W + tk.E)

        self.next_img_button = Button(self.top_frame1,
                                      text='Next → ',
                                      command=self.next_img,
                                      width=int(BUTTON_WIDTH / 2),
                                      style="Bold.TButton")
        self.next_img_button.grid(row=NEXT_COL, column=1, sticky=tk.W + tk.E)

        self.save_image_button = Button(self.top_frame1,
                                        text='Save ',
                                        command=self.saver,
                                        width=int(BUTTON_WIDTH),
                                        style="Bold.TButton")
        self.save_image_button.grid(row=SAVE_ROW,
                                    columnspan=2,
                                    sticky=tk.W + tk.E)

        self.delete_poly_button = Button(self.top_frame,
                                         text='Delete Selected',
                                         command=self.delete_selected,
                                         width=int(BUTTON_WIDTH),
                                         style="Bold.TButton")
        self.delete_poly_button.grid(row=DEL_SELECTED_ROW,
                                     columnspan=2,
                                     sticky=tk.W + tk.E)

        self.type_choices = TYPE_CHOICES
        self.variable = StringVar(self.top_frame)
        self.variable.set(self.type_choices[0])
        self.type_options = OptionMenu(self.top_frame,
                                       self.variable,
                                       *self.type_choices,
                                       style="Bold.TButton")
        self.type_options.config(width=int(BUTTON_WIDTH / 2))
        self.type_options.grid(row=DROP_DOWN_ROW, column=0)

        self.save_type_button = Button(self.top_frame,
                                       text='Save Type',
                                       command=self.save_type,
                                       width=int(BUTTON_WIDTH / 2),
                                       style="Bold.TButton")
        self.save_type_button.grid(row=SAVE_TYPE_ROW,
                                   column=1,
                                   sticky=tk.W + tk.E)

        self.deselect_all_button = Button(self.top_frame,
                                          text='Deselect All',
                                          command=self.deselect_all,
                                          width=BUTTON_WIDTH,
                                          style="Bold.TButton")
        self.deselect_all_button.grid(row=DESELECT_ALL_ROW,
                                      columnspan=2,
                                      sticky=tk.W + tk.E)

        self.select_all_button = Button(self.top_frame,
                                        text='Select All',
                                        command=self.select_all,
                                        width=BUTTON_WIDTH,
                                        style="Bold.TButton")
        self.select_all_button.grid(row=SELECT_ALL_ROW,
                                    columnspan=2,
                                    sticky=tk.W + tk.E)

        self.draw_poly_button = Button(self.top_frame,
                                       text='Draw Poly',
                                       command=self.draw_poly_func,
                                       width=BUTTON_WIDTH,
                                       style="Bold.TButton")
        self.draw_poly_button.grid(row=DRAW_POLY_ROW,
                                   columnspan=2,
                                   sticky=tk.W + tk.E)

        self.draw_rect_button = Button(self.top_frame,
                                       text='Draw Rectangle',
                                       command=self.draw_rect_func,
                                       width=BUTTON_WIDTH,
                                       style="Bold.TButton")
        self.draw_rect_button.grid(row=DRAW_RECT_ROW,
                                   columnspan=2,
                                   sticky=tk.W + tk.E)

        self.delete_all_button = Button(self.top_frame,
                                        text='Delete All',
                                        command=self.delete_all,
                                        width=BUTTON_WIDTH,
                                        style="Bold.TButton")

        self.save_poly_button = Button(self.top_frame,
                                       text='Save Poly',
                                       command=self.save_drawing,
                                       width=int(BUTTON_WIDTH / 2),
                                       style="Bold.TButton")

        self.discard_poly_button = Button(self.top_frame,
                                          text='Discard Poly',
                                          command=self.discard_drawing,
                                          width=int(BUTTON_WIDTH / 2),
                                          style="Bold.TButton")

        self.save_rect_button = Button(self.top_frame,
                                       text='Save Rect',
                                       command=self.save_drawing,
                                       width=int(BUTTON_WIDTH / 2),
                                       style="Bold.TButton")

        self.discard_rect_button = Button(self.top_frame,
                                          text='Discard Rect',
                                          command=self.discard_drawing,
                                          width=int(BUTTON_WIDTH / 2),
                                          style="Bold.TButton")

        self.show_type_button = Button(self.top_frame,
                                       text='Show Type',
                                       command=self.show_type,
                                       width=int(BUTTON_WIDTH / 2),
                                       style="Bold.TButton")
        self.show_type_button.grid(row=SHOW_TYPE_ROW,
                                   column=0,
                                   columnspan=1,
                                   sticky=tk.W + tk.E)

        self.hide_type_button = Button(self.top_frame,
                                       text='Hide Type',
                                       command=self.hide_type,
                                       width=int(BUTTON_WIDTH / 2),
                                       style="Bold.TButton")
        self.hide_type_button.grid(row=HIDE_TYPE_ROW,
                                   columnspan=1,
                                   column=1,
                                   sticky=tk.W + tk.E)

        self.make_tight_button = Button(self.top_frame,
                                        text='Make Tight',
                                        command=self.make_tight,
                                        width=int(BUTTON_WIDTH / 2),
                                        style="Bold.TButton")
        self.make_tight_button.grid(row=MAKE_TIGHT_ROW,
                                    columnspan=2,
                                    column=0,
                                    sticky=tk.W + tk.E)

        self.threshold_scale = Scale(self.top_frame,
                                     from_=0,
                                     to=255,
                                     orient=HORIZONTAL,
                                     width=int(BUTTON_WIDTH / 2),
                                     label="Binary Threshold")
        self.threshold_scale.set(128)
        self.threshold_scale.grid(row=THRESHOLD_ROW,
                                  columnspan=2,
                                  column=0,
                                  sticky=tk.W + tk.E)

        self.tight_save_button = Button(self.top_frame,
                                        text='Accept Tight',
                                        command=self.save_tight)

        self.tight_discard_button = Button(self.top_frame,
                                           text='Discard Tight',
                                           command=self.discard_tight)

        self.canvas = Canvas(self.bottom_frame,
                             width=INIT_WIDTH - BUTTON_WIDTH,
                             height=INIT_HEIGHT,
                             borderwidth=1)
        self.image_name = None
        #self.image_path = os.path.join('imgs','img1.jpg')
        self.image_dir = None
        self.images_in_dir = None
        self.curr_idx = None
        self.img_cnv = None
        #self.img_cnv = ImageOnCanvas(self.root,self.canvas,self.image_path)
        self.drawing_obj = None
        self.tight_box_obj = None

        self.left_frame.pack(side=tk.LEFT)
        self.top_frame1.pack(side=tk.TOP)
        self.top_frame.pack(side=tk.BOTTOM)
        self.bottom_frame.pack(side=tk.LEFT)
        self.canvas.pack()
        self.hide_buttons()
        self.load_image_directory_button.config(state="normal")
Exemple #28
0
def init():
    #setting variables to global scope that need to be accessed outside of init()
    global curve_smoothing_slider, horizontal_shift_slider, vertical_shift_slider, image_canvas, bounds_button, preview_button, export_button, baseline_choice, im, imload, peak_num_choice

    left_frame = Frame(root)
    left_frame.pack(side="left")

    middle_frame = Frame(root)
    middle_frame.pack(side="right")

    right_frame = Frame(root)
    right_frame.pack(side="right")

    sub_middle_frame = Frame(middle_frame)
    sub_middle_frame.pack(side="bottom", pady=(0, 10))

    #left side inputs
    Button(left_frame, text="Help", command=help_window).pack(anchor='nw',
                                                              padx=(10, 0),
                                                              pady=(10, 10))

    Button(left_frame, text="Select a file",
           command=select_file).pack(anchor='n', pady=(0, 15))

    Label(left_frame, text="Threshold and Crop", justify="center").pack()
    threshold_slider = Scale(left_frame,
                             orient="horizontal",
                             length=200,
                             from_=1.0,
                             to=30.0,
                             command=update_thresh)
    threshold_slider.pack(padx=20, pady=(0, 10))

    #button for selecting the region of interest (ROI), this ROI is then analyzed for the graph
    Button(left_frame, text="Select a ROI",
           command=find_roi).pack(pady=(0, 15))

    #slider for determining how much the curve is smoothed out (typically has very many oscillations and spikes)
    Label(left_frame, text="Curve Smoothing", justify="center", padx=20).pack()
    curve_smoothing_slider = Scale(left_frame,
                                   orient="horizontal",
                                   length=200,
                                   from_=0.0,
                                   to=30.0,
                                   command=update_smooth)
    curve_smoothing_slider.pack(padx=20, pady=(0, 20))
    curve_smoothing_slider['state'] = 'disable'

    #determines whether the baselining will happen from the lowest value (from both curves lowest val is zeroed) or midpoint (average value of both is zeroed and then lowest value brought to zero)
    baseline_choice = tkinter.IntVar()
    baseline_choice.set(1)
    modes = [("Midpoint", 101), ("Lowest Value", 102)]
    Label(left_frame, text="Baseline from:", justify="left", padx=20).pack()
    for mode, val in modes:
        Radiobutton(left_frame,
                    text=mode,
                    indicatoron=1,
                    command=update_baseline,
                    justify="left",
                    padx=20,
                    variable=baseline_choice,
                    value=val).pack(anchor='w')

    #a multiple choice field for how many peaks you want analyzed at the current moment
    peak_num_choice = tkinter.IntVar()
    peak_num_choice.set(1)
    modes = [("One Peak", 101), ("Two Peaks", 102)]
    Label(left_frame,
          text="How many peaks to compare:",
          justify="left",
          padx=20).pack(pady=(20, 0))
    for mode, val in modes:
        Radiobutton(left_frame,
                    text=mode,
                    indicatoron=1,
                    command=update_peaks,
                    justify="left",
                    padx=20,
                    variable=peak_num_choice,
                    value=val).pack(anchor='w')

    #bottom row inputs
    bounds_button = Button(left_frame,
                           text="Choose Bounds",
                           command=choose_peak_bounds)
    bounds_button.pack(side="left", padx=(15, 10), pady=(30, 10))
    bounds_button["state"] = "disable"

    #building the preview button, used to look at the current strip being analyzed
    preview_button = Button(left_frame, text="Preview", command=preview_graph)
    preview_button.pack(side="left", padx=(10, 10), pady=(30, 10))
    preview_button["state"] = "disable"

    #building the export button, disabled at first until you have data to export
    export_button = Button(left_frame, text="Export", command=save_graph)
    export_button.pack(side="left", padx=(10, 0), pady=(30, 10))
    export_button["state"] = "disable"

    #building the horizontal shift (used to shift one line left and right)
    Label(sub_middle_frame, text="Horizontal Shift").grid(column=0,
                                                          row=1,
                                                          padx=(0, 20))
    horizontal_shift_slider = Scale(sub_middle_frame,
                                    orient="horizontal",
                                    length=300,
                                    from_=-10.0,
                                    to=10.0,
                                    command=update_h_shift)
    horizontal_shift_slider.grid(column=0, row=0, padx=(0, 20))
    horizontal_shift_slider['state'] = 'disable'

    #building the vertical shift (shifts one line up and down)
    Label(sub_middle_frame, text="Vertical Shift").grid(column=1, row=1)
    vertical_shift_slider = Scale(sub_middle_frame,
                                  orient="horizontal",
                                  length=300,
                                  from_=-10.0,
                                  to=10.0,
                                  command=update_v_shift)
    vertical_shift_slider.grid(column=1, row=0)
    vertical_shift_slider['state'] = 'disable'

    #right side graph
    width, height = plot_disp_size
    image_canvas = Canvas(middle_frame, width=width, height=height)
    image_canvas.pack(padx=(20, 0), pady=(0, 0))

    #blanks canvas with a white frame, image_canvas is modified to add the graph onto screen each time
    im = ImageTk.PhotoImage(Image.new("RGB", plot_disp_size,
                                      (255, 255, 255)))  #PIL solution
    imload = image_canvas.create_image(0, 0, image=im, anchor='nw')
Exemple #29
0
    def __init__(self, parent, data, stepname):
        super().__init__(parent, data, stepname)

        lbl1 = Label(
            self,
            text=
            'Click on each scale at the point that best indicates your experience of the task'
        )
        lbl1.grid(row=1, column=1)

        lbl2 = Label(self, text="(1=extremely low,5=extremely high)")
        lbl2.grid(row=2, column=1)
        ###########################
        lbl3 = Label(
            self,
            text=
            'Mental demand: How much mental and perceptual activity was required?'
        )
        lbl3.grid(row=3, column=1)
        mentalscale = Scale(self,
                            from_=1,
                            to=10,
                            length=200,
                            tickinterval=1,
                            orient=HORIZONTAL,
                            command=self.updatemental)
        mentalscale.set(5)
        mentalscale.grid(row=3, column=2)

        self.data[self.stepname]["mental demand weight"] = mentalscale.get()
        ###########
        lbl4 = Label(
            self,
            text='Physical demand: How much physical activity was required?')
        lbl4.grid(row=4, column=1)
        physicalscale = Scale(self,
                              from_=1,
                              to=10,
                              length=200,
                              tickinterval=1,
                              orient=HORIZONTAL,
                              command=self.updatephysical)
        physicalscale.set(5)
        physicalscale.grid(row=4, column=2)

        self.data[
            self.stepname]["physical demand weight"] = physicalscale.get()
        ###########
        ###########
        lbl5 = Label(
            self,
            text=
            'Temporal demand: How much time pressure did you feel due to the rate of pace at which the tasks or task elements occurred?'
        )
        lbl5.grid(row=5, column=1)
        temporalscale = Scale(self,
                              from_=1,
                              to=10,
                              length=200,
                              tickinterval=1,
                              orient=HORIZONTAL,
                              command=self.updatetemporal)
        temporalscale.set(5)
        temporalscale.grid(row=5, column=2)

        self.data[
            self.stepname]["temporal demand weight"] = temporalscale.get()
        ###########
        ###########
        lbl6 = Label(
            self,
            text=
            'Performance: How successful do you think you were in accomplishing the goals?'
        )
        lbl6.grid(row=6, column=1)
        perforscale = Scale(self,
                            from_=1,
                            to=10,
                            length=200,
                            tickinterval=1,
                            orient=HORIZONTAL,
                            command=self.updateperformance)
        perforscale.set(5)
        perforscale.grid(row=6, column=2)

        self.data[self.stepname]["performance weight"] = perforscale.get()
        ###########
        ###########
        lbl7 = Label(
            self,
            text=
            'Effort: How hard did you have to work (mentally and physically) to accomplish your level of performance?'
        )
        lbl7.grid(row=7, column=1)
        effortscale = Scale(self,
                            from_=1,
                            to=10,
                            length=200,
                            tickinterval=1,
                            orient=HORIZONTAL,
                            command=self.updateeffort)
        effortscale.set(5)
        effortscale.grid(row=7, column=2)

        self.data[self.stepname]["effort weight"] = effortscale.get()
        ###########
        ###########
        lbl8 = Label(
            self,
            text=
            'Frustration: How insecure, discouraged, irritated, stressed,and annoyed were you?'
        )
        lbl8.grid(row=8, column=1)
        frustrationscale = Scale(self,
                                 from_=1,
                                 to=10,
                                 length=200,
                                 tickinterval=1,
                                 orient=HORIZONTAL,
                                 command=self.updatefrustration)
        frustrationscale.set(5)
        frustrationscale.grid(row=8, column=2)

        self.data[self.stepname]["frustration weight"] = frustrationscale.get()
        ###########

        self.data[self.stepname]["choose mental times"] = 0
        self.data[self.stepname]["choose physical times"] = 0
        self.data[self.stepname]["choose temporal times"] = 0
        self.data[self.stepname]["choose performance times"] = 0
        self.data[self.stepname]["choose effort times"] = 0
        self.data[self.stepname]["choose frustration times"] = 0
Exemple #30
0
    def __init__(self, master=None):
        """
        Constructor
        """
        Frame.__init__(self, master, name='pvApplication',
                       bg='black', padx=5, pady=5)
        # set black background, pad sides with 15 points, top/bottom 5 points
        # fill=BOTH fills in padding with background color
        # w/o fill=BOTH padding is default color
        # side=TOP is the default
        self.pack(fill=BOTH)
        master.resizable(False, False)  # not resizable in x or y
        master.title(PVAPP_TXT)  # set title bar of master (a.k.a. root)
        master.protocol("WM_DELETE_WINDOW", self._quit)  # close window to quit

        self.validationConstants = self.readJSON('validationConstants')
        self.messagetext = self.readJSON('messagetext' + '.' + LANGUAGE)
        MAX_STRINGS = self.validationConstants["pvapplication"]["numStrs"]
        MAX_MODULES = self.validationConstants["pvapplication"]["numMods"]
        MAX_SUNS = self.validationConstants["pvapplication"]["sysEe"]
        CAPTION_FONT = nametofont('TkCaptionFont')  # font for titles

        # PVsystem
        pvSys = self.pvSys = PVsystem()

        # variables
        numStrs = self.numStrs = IntVar(self, NUMBERSTRS, 'numStrs')
        numMods = self.numMods = IntVar(self, NUMBERMODS, 'numMods')
        numCells = self.numCells = IntVar(self, NUMBERCELLS, 'numCells')
        txtIsys = self.txtIsys = DoubleVar(self, name='txtIsys')
        txtVsys = self.txtVsys = DoubleVar(self, name='txtVsys')
        txtPsys = self.txtPsys = DoubleVar(self, name='txtPsys')
        txtImp = self.txtImp = StringVar(self, name='txtImp')
        txtVmp = self.txtVmp = StringVar(self, name='txtVmp')
        txtPmp = self.txtPmp = StringVar(self, name='txtPmp')
        txtIsc = self.txtIsc = StringVar(self, name='txtIsc')
        txtVoc = self.txtVoc = StringVar(self, name='txtVoc')
        txtFF = self.txtFF = StringVar(self, name='txtFF')
        txtEff = self.txtEff = StringVar(self, name='txtEff')
        sysEe = self.sysEe = DoubleVar(self, 1, name='sysEe')
        txtImp.set("{:7.3f}".format(self.pvSys.Imp))  # [A]
        txtVmp.set("{:7.3f}".format(self.pvSys.Vmp))  # [V]
        txtPmp.set("{:7.3f}".format(self.pvSys.Pmp / 1000))  # [kW]
        txtIsc.set("{:7.3f}".format(self.pvSys.Isc))  # [A]
        txtVoc.set("{:7.3f}".format(self.pvSys.Voc))  # [V]
        txtFF.set("{:7.3f}".format(self.pvSys.FF * 100))  # [%]
        txtEff.set("{:7.3f}".format(self.pvSys.eff * 100))  # [%]
        self.msgtext = StringVar(self, READY_MSG, 'msgtext')

        # must register vcmd and invcmd as Tcl functions
        vcmd = (self.register(self.validateWidget),
                '%d', '%i', '%P', '%s', '%S', '%v', '%V', '%W')
        invcmd = (self.register(self.invalidWidget),
                '%d', '%i', '%P', '%s', '%S', '%v', '%V', '%W')

        # SP logo
        # convert image to tk-compatible format (.gif, .pgm, or .ppm)
        self.SPlogo = ImageTk.PhotoImage(Image.open(SPLOGO))
        # bg='black' fills extra space with black
        # anchor=W aligns photoimage on left side, NW is no different
        # padding is ignored by images, use borderwidth
        Label(self, image=self.SPlogo, borderwidth=5, bg='black',
              anchor=W).pack(fill=BOTH)
        # fill=BOTH expands the photoimage to fill parent frame
        # w/o fill=BOTH photoimage is centered in frame even with anchor=W
        # Intro text
        introText = 'PVmismatch calculates I-V and P-V curves as well as the'
        introText += ' max power point (MPP) for any sized system.\nSet the'
        introText += ' number of strings in the system, the number of modules'
        introText += ' per string and the number cells per module.'
        # anchor=W aligns message on left side, NW is no different
        # fg='white' sets text color to white, default is black, so it doesn't
        #   show on black background
        # default aspect is 150%, about as wide as high, or set width>0
        Message(self, text=introText, width=750, bg='black', fg='white',
                anchor=W).pack(fill=BOTH)
        # fill=BOTH expands the message to fill parent frame
        # w/o fill=BOTH message is centered in frame even with anchor=W

        # PVsystem frame
        pvSysFrame = self.pvSysFrame = Frame(master, name='pvSysFrame')
        # fill=BOTH keeps widgets in frame on left when window is resized
        pvSysFrame.pack(fill=BOTH)

        # PVsystem matplotlib figure canvas
        self.pvSysPlotFrame = Frame(pvSysFrame, name='pvSysPlotFrame')
        pvSysPlotFrame = self.pvSysPlotFrame
        pvSysPlotFrame.pack(side=RIGHT)
        pvSysPlot = self.pvSysPlot = pvSys.plotSys()
        self.pvSysFigCanvas = FigureCanvasTkAgg(pvSysPlot,
                                                master=pvSysPlotFrame,
                                                resize_callback=None)
        pvSysFigCanvas = self.pvSysFigCanvas
        pvSysFigCanvas.get_tk_widget()._name = 'pvSysFigCanvas'  # IGNORE:W0212
        pvSysFigCanvas.show()
        # NB: FigureCanvasTkAgg._tkcanvas is FigureCanvasTkAgg.get_tk_widget()
        pvSysFigCanvas.get_tk_widget().pack(fill=BOTH)
        pvSysToolbar = NavigationToolbar2TkAgg(pvSysFigCanvas, pvSysPlotFrame)
        pvSysToolbar.update()
        pvSysToolbar.pack(fill=BOTH)

        # PVsystem data frame
        pvSysDataFrame = self.pvSysDataFrame = Frame(pvSysFrame,
                                                     name='pvSysDataFrame')
        pvSysDataFrame.pack(side=LEFT)
        _row = 0
        Label(pvSysDataFrame,
              text='PVsystem', font=CAPTION_FONT).grid(row=_row, columnspan=3,
                                                     sticky=W)

        # number of strings
        _row += 1  # row 1
        Label(pvSysDataFrame,
              text='Number of Strings').grid(row=_row, columnspan=2, sticky=W)
        # use textVar to set number of strings from LOAD, RESET or default
        spinboxCnf = {'name': 'numStrSpinbox', 'from_': 1, 'to': MAX_STRINGS,
                      'textvariable': numStrs, 'width': 5, 'validate': 'all',
                      'validatecommand': vcmd, 'invalidcommand': invcmd,
                      'command': self.updatePVsys}
        self.numStrSpinbox = Spinbox(pvSysDataFrame, cnf=spinboxCnf)
        self.numStrSpinbox.bind("<Return>", self.keyBinding)
        self.numStrSpinbox.grid(row=_row, column=2)

        # number of modules
        _row += 1  # row 2
        Label(pvSysDataFrame,
              text='Number of Modules').grid(row=_row, columnspan=2, sticky=W)
        # number of modules spinbox
        spinboxCnf = {'name': 'numModSpinbox', 'from_': 1, 'to': MAX_MODULES,
                      'textvariable': numMods, 'width': 5, 'validate': 'all',
                      'validatecommand': vcmd, 'invalidcommand': invcmd,
                      'command': self.updatePVsys}
        self.numModSpinbox = Spinbox(pvSysDataFrame, cnf=spinboxCnf)
        self.numModSpinbox.bind("<Return>", self.keyBinding)
        self.numModSpinbox.grid(row=_row, column=2)

        # number of cells
        _row += 1  # row 3
        Label(pvSysDataFrame,
              text='Number of Cells').grid(row=_row, columnspan=2, sticky=W)
        # http://www.logilab.org/card/pylintfeatures#basic-checker
        # pylint: disable = W0142
        self.numCellOption = OptionMenu(pvSysDataFrame, numCells, *MODSIZES,
                                        command=self.updatePVsys)
        # pylint: enable = W0142
        self.numCellOption._name = 'numCellOption'  # IGNORE:W0212
        self.numCellOption.grid(row=_row, column=2)

        # Advanced Configuration button
        _row += 1  # row 14
        buttonCnf = {'name': 'advCnfButton', 'text': 'Advanced Configuration',
                     'command': self.startAdvCnf_tk}
        pvStrButton = self.pvStrButton = Button(pvSysDataFrame, buttonCnf)
        pvStrButton.grid(row=_row, columnspan=3, sticky=(E + W))

        # slider to explore IV curves
        _row += 1  # row 4, 5 & 6
        self.pvSysScale = Scale(pvSysDataFrame, orient=HORIZONTAL,
                                label='I-V Curve', font=CAPTION_FONT,
                                command=self.getIV, showvalue=False,
                                from_=0, to=(pvSys.pvconst.npts - 1))
        self.pvSysScale.grid(row=_row, columnspan=3, sticky=(E + W))
        # Isys
        Label(pvSysDataFrame, text='Isys [A]').grid(row=(_row + 1))
        self.pvIsys = Entry(pvSysDataFrame, textvariable=txtIsys,
                            width=7)
        self.pvIsys.grid(row=(_row + 2))
        # Vsys
        Label(pvSysDataFrame, text='Vsys [V]').grid(row=(_row + 1), column=1)
        self.pvVsys = Entry(pvSysDataFrame, textvariable=txtVsys,
                            width=7)
        self.pvVsys.grid(row=(_row + 2), column=1)
        # Psys
        Label(pvSysDataFrame, text='Psys [kW]').grid(row=(_row + 1), column=2)
        self.pvPsys = Entry(pvSysDataFrame, textvariable=txtPsys,
                            width=7)
        self.pvPsys.grid(row=(_row + 2), column=2)

        # Imp, Vmp & Pmp
        _row += 3  # row 7, 8, 9, 10, 11 & 12
        Label(pvSysDataFrame,
              text='I-V Characteristics',
              font=CAPTION_FONT).grid(row=_row, columnspan=3, sticky=W)
        Label(pvSysDataFrame, text='Imp [A]').grid(row=(_row + 1))
        Label(pvSysDataFrame, text='Vmp [V]').grid(row=(_row + 1), column=1)
        Label(pvSysDataFrame, text='Pmp [kW]').grid(row=(_row + 1), column=2)
        self.pvImp = Entry(pvSysDataFrame, textvariable=txtImp,
                            width=7, state='readonly')
        self.pvImp.grid(row=(_row + 2))
        self.pvVmp = Entry(pvSysDataFrame, textvariable=txtVmp,
                            width=7, state='readonly')
        self.pvVmp.grid(row=(_row + 2), column=1)
        self.pvPmp = Entry(pvSysDataFrame, textvariable=txtPmp,
                            width=7, state='readonly')
        self.pvPmp.grid(row=(_row + 2), column=2)
        # Isc, Voc & FF
        Label(pvSysDataFrame, text='Isc [A]').grid(row=(_row + 3))
        Label(pvSysDataFrame, text='Voc [V]').grid(row=(_row + 3), column=1)
        Label(pvSysDataFrame, text='FF [%]').grid(row=(_row + 3), column=2)
        self.pvIsc = Entry(pvSysDataFrame, textvariable=txtIsc,
                            width=7, state='readonly')
        self.pvIsc.grid(row=(_row + 4))
        self.pvVoc = Entry(pvSysDataFrame, textvariable=txtVoc,
                            width=7, state='readonly')
        self.pvVoc.grid(row=(_row + 4), column=1)
        self.pvFF = Entry(pvSysDataFrame, textvariable=txtFF,
                            width=7, state='readonly')
        self.pvFF.grid(row=(_row + 4), column=2)
        Label(pvSysDataFrame, text='Efficiency [%]').grid(row=(_row + 5),
                                                          columnspan=2)
        self.pvEff = Entry(pvSysDataFrame, textvariable=txtEff,
                            width=7, state='readonly')
        self.pvEff.grid(row=(_row + 5), column=2)

        # set suns
        _row += 6  # row 13
        Label(pvSysDataFrame, text='Irradiance [suns]',
              font=CAPTION_FONT).grid(row=_row, columnspan=2, sticky=W)
        # number of modules spinbox
        spinboxCnf = {'name': 'sunSpinbox', 'from_': 0.2, 'to': MAX_SUNS,
                      'increment': 0.1, 'textvariable': sysEe, 'width': 5,
                      'validate': 'all', 'validatecommand': vcmd,
                      'invalidcommand': invcmd, 'command': self.updatePVsys}
        self.sunSpinbox = Spinbox(pvSysDataFrame, cnf=spinboxCnf)
        self.sunSpinbox.bind("<Return>", self.keyBinding)
        self.sunSpinbox.grid(row=_row, column=2)

        # PVstring button
        _row += 1  # row 14
        buttonCnf = {'name': 'pvStrButton', 'text': 'PVstring',
                     'command': self.startPVstring_tk}
        pvStrButton = self.pvStrButton = Button(pvSysDataFrame, buttonCnf)
        pvStrButton.grid(row=_row, columnspan=3, sticky=(E + W))

        # toolbar
        toolbar = self.toolbarframe = Frame(master, name='toolbar')
        toolbar.pack(fill=BOTH)
        self.QUIT = Button(toolbar, text='Quit', command=self._quit)
        self.QUIT.pack(side=RIGHT)
        self.SAVE = Button(toolbar, text='Save', command=self._save)
        self.SAVE.pack(side=RIGHT)
        self.LOAD = Button(toolbar, text='Load', command=self._load)
        self.LOAD.pack(side=RIGHT)
        self.RESET = Button(toolbar, text='Reset', command=self._reset)
        self.RESET.pack(side=RIGHT)
        self.UPDATE = Button(toolbar, text='Update', command=self._update)
        self.UPDATE.pack(side=RIGHT)
        self.HELP = Button(toolbar, text='Help', command=self._help)
        self.HELP.pack(side=RIGHT)
        self.MESSAGE = Message(toolbar, textvariable=self.msgtext,
                               width=500, fg='red')
        self.MESSAGE.pack(side=LEFT)