Beispiel #1
0
    def create_themed_tab(self):
        """
        Create a return a frame containing themed widgets
        """
        tab = ttk.Frame(self.nb, padding=10)
        colors = [
            'Primary', 'Secondary', 'Success', 'Info', 'Warning', 'Danger'
        ]

        header_frame = ttk.Frame(tab, padding=10)
        header = ttk.Label(header_frame,
                           textvariable=self.theme_name,
                           font='-size 30')
        header.pack(side='left', fill='x', pady=5)
        header_frame.pack(fill='x')

        # Menubutton (select a theme)
        mb = ttk.Menubutton(header_frame, text='Select a theme to preview')
        mb.pack(side='right', fill='x', pady=5)
        mb.menu = tkinter.Menu(mb)
        mb['menu'] = mb.menu
        for t in self.theme_names():
            mb.menu.add_command(
                label=t,
                command=lambda theme_name=t: self.change_theme(theme_name))

        # Separator
        ttk.Separator(tab, orient='horizontal').pack(fill='x',
                                                     padx=10,
                                                     pady=(10, 15))

        # Paned Window
        pw = ttk.PanedWindow(tab)
        pw.pack(fill='x')

        # Available Colors
        color_frame = ttk.Labelframe(pw,
                                     text='Colors available in this theme',
                                     padding=15)
        for color in colors:
            btn = ttk.Button(color_frame,
                             text=color.title(),
                             style=f'{color.lower()}.TButton')
            btn.pack(side='left', fill='x', expand='yes', padx=2, pady=5)
        # color_frame.pack(side='top', fill='x')
        pw.add(color_frame)

        # This outer frame will provide an internal buffer between the widget images and the window pane,
        # there is no other way to add internal padding
        widget_outer_frame = ttk.Frame(pw, padding=(0, 10))
        pw.add(widget_outer_frame)

        # Widget images
        widget_frame = ttk.Frame(widget_outer_frame, padding=10)
        widget_frame.pack(fill='x')

        # Label
        ttk.Label(widget_frame, text='This is a label').pack(side='top',
                                                             fill='x')

        entry_spin_frame = ttk.Frame(widget_frame)
        entry_spin_frame.pack(fill='x', pady=5)

        # Entry
        entry = ttk.Entry(entry_spin_frame)
        entry.insert('end', 'An entry field with focus ring')
        entry.pack(side='left', fill='x', expand='yes')

        # Spinbox
        spinner_options = [
            'Spinner option 1', 'Spinner option 2', 'Spinner option 3'
        ]
        spinner = ttk.Spinbox(entry_spin_frame, values=spinner_options)
        spinner.set('Spinner option 1')
        spinner.pack(side='right', fill='x', expand='yes', padx=(5, 0))

        # Button
        btn_frame = ttk.Frame(widget_frame)
        b1 = ttk.Button(btn_frame, text='Solid Button')
        b1.pack(side='left', fill='x', expand='yes', padx=(0, 5))

        b2 = ttk.Button(btn_frame,
                        text='Outline Button',
                        style='Outline.TButton')
        b2.pack(side='left', fill='x', expand='yes')
        btn_frame.pack(fill='x', pady=5)

        # Option Menu
        om_var = tkinter.StringVar()
        om = ttk.OptionMenu(btn_frame, om_var, 'Option Menu',
                            *self.theme_names())
        om.pack(side='right', fill='x', padx=(5, 0), pady=5)

        # Labelframe
        options_frame = ttk.Frame(widget_frame, padding=(0, 10))
        options_frame.pack(fill='x', pady=5)

        # Radio
        r1 = ttk.Radiobutton(options_frame, value=1, text='Radio one')
        r1.pack(side='left', fill='x', expand='yes')
        r1.invoke()
        r2 = ttk.Radiobutton(options_frame, value=2, text='Radio two')
        r2.pack(side='left', fill='x', expand='yes')

        # Checkbutton
        cb1 = ttk.Checkbutton(options_frame, text='Option 1')
        cb1.pack(side='left', fill='x', expand='yes')
        cb1.invoke()

        cb2 = ttk.Checkbutton(options_frame, text='Option 2')
        cb2.pack(side='left', fill='x', expand='yes')
        cb2.invoke()
        cb2.invoke()

        # Treeview
        tv = ttk.Treeview(widget_frame, height=3)
        tv.pack(fill='x', pady=5)
        tv.heading('#0', text='Example heading')
        tv.insert('', 'end', 'example1', text='Example 1')
        tv.insert('', 'end', 'example2', text='Example 2')
        tv.insert('example2', 'end', text='Example 2 Child 1')
        tv.insert('example2', 'end', text='Example 2 Child 2')
        tv.selection_set('example1')

        # Scale
        scale_frame = ttk.Frame(widget_frame)
        self.scale_var = tkinter.IntVar(value=25)
        scale = ttk.Scale(scale_frame,
                          variable=self.scale_var,
                          from_=1,
                          to=100)
        scale.pack(side='left', fill='x', expand='yes', padx=(0, 2))
        scale_frame.pack(side='top', fill='x', pady=5)
        entry = ttk.Entry(scale_frame, textvariable=self.scale_var, width=4)
        entry.pack(side='right')

        # Combobox
        cbo = ttk.Combobox(widget_frame, values=colors)
        cbo.current(0)
        cbo.pack(fill='x', pady=5)

        # Progressbar
        ttk.Progressbar(widget_frame, variable=self.scale_var).pack(fill='x',
                                                                    pady=10)
        return tab
Beispiel #2
0
mainframe = ttk.Frame(root, padding="5 10")
mainframe.grid(column=0, row=0, columnspan=3, rowspan=3, sticky=(N, W, E, S))
mainframe.columnconfigure(0, weight=1)
mainframe.rowconfigure(0, weight=1)

planet_l= ['Sandwich', 'Pizza', 'Chicken Nuggets', 'Chicken', 'Tofu', 'Gluten/Soy/Shellfish Free Clam Chowder']#list of planets
dayy = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']

drinky = StringVar()
planet = StringVar(value=planet_l)
payment = StringVar()
spin_day = StringVar()
employeeID = StringVar()
price = StringVar()

soda = ttk.Radiobutton(mainframe, text='Soda', variable=drinky, value='Soda', command=buy_drink)
soda.grid(column=1, row=2, sticky=(W,E))
tea = ttk.Radiobutton(mainframe, text='Tea', variable=drinky, value='Tea', command=buy_drink)
tea.grid(column=1, row=3, sticky=(W,E))
milk = ttk.Radiobutton(mainframe, text='Milk', variable=drinky, value='Milk', command=buy_drink)
milk.grid(column=1, row=4, sticky=(W,E))
juice = ttk.Radiobutton(mainframe, text='Juice', variable=drinky, value='Juice', command=buy_drink)
juice.grid(column=1, row=5, sticky=(W,E))
water = ttk.Radiobutton(mainframe, text='Bottled Water', variable=drinky, value='Bottled Water', command=buy_drink)
water.grid(column=1, row=6, sticky=(W,E))

box1 = Listbox(mainframe, height=6, width=25,listvariable=planet, exportselection=0) #planets
box1.grid(column = 1, row = 8, columnspan=2,sticky = (N,W,E,S))
#creates listbox which has all the planets. listvariable acceses the planets and adds to listbox
box1.bind('<<ListboxSelect>>',buy_food)
Beispiel #3
0
    def __init__(self, master, config, app):
        for attr in ("master", "config", "app"):
            setattr(self, attr, locals()[attr])

        setupTranslationHelper(config)

        # These are used to break observer loops with widget A being modified,
        # causing an update of widget B, itself causing an update of widget
        # A...
        self.dontUpdateFlightDuration = self.dontUpdateGroundSpeed = False

        self.top = tk.Toplevel(self.master)
        self.top.transient(self.master)
        # Uncomment this to disallow interacting with other windows
        # self.top.grab_set()
        self.top.title(_('GPS Tool'))
        # Currently, hiding is a better choice than destroying, because memory
        # occupation doesn't increase when the dialog is shown again after
        # being hidden.
        self.top.protocol("WM_DELETE_WINDOW", self.hide)
        self.top.bind('<Escape>', self.hide)

        panedWindow = ttk.PanedWindow(self.top, orient="vertical")
        panedWindow.grid(row=0, column=0, sticky="nsew")
        self.top.grid_rowconfigure(0, weight=100)
        self.top.grid_columnconfigure(0, weight=100)

        # Padding: all or (left, top, right, bottom)
        #
        # Padding outside the LabelFrame widgets
        outerFramesPadding = "12p"
        # Half of the vertical separation between two “adjacent” LabelFrame
        # widgets
        outerFramesHalfSep = "0p"
        # Padding inside the LabelFrame widgets
        labelFramesPadding = "15p"

        # *********************************************************************
        # *                   The airports selection frame                    *
        # *********************************************************************

        # Frame providing padding around the “Airport A” and “Airport B”
        # LabelFrame widgets
        airportsOuterFrame = ttk.Frame(
            panedWindow,
            padding=(outerFramesPadding, outerFramesPadding,
                     outerFramesPadding, outerFramesHalfSep))
        panedWindow.add(airportsOuterFrame, weight=100)

        # Airport A
        self.icaoVarA = tk.StringVar()
        airportChooserA, searchEntryA, searchClearButtonA, airportSearchTreeA \
            = self.airportChooserLabelFrame(
                container=airportsOuterFrame, row=0, column=0,
                columnWeight=100, labelFramesPadding=labelFramesPadding,
                frameTitle=_("Airport A"), icaoVar=self.icaoVarA)

        spacer = ttk.Frame(airportsOuterFrame)
        spacer.grid(row=0, column=1, sticky="nsew")
        airportsOuterFrame.grid_columnconfigure(1, minsize="12p", weight=10)

        # Airport B
        self.icaoVarB = tk.StringVar()
        airportChooserB, searchEntryB, searchClearButtonB, airportSearchTreeB \
            = self.airportChooserLabelFrame(
                container=airportsOuterFrame, row=0, column=2,
                columnWeight=100, labelFramesPadding=labelFramesPadding,
                frameTitle=_("Airport B"), icaoVar=self.icaoVarB)

        # Frame providing padding around the “Calculations” LabelFrame
        calcOuterFrame = ttk.Frame(
            panedWindow,
            padding=(outerFramesPadding, outerFramesHalfSep,
                     outerFramesPadding, outerFramesPadding))
        panedWindow.add(calcOuterFrame, weight=100)

        calcFrame = ttk.LabelFrame(calcOuterFrame,
                                   text=_("Calculations"),
                                   padding=labelFramesPadding)
        calcFrame.grid(row=0, column=0, sticky="nsew")
        calcOuterFrame.grid_rowconfigure(0, weight=100)
        calcOuterFrame.grid_columnconfigure(0, weight=100)

        # *********************************************************************
        # *   Left frame of Calculations, containing parameters (units...)    *
        # *********************************************************************
        calcLeftFrame = ttk.Frame(calcFrame)
        calcLeftFrame.grid(row=0, column=0, sticky="nsw")
        calcFrame.grid_rowconfigure(0, weight=100)
        calcFrame.grid_columnconfigure(0, weight=100, pad="30p")

        # Length unit (nautical miles or kilometers)
        leftSubframe1 = ttk.Frame(calcLeftFrame)
        leftSubframe1.grid(row=0, column=0, sticky="nsw")

        lengthUnitLabel = ttk.Label(leftSubframe1, text=_("Distance in"))
        lengthUnitLabel.grid(row=0, column=0, sticky="w")
        leftSubframe1.grid_columnconfigure(0, weight=100)

        self.lengthUnit = tk.StringVar()
        self.lengthUnit.set("nautical mile")
        nautMilesButton = ttk.Radiobutton(leftSubframe1,
                                          variable=self.lengthUnit,
                                          text=_("nautical miles"),
                                          value="nautical mile",
                                          padding=("10p", 0, "10p", 0))
        nautMilesButton.grid(row=0, column=1, sticky="w")
        leftSubframe1.grid_rowconfigure(0, pad="5p")
        kilometersButton = ttk.Radiobutton(leftSubframe1,
                                           variable=self.lengthUnit,
                                           text=_("kilometers"),
                                           value="kilometer",
                                           padding=("10p", 0, "10p", 0))
        kilometersButton.grid(row=1, column=1, sticky="w")

        leftSpacerHeight = "20p"
        leftSpacer = ttk.Frame(calcLeftFrame)
        leftSpacer.grid(row=1, column=0, sticky="nsew")
        calcLeftFrame.grid_rowconfigure(1,
                                        minsize=leftSpacerHeight,
                                        weight=100)

        # Magnetic or true bearings
        leftSubframe2 = ttk.Frame(calcLeftFrame)
        leftSubframe2.grid(row=2, column=0, sticky="nsw")

        bearingsTypeLabel = ttk.Label(leftSubframe2, text=_("Bearings"))
        bearingsTypeLabel.grid(row=0, column=0, sticky="w")
        leftSubframe2.grid_columnconfigure(0, weight=100)

        self.bearingsType = tk.StringVar()
        magBearingsButton = ttk.Radiobutton(leftSubframe2,
                                            variable=self.bearingsType,
                                            text=pgettext(
                                                "Bearings", "magnetic"),
                                            value="magnetic",
                                            padding=("10p", 0, "10p", 0))
        magBearingsButton.grid(row=0, column=1, sticky="w")
        leftSubframe2.grid_rowconfigure(0, pad="5p")
        trueBearingsButton = ttk.Radiobutton(leftSubframe2,
                                             variable=self.bearingsType,
                                             text=pgettext("Bearings", "true"),
                                             value="true",
                                             padding=("10p", 0, "10p", 0))
        trueBearingsButton.grid(row=1, column=1, sticky="w")

        if magField is not None:
            self.bearingsType.set("magnetic")
        else:
            self.bearingsType.set("true")
            magBearingsButton.state(["disabled"])
            ToolTip(bearingsTypeLabel,
                    common_transl.magneticFieldTooltipText,
                    autowrap=True)

        leftSpacer = ttk.Frame(calcLeftFrame)
        leftSpacer.grid(row=3, column=0, sticky="nsew")
        calcLeftFrame.grid_rowconfigure(3,
                                        minsize=leftSpacerHeight,
                                        weight=100)

        # Speed unit (knots or kilometers per hour)
        leftSubframe3 = ttk.Frame(calcLeftFrame)
        leftSubframe3.grid(row=4, column=0, sticky="nsw")

        speedUnitLabel = ttk.Label(leftSubframe3, text=_("Speed in"))
        speedUnitLabel.grid(row=0, column=0, sticky="w")
        leftSubframe3.grid_columnconfigure(0, weight=100)

        self.speedUnit = tk.StringVar()
        self.speedUnit.set("knot")
        knotsButton = ttk.Radiobutton(leftSubframe3,
                                      variable=self.speedUnit,
                                      text=_("knots"),
                                      value="knot",
                                      padding=("10p", 0, "10p", 0))
        knotsButton.grid(row=0, column=1, sticky="w")
        leftSubframe3.grid_rowconfigure(0, pad="5p")
        kmhButton = ttk.Radiobutton(leftSubframe3,
                                    variable=self.speedUnit,
                                    text=_("km/h"),
                                    value="km/h",
                                    padding=("10p", 0, "10p", 0))
        kmhButton.grid(row=1, column=1, sticky="w")

        spacer = ttk.Frame(calcLeftFrame)
        spacer.grid(row=5, column=0, sticky="nsew")
        calcLeftFrame.grid_rowconfigure(5,
                                        minsize=leftSpacerHeight,
                                        weight=100)

        # Calculation method (Vincenty or Karney)
        leftSubframe4 = ttk.Frame(calcLeftFrame)
        leftSubframe4.grid(row=6, column=0, sticky="nsw")

        calcMethodLabel = ttk.Label(leftSubframe4,
                                    text=_("Calculation method"))
        calcMethodLabel.grid(row=0, column=0, sticky="w")

        self.calcMethodVar = tk.StringVar()
        karneyMethodRadioButton = ttk.Radiobutton(leftSubframe4,
                                                  variable=self.calcMethodVar,
                                                  text=_("Karney"),
                                                  value="karneyInverse",
                                                  padding=("10p", 0, "10p", 0))
        karneyMethodRadioButton.grid(row=0, column=1, sticky="w")
        vincentyMethodRadioButton = ttk.Radiobutton(
            leftSubframe4,
            variable=self.calcMethodVar,
            text=_("Vincenty et al."),
            value="vincentyInverseWithFallback",
            padding=("10p", 0, "10p", 0))
        vincentyMethodRadioButton.grid(row=1, column=1, sticky="w")

        if self.geodCalc.karneyMethodAvailable():
            self.calcMethodVar.set("karneyInverse")
        else:
            self.calcMethodVar.set("vincentyInverseWithFallback")
            karneyMethodRadioButton.state(["disabled"])

        # Tooltip for the calculation method
        ToolTip(calcMethodLabel,
                common_transl.geodCalcMethodTooltipText(self.geodCalc),
                autowrap=True)

        # *********************************************************************
        # *        Right frame of Calculations, containing the results        *
        # *********************************************************************
        calcRightFrame = ttk.Frame(calcFrame)
        calcRightFrame.grid(row=0, column=1, sticky="nw")
        calcFrame.grid_rowconfigure(0, weight=100)
        calcFrame.grid_columnconfigure(1, weight=200)

        # Distance between the two airports
        distanceFrame = ttk.Frame(calcRightFrame)
        distanceFrame.grid(row=0, column=0, sticky="new")
        calcRightFrame.grid_rowconfigure(0, weight=0)
        calcRightFrame.grid_columnconfigure(0, weight=100)

        distanceLabel = ttk.Label(distanceFrame,
                                  text=_("Distance between A and B: "))
        distanceLabel.grid(row=0, column=0, sticky="w")
        distanceFrame.grid_rowconfigure(0, weight=100)

        self.distanceVar = tk.StringVar()
        distanceValueLabel = ttk.Label(distanceFrame,
                                       textvariable=self.distanceVar)
        distanceValueLabel.grid(row=0, column=1, sticky="w")

        self.distanceUnitLabelVar = tk.StringVar()
        distanceUnitLabel = ttk.Label(distanceFrame,
                                      textvariable=self.distanceUnitLabelVar)
        distanceUnitLabel.grid(row=0, column=2, sticky="w")

        rightSpacerHeight = "20p"
        spacer = ttk.Frame(calcRightFrame)
        spacer.grid(row=1, column=0, sticky="nsew")
        calcRightFrame.grid_rowconfigure(1,
                                         minsize=rightSpacerHeight,
                                         weight=100)

        # Bearings
        bearingsFrame = ttk.Frame(calcRightFrame)
        bearingsFrame.grid(row=2, column=0, sticky="ew")
        calcRightFrame.grid_rowconfigure(2, weight=0)

        bearingsABLabel = ttk.Label(bearingsFrame,
                                    text=_("Bearings from A to B:"))
        bearingsABLabel.grid(row=0, column=0, sticky="w")
        bearingsFrame.grid_rowconfigure(0, weight=100)
        bearingsFrame.grid_columnconfigure(0, pad="8p")

        bearingsABinitLabel = ttk.Label(
            bearingsFrame,
            text=pgettext("bearings for a path between two points", "init: "))
        bearingsABinitLabel.grid(row=0, column=1, sticky="w")

        self.bearingABinitVar = tk.StringVar()
        bearingsABinitValueLabel = ttk.Label(
            bearingsFrame, textvariable=self.bearingABinitVar)
        bearingsABinitValueLabel.grid(row=0, column=2, sticky="w")
        bearingsFrame.grid_columnconfigure(2, pad="10p")

        spacer = ttk.Frame(bearingsFrame)
        spacer.grid(row=0, column=3, sticky="nsew")
        calcRightFrame.grid_columnconfigure(3, minsize="10p", weight=100)

        bearingsABfinalLabel = ttk.Label(
            bearingsFrame,
            text=pgettext("bearings for a path between two points", "final: "))
        bearingsABfinalLabel.grid(row=0, column=4, sticky="w")

        self.bearingABfinalVar = tk.StringVar()
        bearingsABfinalValueLabel = ttk.Label(
            bearingsFrame, textvariable=self.bearingABfinalVar)
        bearingsABfinalValueLabel.grid(row=0, column=5, sticky="w")

        bearingsBALabel = ttk.Label(bearingsFrame,
                                    text=_("Bearings from B to A: "))
        bearingsBALabel.grid(row=1, column=0, sticky="w")
        bearingsFrame.grid_rowconfigure(1, weight=100)

        bearingsBAinitLabel = ttk.Label(
            bearingsFrame,
            text=pgettext("bearings for a path between two points", "init: "))
        bearingsBAinitLabel.grid(row=1, column=1, sticky="w")

        self.bearingBAinitVar = tk.StringVar()
        bearingsBAinitValueLabel = ttk.Label(
            bearingsFrame, textvariable=self.bearingBAinitVar)
        bearingsBAinitValueLabel.grid(row=1, column=2, sticky="w")

        # Spacer present in row 0 column 3, no need to insert another one here

        bearingsBAfinalLabel = ttk.Label(
            bearingsFrame,
            text=pgettext("bearings for a path between two points", "final: "))
        bearingsBAfinalLabel.grid(row=1, column=4, sticky="w")

        self.bearingBAfinalVar = tk.StringVar()
        bearingsBAfinalValueLabel = ttk.Label(
            bearingsFrame, textvariable=self.bearingBAfinalVar)
        bearingsBAfinalValueLabel.grid(row=1, column=5, sticky="w")

        spacer = ttk.Frame(calcRightFrame)
        spacer.grid(row=3, column=0, sticky="nsew")
        calcRightFrame.grid_rowconfigure(3,
                                         minsize=rightSpacerHeight,
                                         weight=100)

        # Flight duration in relation to ground speed
        groundSpeedVsFlightTimeFrame = ttk.Frame(calcRightFrame)
        groundSpeedVsFlightTimeFrame.grid(row=4, column=0, sticky="ew")
        calcRightFrame.grid_rowconfigure(4, weight=0)

        groundSpeedLabel = ttk.Label(groundSpeedVsFlightTimeFrame,
                                     text=_("Ground speed: "))
        groundSpeedLabel.grid(row=0, column=0, sticky="w")
        groundSpeedVsFlightTimeFrame.grid_rowconfigure(0, weight=100)

        self.groundSpeed = tk.StringVar()
        self.groundSpeed.set("475")  # typical airliner speed (in knots)
        self.groundSpeedEntry = ttk.Entry(groundSpeedVsFlightTimeFrame,
                                          width=5,
                                          textvariable=self.groundSpeed)
        self.groundSpeedEntry.grid(row=0, column=1)
        groundSpeedVsFlightTimeFrame.grid_columnconfigure(1,
                                                          minsize="20p",
                                                          pad="5p")
        self.speedUnitLabelVar = tk.StringVar()
        speedUnitLabel = ttk.Label(groundSpeedVsFlightTimeFrame,
                                   textvariable=self.speedUnitLabelVar)
        speedUnitLabel.grid(row=0, column=2, sticky="w")
        groundSpeedVsFlightTimeFrame.grid_columnconfigure(2, pad="20p")

        # Double arrow between ground speed and flight duration
        linkLabel = ttk.Label(groundSpeedVsFlightTimeFrame, text="↔")
        linkLabel.grid(row=0, column=3, sticky="ew")
        groundSpeedVsFlightTimeFrame.grid_columnconfigure(3, pad="20p")

        self.flightDuration = tk.StringVar()  # minutes
        self.flightDurationEntry = ttk.Entry(groundSpeedVsFlightTimeFrame,
                                             width=6,
                                             textvariable=self.flightDuration)
        self.flightDurationEntry.grid(row=0, column=4)
        groundSpeedVsFlightTimeFrame.grid_columnconfigure(4, pad="5p")

        # Time unit + human-readable form for the flight duration (such as
        # “1 day, 12 hours and 5 minutes”)
        self.flightDurationPostfixVar = tk.StringVar()
        flightDurationPostfixLabel = ttk.Label(
            groundSpeedVsFlightTimeFrame,
            textvariable=self.flightDurationPostfixVar)
        flightDurationPostfixLabel.grid(row=0, column=5, sticky="w")
        # Use a minimum column size in order to avoid frequent layout changes
        # when the flight duration is modified.
        groundSpeedVsFlightTimeFrame.grid_columnconfigure(
            5, minsize=tk.font.Font().measure("0" * 60))

        ToolTip(
            flightDurationPostfixLabel,
            _("Decomposition using Julian years\n"
              "(1 Julian year = {days} days)").format(
                  days=locale.format("%.02f", 365.25, grouping=True)))

        # This causes the initialization of the various fields of the dialog
        # because of the TreeviewSelect event generated by the initial airport
        # selection from airportChooserLabelFrame().
        self.icaoVarA.trace("w", self.updateResults)
        self.icaoVarB.trace("w", self.updateResults)
        self.calcMethodVar.trace("w", self.updateResults)

        self.bearingsType.trace("w", self.updateDisplayedResults)
        self.lengthUnit.trace("w", self.updateDisplayedResults)
        self.speedUnit.trace("w", self.onSpeedUnitChanged)
        self.groundSpeed.trace("w", self.updateDisplayedFlightTime)
        self.flightDuration.trace("w", self.updateDisplayedGroundSpeed)
        self.flightDuration.trace("w", self.updateFlightDurationPostfix)
        self.updateDisplayedSpeedUnit()

        # Initially focus the search field for airport A
        searchEntryA.focus_set()
Beispiel #4
0
 def _add_rdo_pieceskin(self, parent, skin):
     return ttk.Radiobutton(parent,
                            text=skin.desc,
                            variable=self.svar_pieces,
                            value=skin.name)
    def __init__(self, parent, controller):
        Frame.__init__(self, parent, bg="sea green")

        label = Label(self, text="Mass Spectrum", \
                font=LARGE_FONT, bg="sea green", bd = 1, relief = SOLID)
        label.place(relx=0, rely=0, relwidth=1)

        button1 = ttk.Button(self,
                             text="Back to Home",
                             command=lambda: controller.show_frame(StartPage))
        button1.place(relx=x1, rely=y, width=width, height=height)

        button2 = ttk.Button(self,
                             text="Norm and Avg",
                             command=lambda: controller.show_frame(Normline))
        button2.place(relx=x2, rely=y, width=width, height=height)

        button3 = ttk.Button(self,
                             text="Powerfile",
                             command=lambda: controller.show_frame(Powerfile))
        button3.place(relx=x3, rely=y, width=width, height=height)

        # Opening a Directory:
        self.location = "/"
        self.fname = ""

        def open_dir(self):

            root = Tk()
            root.withdraw()

            root.filename = filedialog.askopenfilename(
                initialdir=self.location,
                title="Select file",
                filetypes=(("Mass files", "*.mass"), ("all files", "*.*")))
            filename = root.filename
            filename = filename.split("/")

            self.fname = filename[-1]
            del filename[-1]
            self.location = "/".join(filename)

            root.destroy()
            current_location.config(text=self.location)
            filename_label.config(text=self.fname)
            return

        # Labels and buttons:
        browse_loc = ttk.Button(self, text="Browse File")
        browse_loc.config(command=lambda: open_dir(self))

        # Printing current location:
        current_location = Label(self)
        filename_label = Label(self)

        massSpec_label = Label(self,
                               text="Mass_file: ",
                               font=("Times", 10, "bold"))

        # the compund details:
        molecule_name_label = Label(self,
                                    text="Molecule",
                                    font=("Times", 10, "bold"))
        temp_label = Label(self, text="TEMP(K)", font=("Times", 10, "bold"))
        bwidth_label = Label(self,
                             text="B0 Width(ms)",
                             font=("Times", 10, "bold"))
        ion_enrg_label = Label(self, text="IE(eV)", font=("Times", 10, "bold"))

        mname = StringVar()
        temp = StringVar()
        bwidth = StringVar()
        ie = StringVar()

        mname.set("Molecule")
        temp.set("-")
        bwidth.set("-")
        ie.set("-")

        molecule_name = Entry(self,
                              bg="white",
                              bd=5,
                              textvariable=mname,
                              justify=LEFT,
                              font=("Times", 12, "italic"))
        temperature = Entry(self,
                            bg="white",
                            bd=5,
                            textvariable=temp,
                            justify=LEFT,
                            font=("Times", 12, "italic"))
        bo_Width = Entry(self,
                         bg="white",
                         bd=5,
                         textvariable=bwidth,
                         justify=LEFT,
                         font=("Times", 12, "italic"))
        ion_enrg = Entry(self,
                         bg="white",
                         bd=5,
                         textvariable=ie,
                         justify=LEFT,
                         font=("Times", 12, "italic"))



        mass_button = ttk.Button(self, text="MassSpec", \
                                        command = lambda: massSpec(\
                                        self.fname, mname.get(), temp.get(), bwidth.get(), ie.get(),\
                                        mass_xmin.get(), mass_xmax.get(),\
                                        self.location,\
                                        m_figwidth.get(), m_figheight.get(),\
                                        combine_entry_values.get(),\
                                        output_filename.get(),\
                                        mass_method_value.get(),\
                                        mass_saveCheck_value.get()
                                        )
                                )

        # Save checkbutton:
        mass_saveCheck_value = BooleanVar()
        mass_saveCheck_value.set(True)
        mass_saveCheck = ttk.Checkbutton(self,
                                         text="Save",
                                         variable=mass_saveCheck_value)

        # Mass Spec labels:
        mass_range_label = Label(self,
                                 text="Range(u):",
                                 font=("Times", 10, "bold"))

        mass_xmin = IntVar()
        mass_xmax = IntVar()
        mass_xmin.set(0)
        mass_xmax.set(80)
        mass_xmin_Entry = Entry(self, bg = "white", bd = 5, \
                textvariable=mass_xmin, justify = LEFT, font=("Times", 10, "bold"))
        mass_xmax_Entry = Entry(self, bg = "white", bd = 5, \
                textvariable=mass_xmax, justify = LEFT, font=("Times", 10, "bold"))

        mass_figsize = Label(self, text="FigSize:", font=("Times", 10, "bold"))

        m_figwidth = IntVar()
        m_figheight = IntVar()

        m_figwidth.set(7)
        m_figheight.set(5)
        mass_figWidth = Entry(self,
                              bg="white",
                              bd=5,
                              textvariable=m_figwidth,
                              justify=LEFT,
                              font=("Times", 10, "bold"))
        mass_figHeight = Entry(self,
                               bg="white",
                               bd=5,
                               textvariable=m_figheight,
                               justify=LEFT,
                               font=("Times", 10, "bold"))

        #Combine Mass spec:
        def combine_func(self, combine):
            if not combine:
                display_label.config(text="Single mode active:")
            if combine:
                display_label.config(text="Combine mode active:")

        display_label = Label(self,
                              font=("Times", 12, "italic"),
                              bg="sea green")

        mass_method_value = BooleanVar()
        single_mass = ttk.Radiobutton(self, text = "Single: ", \
                variable = mass_method_value, value = False, \
                command = lambda: combine_func(self, mass_method_value.get()))
        combine_mass = ttk.Radiobutton(self, text = "Combine: ", \
                variable = mass_method_value, value = True, \
                command = lambda: combine_func(self, mass_method_value.get()))

        combine_entry_values = StringVar()
        combine_entry_values.set(
            "Combine: Enter just files nos. (if same data) comma separated")

        combine_entry = Entry(self, bg = "white", bd = 5,\
                                textvariable=combine_entry_values, justify = LEFT,\
                                font=("Times", 12, "italic"))

        # avg spectrum output filename:
        avg_outputFilename = Label(self, \
                text = "Output filename\n(Combine mode)", font=("Times", 10, "bold"))

        output_filename = StringVar()
        output_filename.set("Average")
        avg_outputFilename_entry = Entry(self, bg = "white", bd = 5, \
                textvariable=output_filename, justify = LEFT, font=("Times", 12, "italic"))

        mass_diff = 0.12
        mass_smalldiff = 0.06

        m_x1 = 0.1
        m_x2 = m_x1 + mass_diff
        m_x3 = m_x2 + mass_diff + 0.05
        m_x4 = m_x3 + mass_diff
        m_x5 = m_x4 + mass_smalldiff
        m_x6 = m_x5 + mass_diff
        m_x7 = m_x6 + mass_diff

        m_y1 = 0.1
        ymass_diff = 0.1
        m_y2 = m_y1 + ymass_diff
        m_y3 = m_y2 + ymass_diff + 0.05
        m_y4 = m_y3 + ymass_diff
        m_y5 = m_y4 + ymass_diff
        m_y6 = m_y5 + ymass_diff

        browse_loc.place(relx=m_x1, rely=m_y1, width=width, height=height)
        massSpec_label.place(relx=m_x1, rely=m_y2, width=width, height=height)
        molecule_name_label.place(relx=m_x1,
                                  rely=m_y3,
                                  width=width,
                                  height=height)
        temp_label.place(relx=m_x1, rely=m_y4, width=width, height=height)
        bwidth_label.place(relx=m_x1, rely=m_y5, width=width, height=height)
        ion_enrg_label.place(relx=m_x1, rely=m_y6, width=width, height=height)

        current_location.place(relx=m_x2,
                               rely=m_y1,
                               relwidth=0.5,
                               height=height)
        filename_label.place(relx=m_x2, rely=m_y2, width=width, height=height)
        molecule_name.place(relx=m_x2, rely=m_y3, width=width, height=height)
        temperature.place(relx=m_x2, rely=m_y4, width=width, height=height)
        bo_Width.place(relx=m_x2, rely=m_y5, width=width, height=height)
        ion_enrg.place(relx=m_x2, rely=m_y6, width=width, height=height)

        mass_range_label.place(relx=m_x3,
                               rely=m_y3,
                               width=width,
                               height=height)
        mass_xmin_Entry.place(relx=m_x4,
                              rely=m_y3,
                              width=smallwidth,
                              height=height)
        mass_xmax_Entry.place(relx=m_x5,
                              rely=m_y3,
                              width=smallwidth,
                              height=height)

        mass_figsize.place(relx=m_x3, rely=m_y4, width=width, height=height)
        mass_figWidth.place(relx=m_x4,
                            rely=m_y4,
                            width=smallwidth,
                            height=height)
        mass_figHeight.place(relx=m_x5,
                             rely=m_y4,
                             width=smallwidth,
                             height=height)

        single_mass.place(relx=m_x3, rely=m_y5, width=width, height=height)
        combine_mass.place(relx=m_x4, rely=m_y5, width=width, height=height)
        display_label.place(relx=m_x3, rely=m_y6, relwidth=0.25, height=height)

        combine_entry.place(relx=m_x6, rely=m_y3, relwidth=0.25, height=height)
        mass_saveCheck.place(relx=m_x6, rely=m_y4, width=width, height=height)
        mass_button.place(relx=m_x7, rely=m_y4, width=width, height=height)

        avg_outputFilename.place(relx=m_x6,
                                 rely=m_y6,
                                 width=width + 30,
                                 height=height)
        avg_outputFilename_entry.place(relx=m_x7 + 0.05,
                                       rely=m_y6,
                                       width=width,
                                       height=height)
Beispiel #6
0
			v_statusbar.set('Save to Database: Done!')
			UpdateVocab()
		except Exception as e:
			print('Can not save: ',e)

L1 = ttk.Label(F3, text = 'กรุณาใส่คำที่ต้องการแปล',font=('Angsana New',20))
L1.pack(pady=10)


FR0 = Frame(F3)
FR0.pack()

v_radio = StringVar()

RB1 = ttk.Radiobutton(FR0,text='Japanese',variable=v_radio,value='ja')
RB2 = ttk.Radiobutton(FR0,text='Thai',variable=v_radio,value='th')
RB1.invoke()

RB1.grid(row=0,column=1)
RB2.grid(row=0,column=2)

savetosheet = IntVar()
savetosheet.set(0)

cbtn = ttk.Checkbutton(F3,text='Save to Database',variable=savetosheet)
cbtn.pack()



v_texttras = StringVar() #เก็บสิ่งที่เราพิมพ์ไว้
Beispiel #7
0
def main_gui():
    #CZ#from TurnReporTxt2Csv.src.version     import the_version
    #CZ#root.title('Manipulation Text Report (ver. %s)' % the_version())
    from TurnReporTxt2Csv import VERSION as version
    root.title('Manipulation Text Report (ver. %s)' % version)
    root.resizable(0, 0)
    root.bind('<Return>', _root_load_file)

    mainframe = ttk.Frame(root, padding='3 3 12 12')
    mainframe.columnconfigure(0, weight=1)
    mainframe.rowconfigure(0, weight=1)

    len_padding = 6
    len_font_MF = 12
    len_with_EC = 70
    len_with_B1 = 20
    len_with_B2 = 30

    style = ttk.Style()
    style.configure('.',
                    padding=len_padding,
                    relief='flat',
                    font=('Helvetica', len_font_MF),
                    foreground='black',
                    background='#ccc')
    style.map('root_translate_entry.TButton',
              foreground=[('pressed', 'green'), ('active', 'green')],
              background=[('pressed', '!disabled', 'black'),
                          ('active', 'white')])
    style.map('root_cancel_entry.TButton',
              foreground=[('pressed', 'red'), ('active', 'red')],
              background=[('pressed', '!disabled', 'black'),
                          ('active', 'white')])

    root_path_file_entry = ttk.Entry(mainframe,
                                     width=len_with_EC,
                                     textvariable=root_path_file)
    root_path_file_entry.focus()
    root_path_file.trace('w', _root_translate_entry_on_change)  # rwua

    root_choose_in_entry = ttk.Combobox(mainframe,
                                        width=len_with_EC,
                                        textvariable=root_choose_in,
                                        state='readonly')
    root_choose_in_entry['values'] = _root_combo_set(root_combo_out)
    root_choose_in_entry.current(0)

    root_choosecsv_entry = ttk.Radiobutton(mainframe,
                                           text='output in %s' %
                                           TYPE_OUT_csv.upper(),
                                           value=TYPE_OUT_csv,
                                           variable=root_chooseext)
    root_choosexls_entry = ttk.Radiobutton(mainframe,
                                           text='output in %s' %
                                           TYPE_OUT_xls.upper(),
                                           value=TYPE_OUT_xls,
                                           variable=root_chooseext)
    root_chooseext.set(TYPE_OUT_xls)

    root_fsbrowser_entry = ttk.Button(mainframe,
                                      text='filesystem browser',
                                      width=len_with_B1,
                                      command=_root_load_file)
    root_translate_entry = ttk.Button(mainframe,
                                      text='Translate',
                                      width=len_with_B2,
                                      command=_root_translate,
                                      state=DISABLED,
                                      style='root_translate_entry.TButton')
    self_translate_entry.set(root_translate_entry)

    root_cancel_entry = ttk.Button(mainframe,
                                   text='CANCEL',
                                   width=len_with_B1,
                                   command=_root_destroy,
                                   style='root_cancel_entry.TButton')

    mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
    ttk.Label(mainframe, text="Choose text file through:").grid(column=1,
                                                                row=1,
                                                                sticky=W)
    root_fsbrowser_entry.grid(column=1, row=2, sticky=W)
    ttk.Label(mainframe, text="or enter").grid(column=2, row=2, sticky=W)
    root_path_file_entry.grid(column=3, row=2, sticky=(W, E))
    root_choose_in_entry.grid(column=3, row=3, sticky=(W, E))
    ttk.Label(mainframe, text="Choose type report text:").grid(column=1,
                                                               row=3,
                                                               sticky=W)
    root_choosecsv_entry.grid(column=3, row=4, sticky=(W, E))
    root_choosexls_entry.grid(column=3, row=5, sticky=(W, E))
    root_translate_entry.grid(column=3, row=6, sticky=W)
    root_cancel_entry.grid(column=3, row=8, sticky=E)

    for child in mainframe.winfo_children():
        child.grid_configure(padx=5, pady=5)

    root.mainloop()
    def __init__(self, row, controller):
        super().__init__()
        self.title("Thermal conductivity model")
        self.row = row
        self.controller = controller
        #self.resizable(False, False)

        # Adding outer container frames
        self.background_frame = ttk.Frame(self, style='Standard.TFrame')
        self.background_frame.pack(side='top', fill='both', expand=True)

        self.main_frame = ttk.Frame(self.background_frame, style='Standard.TFrame')
        self.main_frame.pack(side='top', fill='both', expand=True, padx=10, pady=10)

        # Adding main title frame
        self.main_title_frame = ttk.Frame(self.main_frame, style='DarkFrame.TFrame')
        self.main_title_frame.pack(side='top', fill='x')

        # Adding inner container frames
        self.top_frame = ttk.Frame(self.main_frame, style='Standard.TFrame')
        self.top_frame.pack(side='top', fill='x')

        self.center_frame = ttk.Frame(self.main_frame, style='Standard.TFrame')
        self.center_frame.pack(side='top', fill='x')

        self.bottom_frame = ttk.Frame(self.main_frame, style='Standard.TFrame')
        self.bottom_frame.pack(side='top', fill='x')

        # Adding top part container frames
        self.top_frame_inner_left = ttk.Frame(self.top_frame, style='Standard.TFrame')
        self.top_frame_inner_left.pack(side='left', fill='both', expand=True)

        self.top_frame_inner_right = ttk.Frame(self.top_frame, style='Standard.TFrame')
        self.top_frame_inner_right.pack(side='left', fill='both', expand=True)

        # Adding bottom part container frames
        self.bottom_frame_inner_left = ttk.Frame(self.bottom_frame, style='Standard.TFrame')
        self.bottom_frame_inner_left.pack(side='left', fill='both', expand=True)

        self.bottom_frame_inner_center = ttk.Frame(self.bottom_frame, style='Standard.TFrame')
        self.bottom_frame_inner_center.pack(side='left', fill='both', expand=True)

        self.bottom_frame_inner_right = ttk.Frame(self.bottom_frame, style='Standard.TFrame')
        self.bottom_frame_inner_right.pack(side='left', fill='both', expand=True)

        # Adding buttons in the button part
        self.ok_button = ttk.Button(self.bottom_frame_inner_left,
                                    text='Ok',
                                    width=15,
                                    takefocus=False,
                                    style='Standard.TButton',
                                    command=self.ok_button_func)
        self.ok_button.pack(side='left', padx=(10, 0), pady=(10, 10))

        self.see_calc_button = ttk.Button(self.bottom_frame_inner_center,
                                          text='See calculation',
                                          width=15,
                                          takefocus=False,
                                          style='Standard.TButton',
                                          command=self.see_calc_button_func)
        self.see_calc_button.pack(side='top', padx=(0, 10), pady=(10, 10))

        self.cancel_button = ttk.Button(self.bottom_frame_inner_right,
                                          text='Cancel',
                                          width=15,
                                          takefocus=False,
                                          style='Standard.TButton',
                                          command=self.cancel_button)
        self.cancel_button.pack(side='right', padx=(0, 10), pady=(10, 10))

        # Adding main title
        self.main_title = ttk.Label(self.main_title_frame,
                                   text='Thermal conductivity model',
                                   style='ExtraLargeLabel.TLabel')
        self.main_title.pack(side='left', padx=(10, 10), pady=(10, 10))

        # ku or kf selection frame widgets
        self.calculate_label = ttk.Label(self.top_frame_inner_left, text='Calculate:', style='LargeLabel.TLabel')
        self.calculate_label.grid(row=0, column=0, columnspan=2, sticky='w', padx=(10, 0), pady=(0, 0))

        self.ku_checkbutton = ttk.Checkbutton(self.top_frame_inner_left,
                                              style='Standard.TCheckbutton')
        self.ku_checkbutton.grid(row=1, column=0, sticky='w', padx=(10, 0), pady=(5, 0))
        self.ku_checkbutton_label = ttk.Label(self.top_frame_inner_left,
                                              text='Calculate unfrozen thermal conductivity',
                                              style='Standard.TLabel')
        self.ku_checkbutton_label.grid(row=1, column=1, sticky='w', padx=(3, 0), pady=(5, 0))

        self.kf_checkbutton = ttk.Checkbutton(self.top_frame_inner_left,
                                              style='Standard.TCheckbutton')
        self.kf_checkbutton.grid(row=2, column=0, sticky='w', padx=(10, 0), pady=(5, 0))
        self.kf_checkbutton_label = ttk.Label(self.top_frame_inner_left,
                                              text='Calculate frozen thermal conductivity',
                                              style='Standard.TLabel')
        self.kf_checkbutton_label.grid(row=2, column=1, sticky='w', padx=(3, 0), pady=(5, 0))

        # Adding override options widgets
        self.override_label = ttk.Label(self.top_frame_inner_left, text='Override on output:', style='LargeLabel.TLabel')
        self.override_label.grid(row=3, column=0, columnspan=2, sticky='w', padx=(10, 0), pady=(20, 0))

        self.sr_override_checkbutton = ttk.Checkbutton(self.top_frame_inner_left,
                                                       style='Standard.TCheckbutton')
        self.sr_override_checkbutton.grid(row=4, column=0, sticky='w', padx=(10, 0), pady=(5, 0))
        self.sr_override_label = ttk.Label(self.top_frame_inner_left,
                                           text='Sr value',
                                           style='Standard.TLabel')
        self.sr_override_label.grid(row=4, column=1, sticky='w', padx=(3, 0), pady=(5, 0))

        # select material type frame widgets
        self.select_type_label = ttk.Label(self.top_frame_inner_right,
                                           text='Select material type',
                                           style='LargeLabel.TLabel')
        self.select_type_label.grid(row=0, column=0, columnspan=4, sticky='w', padx=(10, 0), pady=(0, 0))

        self.k_label = ttk.Label(self.top_frame_inner_right, text='k', style='Standard.TLabel')
        self.k_label.grid(row=1, column=2, columnspan=2, padx=(0, 0), pady=(3, 0))

        self.unfrozen_label = ttk.Label(self.top_frame_inner_right, text='unfrozen', style='Standard.TLabel')
        self.unfrozen_label.grid(row=2, column=2, padx=(5, 0), pady=(3, 0))
        self.frozen_label = ttk.Label(self.top_frame_inner_right, text='frozen', style='Standard.TLabel')
        self.frozen_label.grid(row=2, column=3, padx=(5, 0), pady=(3, 0))

        self.type_selection = tk.StringVar()
        self.radiobutton_1 = ttk.Radiobutton(
            self.top_frame_inner_right,
            value='type1',
            variable=self.type_selection,
            takefocus=False,
            style='Standard.TRadiobutton'
        )
        self.radiobutton_1.grid(row=3, column=0, sticky='w', padx=(10, 0), pady=(3, 0))
        self.radiobutton_2 = ttk.Radiobutton(
            self.top_frame_inner_right,
            value='type2',
            variable=self.type_selection,
            takefocus=False,
            style='Standard.TRadiobutton'
        )
        self.radiobutton_2.grid(row=4, column=0, sticky='w', padx=(10, 0), pady=(3, 0))
        self.radiobutton_3 = ttk.Radiobutton(
            self.top_frame_inner_right,
            value='type3',
            variable=self.type_selection,
            takefocus=False,
            style='Standard.TRadiobutton'
        )
        self.radiobutton_3.grid(row=5, column=0, sticky='w', padx=(10, 0), pady=(3, 0))
        self.radiobutton_4 = ttk.Radiobutton(
            self.top_frame_inner_right,
            value='type4',
            variable=self.type_selection,
            takefocus=False,
            style='Standard.TRadiobutton'
        )
        self.radiobutton_4.grid(row=6, column=0, sticky='w', padx=(10, 0), pady=(3, 0))

        self.type_label_1 = ttk.Label(
            self.top_frame_inner_right,
            text='gravel and coarse sands:',
            style='Standard.TLabel'
        )
        self.type_label_1.grid(row=3, column=1, sticky='w', padx=(5, 0), pady=(3, 0))
        self.type_label_2 = ttk.Label(
            self.top_frame_inner_right,
            text='medium and fine sands:',
            style='Standard.TLabel'
        )
        self.type_label_2.grid(row=4, column=1, sticky='w', padx=(5, 0), pady=(3, 0))
        self.type_label_3 = ttk.Label(
            self.top_frame_inner_right,
            text='silty and clayey soils:',
            style='Standard.TLabel'
        )
        self.type_label_3.grid(row=5, column=1, sticky='w', padx=(5, 0), pady=(3, 0))
        self.type_label_4 = ttk.Label(
            self.top_frame_inner_right,
            text='organic fibrous soils (peat):',
            style='Standard.TLabel'
        )
        self.type_label_4.grid(row=6, column=1, sticky='w', padx=(5, 0), pady=(3, 0))

        self.var_unfrozen_1 = tk.StringVar(value='4.60')
        self.var_unfrozen_2 = tk.StringVar(value='3.55')
        self.var_unfrozen_3 = tk.StringVar(value='1.90')
        self.var_unfrozen_4 = tk.StringVar(value='0.60')
        self.unfrozen_val_1 = ttk.Label(
            self.top_frame_inner_right,
            textvariable=self.var_unfrozen_1,
            style='Standard.TLabel'
        )
        self.unfrozen_val_1.grid(row=3, column=2, padx=(0, 0), pady=(3, 0))
        self.unfrozen_val_2 = ttk.Label(
            self.top_frame_inner_right,
            textvariable=self.var_unfrozen_2,
            style='Standard.TLabel'
        )
        self.unfrozen_val_2.grid(row=4, column=2, padx=(0, 0), pady=(3, 0))
        self.unfrozen_val_3 = ttk.Label(
            self.top_frame_inner_right,
            textvariable=self.var_unfrozen_3,
            style='Standard.TLabel'
        )
        self.unfrozen_val_3.grid(row=5, column=2, padx=(0, 0), pady=(3, 0))
        self.unfrozen_val_4 = ttk.Label(
            self.top_frame_inner_right,
                                        textvariable=self.var_unfrozen_4,
                                        style='Standard.TLabel'
        )
        self.unfrozen_val_4.grid(row=6, column=2, padx=(0, 0), pady=(3, 0))

        self.var_frozen_1 = tk.StringVar(value='1.70')
        self.var_frozen_2 = tk.StringVar(value='0.95')
        self.var_frozen_3 = tk.StringVar(value='0.85')
        self.var_frozen_4 = tk.StringVar(value='0.25')
        self.frozen_val_1 = ttk.Label(
            self.top_frame_inner_right,
            textvariable=self.var_frozen_1,
            style='Standard.TLabel')
        self.frozen_val_1.grid(row=3, column=3, padx=(0, 0), pady=(3, 0))
        self.frozen_val_2 = ttk.Label(
            self.top_frame_inner_right,
            textvariable=self.var_frozen_2,
            style='Standard.TLabel')
        self.frozen_val_2.grid(row=4, column=3, padx=(0, 0),pady=(3, 0))
        self.frozen_val_3 = ttk.Label(
            self.top_frame_inner_right,
            textvariable=self.var_frozen_3,
            style='Standard.TLabel')
        self.frozen_val_3.grid(row=5, column=3, padx=(0, 0), pady=(3, 0))
        self.frozen_val_4 = ttk.Label(
            self.top_frame_inner_right,
            textvariable=self.var_frozen_4,
            style='Standard.TLabel'
        )
        self.frozen_val_4.grid(row=6, column=3, padx=(0, 0), pady=(3, 0))

        # Adding center frame widgets for mineral or rock selection calculation
        self.center_frame_top_selection_frame = ttk.Frame(self.center_frame, style='Standard.TFrame')
        self.center_frame_top_selection_frame.pack(side='top', fill='x')

        self.particle_th_con_label = ttk.Label(
            self.center_frame_top_selection_frame,
            text='Particle thermal conductivity',
            style='LargeLabel.TLabel'
        )
        self.particle_th_con_label.grid(row=0, column=0, columnspan=4, sticky='w', padx=(10, 0), pady=(15, 0))

        self.calculation_selection = tk.StringVar()
        self.rock_selection_radiobutton = ttk.Radiobutton(
            self.center_frame_top_selection_frame,
            value='rock',
            variable=self.calculation_selection,
            style='Standard.TRadiobutton',
            takefocus=False,
            command=self.switch_frames
        )
        self.rock_selection_radiobutton.grid(row=1, column=0, padx=(10, 0), pady=(5, 5))
        self.rock_selection_label = ttk.Label(
            self.center_frame_top_selection_frame,
            text='by rock type',
            style='Standard.TLabel'
        )
        self.rock_selection_label.grid(row=1, column=1, padx=(3, 0), pady=(5, 5))

        self.mineral_selection_radiobutton = ttk.Radiobutton(
            self.center_frame_top_selection_frame,
            value='mineral',
            variable=self.calculation_selection,
            style='Standard.TRadiobutton',
            takefocus=False,
            command=self.switch_frames
        )
        self.mineral_selection_radiobutton.grid(row=1, column=2, padx=(10, 0), pady=(5, 5))
        self.mineral_selection_label = ttk.Label(
            self.center_frame_top_selection_frame,
            text='by mineral',
            style='Standard.TLabel')
        self.mineral_selection_label.grid(row=1, column=3, padx=(3, 0), pady=(5, 5))

        self.switch_frame_container = ttk.Frame(self.center_frame, style='Standard.TFrame')
        self.switch_frame_container.pack(side='bottom', fill='both', expand=True)
        self.switch_frame_container.columnconfigure(0, weight=1)
        self.switch_frame_container.rowconfigure(0, weight=1)

        # Frame switching
        self.frame_pages = dict()

        for frame_class in [SelectByRock, SelectByMineral]:
            selection_frame = frame_class(self.switch_frame_container)
            self.frame_pages[frame_class] = selection_frame
            selection_frame.grid(row=0, column=0, sticky='nsew')

        self.empty_start_frame = ttk.Frame(self.switch_frame_container, style='Standard.TFrame')
        self.empty_start_frame.grid(row=0, column=0, sticky='nsew')
    def __init__(self, parent):
        super().__init__(parent,
                         labelanchor='n',
                         text='Ficha de registro para participantes',
                         font=font.Font(family='Helvetica',
                                        size='12',
                                        weight='bold'))

        fontStyle = font.Font(family='Helvetica', size='10', weight='bold')
        fontStyle2 = font.Font(family='Helvetica', size='10')

        padx = 50

        fornameLabel = tk.Label(self, text="Nombre: ", font=fontStyle)
        fornameLabel.grid(row=0, column=0, padx=padx, pady=10, sticky='EW')
        self.fornameEntry = ttk.Entry(self, font=fontStyle2)
        self.fornameEntry.grid(row=0,
                               column=1,
                               columnspan=3,
                               padx=padx,
                               pady=10,
                               sticky='EW')

        surnameLabel = tk.Label(self, text="Apellido: ", font=fontStyle)
        surnameLabel.grid(row=1, column=0, padx=padx, pady=10, sticky='EW')
        self.surnameEntry = ttk.Entry(self, font=fontStyle2)
        self.surnameEntry.grid(row=1,
                               column=1,
                               columnspan=3,
                               padx=padx,
                               pady=10,
                               sticky='EW')

        curpLabel = tk.Label(self, text='CURP: ', font=fontStyle)
        curpLabel.grid(row=2, column=0, padx=padx, pady=10, sticky='EW')
        self.curpEntry = ttk.Entry(self, font=fontStyle2)
        self.curpEntry.grid(row=2,
                            column=1,
                            columnspan=3,
                            padx=padx,
                            pady=10,
                            sticky='EW')

        sexLabel = tk.Label(self, text='Sexo: ', font=fontStyle)
        sexLabel.grid(row=3, column=0, padx=padx, pady=10, sticky='EW')
        self.sexValue = tk.StringVar(self)
        self.sexValue.set('M')
        mRadiobutton = ttk.Radiobutton(self,
                                       text='Masculino',
                                       value='M',
                                       variable=self.sexValue)
        mRadiobutton.grid(row=3, column=1, padx=padx, pady=10, sticky='EW')
        fRadiobutton = ttk.Radiobutton(self,
                                       text='Femenino',
                                       value='F',
                                       variable=self.sexValue)
        fRadiobutton.grid(row=3, column=3, padx=(10, 50), pady=10, sticky='EW')

        stateLabel = tk.Label(self, text='Estado: ', font=fontStyle)
        stateLabel.grid(row=4, column=0, padx=padx, pady=10, sticky='EW')
        self.stateEntry = ttk.Entry(self, font=fontStyle2)
        self.stateEntry.grid(row=4, column=1, padx=padx, pady=10, sticky='EW')

        cityLabel = tk.Label(self, text='Ciudad: ', font=fontStyle)
        cityLabel.grid(row=4, column=2, padx=padx, pady=10, sticky='EW')
        self.cityEntry = ttk.Entry(self, font=fontStyle2)
        self.cityEntry.grid(row=4, column=3, padx=padx, pady=10, sticky='EW')

        blockLabel = tk.Label(self, text='Colonia: ', font=fontStyle)
        blockLabel.grid(row=6, column=0, padx=padx, pady=10, sticky='EW')
        self.blockEntry = ttk.Entry(self, font=fontStyle2)
        self.blockEntry.grid(row=6,
                             column=1,
                             columnspan=3,
                             padx=padx,
                             pady=10,
                             sticky='EW')

        streetLabel = tk.Label(self, text='Calle: ', font=fontStyle)
        streetLabel.grid(row=7, column=0, padx=padx, pady=10, sticky='EW')
        self.streetEntry = ttk.Entry(self, font=fontStyle2)
        self.streetEntry.grid(row=7,
                              column=1,
                              columnspan=3,
                              padx=padx,
                              pady=10,
                              sticky='EW')

        numberLabel = tk.Label(self, text='Número: ', font=fontStyle)
        numberLabel.grid(row=8, column=0, padx=padx, pady=10, sticky='EW')
        self.numberEntry = ttk.Entry(self, font=fontStyle2)
        self.numberEntry.grid(row=8, column=1, padx=padx, pady=10, sticky='EW')

        zipLabel = tk.Label(self, text='C.P: ', font=fontStyle)
        zipLabel.grid(row=8, column=2, padx=padx, pady=10, sticky='EW')
        self.zipEntry = ttk.Entry(self, font=fontStyle2)
        self.zipEntry.grid(row=8, column=3, padx=padx, pady=10, sticky='EW')

        studentLabel = tk.Label(self, text='Estudiante: ', font=fontStyle)
        studentLabel.grid(row=9, column=0, padx=padx, pady=10, sticky='EW')
        self.studentValue = tk.StringVar(self)
        self.studentValue.set('S')
        sRadioButton = ttk.Radiobutton(self,
                                       text='Sí',
                                       value='S',
                                       variable=self.studentValue)
        sRadioButton.grid(row=9, column=1, padx=padx, pady=10, sticky='EW')
        sRadioButton.bind('<Button-1>', self.__setSchool)
        nRadioButton = ttk.Radiobutton(self,
                                       text='No',
                                       value='N',
                                       variable=self.studentValue)
        nRadioButton.grid(row=9, column=3, padx=padx, pady=10, sticky='EW')
        nRadioButton.bind('<Button-1>', self.__clearSchool)

        schoolLabel = tk.Label(self, text='Escuela: ', font=fontStyle)
        schoolLabel.grid(row=10, column=0, padx=padx, pady=10, sticky='EW')
        self.schoolEntry = ttk.Entry(self, font=fontStyle2)
        self.schoolEntry.grid(row=10,
                              column=1,
                              padx=padx,
                              pady=10,
                              sticky='EW')

        categoryLabel = tk.Label(self, text='Categoría: ', font=fontStyle)
        categoryLabel.grid(row=10, column=2, padx=padx, pady=10, sticky='EW')
        self.categoryCombobox = ttk.Combobox(
            self,
            values=['', 'Infantil', 'Aficionados', 'Avanzado', 'Libre'],
            state='readonly')
        self.categoryCombobox.grid(row=10,
                                   column=3,
                                   padx=padx,
                                   pady=10,
                                   sticky='EW')
        self.categoryCombobox.bind('<<ComboboxSelected>>', self.__adjustCost)

        self.costLabel = tk.Label(self,
                                  text='Costo de inscripción: $0.00',
                                  font=fontStyle)
        self.costLabel.grid(row=11,
                            column=0,
                            columnspan=5,
                            padx=padx,
                            pady=10,
                            sticky='EW')
    def settingsWindow(self, parent):
        def goBack():
            self.updateSettings()
            self.settings_Window_Frame.grid_forget()
            self.cosmetic_Preferences_Frame.grid_forget()
            self.base_Settings_Frame.grid_forget()
            parent.main_Frame.grid(column=1, row=1)

        self.settings_Window_Frame = ttk.Frame(parent)
        self.settings_Window_Frame.grid(column=1, row=1)
        ttk.Button(self.settings_Window_Frame, text="<--", command=goBack, width=0)\
                    .grid(column=1, row=1, sticky=(NW))
        ttk.Button(self.settings_Window_Frame, text="Save",
                   command=self.updateSettings, width=0)\
                    .grid(column=2, row=1, sticky=(NW))

        ttk.Checkbutton(self.settings_Window_Frame,
                        text="Show only relevant information",
                        variable=self.show_Relevant,
                        onvalue=True,
                        offvalue=False).grid(column=1,
                                             row=2,
                                             columnspan=2,
                                             pady=(10, 0))
        ttk.Checkbutton(self.settings_Window_Frame,
                        text="Show if the number is prime",
                        variable=self.show_Prime,
                        onvalue=True,
                        offvalue=False).grid(column=1, row=3, sticky="W")
        ttk.Checkbutton(self.settings_Window_Frame,
                        text="Show the number's roots",
                        variable=self.show_Roots,
                        onvalue=True,
                        offvalue=False).grid(column=1, row=4, sticky="W")
        ttk.Checkbutton(self.settings_Window_Frame,
                        text="Show the number's factors",
                        variable=self.show_Factors,
                        onvalue=True,
                        offvalue=False).grid(column=2, row=3, sticky="W")
        ttk.Checkbutton(self.settings_Window_Frame,
                        text="Show if the number is palindromic",
                        variable=self.show_Palindromic,
                        onvalue=True,
                        offvalue=False).grid(column=2, row=4, sticky="W")
        ttk.Checkbutton(self.settings_Window_Frame,
                        text="Show the number in the Fibonacci sequence",
                        variable=self.show_Fibonacci,
                        onvalue=True,
                        offvalue=False).grid(column=2, row=5, sticky="W")
        ttk.Checkbutton(self.settings_Window_Frame,
                        text="Show the factorial of the number",
                        variable=self.show_Factorial,
                        onvalue=True,
                        offvalue=False).grid(column=1, row=5, sticky="W")
        ttk.Checkbutton(self.settings_Window_Frame,
                        text="Show if the number is a left-truncatable prime",
                        variable=self.show_Truncatables,
                        onvalue=True,
                        offvalue=False).grid(column=1, row=6, sticky="W")
        ttk.Checkbutton(self.settings_Window_Frame,
                        text="Show if the number is a perfect prime number",
                        variable=self.show_Perfects,
                        onvalue=True,
                        offvalue=False).grid(column=2, row=6, sticky="W")
        ttk.Checkbutton(self.settings_Window_Frame,
                        text="Show the number in roman numerals",
                        variable=self.show_Roman,
                        onvalue=True,
                        offvalue=False).grid(column=1, row=7, sticky="W")

        def updateDecimalSeparator():
            if self.decimal_Separator.get() == 1:
                self.decimal_Mark = ","
                self.thousand_Mark = "."
            elif self.decimal_Separator.get() == 2:
                self.decimal_Mark = "."
                self.thousand_Mark = ","

        self.cosmetic_Preferences_Frame = ttk.Frame(self.settings_Window_Frame,
                                                    padding="0 15 0 0")
        self.cosmetic_Preferences_Frame.grid(column=1, row=8, columnspan=2)

        ttk.Label(self.cosmetic_Preferences_Frame,
                  text="Show numbers the following way:    ").grid(column=1,
                                                                   row=1)
        ttk.Radiobutton(self.cosmetic_Preferences_Frame,
                        text="10000/3 = 3.333,33    ",
                        variable=self.decimal_Separator,
                        value=1,
                        command=updateDecimalSeparator).grid(column=1, row=2)
        ttk.Radiobutton(self.cosmetic_Preferences_Frame,
                        text="10000/3 = 3,333.33    ",
                        variable=self.decimal_Separator,
                        value=2,
                        command=updateDecimalSeparator).grid(column=1, row=3)

        ttk.Label(self.cosmetic_Preferences_Frame,
                  text="Show numbers in base 10+ the following way:").grid(
                      column=2, row=1)
        ttk.Radiobutton(self.cosmetic_Preferences_Frame,
                        text="A78FC0",
                        variable=self.uppercase_hexadecimal,
                        value=True).grid(column=2, row=2)
        ttk.Radiobutton(self.cosmetic_Preferences_Frame,
                        text="a78fc0",
                        variable=self.uppercase_hexadecimal,
                        value=False).grid(column=2, row=3)

        self.base_Settings_Frame = ttk.Frame(parent, padding="15 0 0 0")
        self.base_Settings_Frame.grid(column=2, row=1)
        self.base_Settings_Frame.columnconfigure(1, weight=1)
        self.base_Settings_Frame.columnconfigure(2, weight=1)
        self.base_Settings_Frame.columnconfigure(3, weight=1)
        self.base_Settings_Frame.columnconfigure(4, weight=1)
        self.base_Settings_Frame.columnconfigure(5, weight=1)
        self.base_Settings_Frame.columnconfigure(6, weight=1)
        ttk.Label(self.base_Settings_Frame,
                  text="Display the number in the following bases:").grid(
                      column=1, row=1, columnspan=6)

        def updateBases(base, boolean):
            if boolean == True:
                self.selected_Bases.add(base)
            elif boolean == False:
                self.selected_Bases.discard(base)
            if len(self.selected_Bases) == 35:
                self.show_All_Bases.set(True)
            else:
                self.show_All_Bases.set(False)

        def selectAll():
            checkbox_State = self.show_All_Bases.get()
            for base in range(37):
                if base > 1:
                    updateBases(base, checkbox_State)
            self.show_Base_2.set(self.show_All_Bases.get())
            self.show_Base_3.set(self.show_All_Bases.get())
            self.show_Base_4.set(self.show_All_Bases.get())
            self.show_Base_5.set(self.show_All_Bases.get())
            self.show_Base_6.set(self.show_All_Bases.get())
            self.show_Base_7.set(self.show_All_Bases.get())
            self.show_Base_8.set(self.show_All_Bases.get())
            self.show_Base_9.set(self.show_All_Bases.get())
            self.show_Base_10.set(self.show_All_Bases.get())
            self.show_Base_11.set(self.show_All_Bases.get())
            self.show_Base_12.set(self.show_All_Bases.get())
            self.show_Base_13.set(self.show_All_Bases.get())
            self.show_Base_14.set(self.show_All_Bases.get())
            self.show_Base_15.set(self.show_All_Bases.get())
            self.show_Base_16.set(self.show_All_Bases.get())
            self.show_Base_17.set(self.show_All_Bases.get())
            self.show_Base_18.set(self.show_All_Bases.get())
            self.show_Base_19.set(self.show_All_Bases.get())
            self.show_Base_20.set(self.show_All_Bases.get())
            self.show_Base_21.set(self.show_All_Bases.get())
            self.show_Base_22.set(self.show_All_Bases.get())
            self.show_Base_23.set(self.show_All_Bases.get())
            self.show_Base_24.set(self.show_All_Bases.get())
            self.show_Base_25.set(self.show_All_Bases.get())
            self.show_Base_26.set(self.show_All_Bases.get())
            self.show_Base_27.set(self.show_All_Bases.get())
            self.show_Base_28.set(self.show_All_Bases.get())
            self.show_Base_29.set(self.show_All_Bases.get())
            self.show_Base_30.set(self.show_All_Bases.get())
            self.show_Base_31.set(self.show_All_Bases.get())
            self.show_Base_32.set(self.show_All_Bases.get())
            self.show_Base_33.set(self.show_All_Bases.get())
            self.show_Base_34.set(self.show_All_Bases.get())
            self.show_Base_35.set(self.show_All_Bases.get())
            self.show_Base_36.set(self.show_All_Bases.get())

        ttk.Checkbutton(self.base_Settings_Frame,
                        text="All",
                        variable=self.show_All_Bases,
                        onvalue=True,
                        offvalue=False,
                        command=selectAll).grid(column=1, row=2, sticky=W)
        ttk.Checkbutton(
            self.base_Settings_Frame,
            text="2",
            variable=self.show_Base_2,
            onvalue=True,
            offvalue=False,
            command=lambda: updateBases(2, self.show_Base_2.get())).grid(
                column=2, row=2, sticky=W)
        ttk.Checkbutton(
            self.base_Settings_Frame,
            text="3",
            variable=self.show_Base_3,
            onvalue=True,
            offvalue=False,
            command=lambda: updateBases(3, self.show_Base_3.get())).grid(
                column=3, row=2, sticky=W)
        ttk.Checkbutton(
            self.base_Settings_Frame,
            text="4",
            variable=self.show_Base_4,
            onvalue=True,
            offvalue=False,
            command=lambda: updateBases(4, self.show_Base_4.get())).grid(
                column=4, row=2, sticky=W)
        ttk.Checkbutton(
            self.base_Settings_Frame,
            text="5",
            variable=self.show_Base_5,
            onvalue=True,
            offvalue=False,
            command=lambda: updateBases(5, self.show_Base_5.get())).grid(
                column=5, row=2, sticky=W)
        ttk.Checkbutton(
            self.base_Settings_Frame,
            text="6",
            variable=self.show_Base_6,
            onvalue=True,
            offvalue=False,
            command=lambda: updateBases(6, self.show_Base_6.get())).grid(
                column=6, row=2, sticky=W)
        ttk.Checkbutton(
            self.base_Settings_Frame,
            text="7",
            variable=self.show_Base_7,
            onvalue=True,
            offvalue=False,
            command=lambda: updateBases(7, self.show_Base_7.get())).grid(
                column=1, row=3, sticky=W)
        ttk.Checkbutton(
            self.base_Settings_Frame,
            text="8",
            variable=self.show_Base_8,
            onvalue=True,
            offvalue=False,
            command=lambda: updateBases(8, self.show_Base_8.get())).grid(
                column=2, row=3, sticky=W)
        ttk.Checkbutton(
            self.base_Settings_Frame,
            text="9",
            variable=self.show_Base_9,
            onvalue=True,
            offvalue=False,
            command=lambda: updateBases(9, self.show_Base_9.get())).grid(
                column=3, row=3, sticky=W)
        ttk.Checkbutton(
            self.base_Settings_Frame,
            text="10",
            variable=self.show_Base_10,
            onvalue=True,
            offvalue=False,
            command=lambda: updateBases(10, self.show_Base_10.get())).grid(
                column=4, row=3, sticky=W)

        ttk.Checkbutton(
            self.base_Settings_Frame,
            text="11",
            variable=self.show_Base_11,
            onvalue=True,
            offvalue=False,
            command=lambda: updateBases(11, self.show_Base_11.get())).grid(
                column=5, row=3, sticky=W)
        ttk.Checkbutton(
            self.base_Settings_Frame,
            text="12",
            variable=self.show_Base_12,
            onvalue=True,
            offvalue=False,
            command=lambda: updateBases(12, self.show_Base_12.get())).grid(
                column=6, row=3, sticky=W)
        ttk.Checkbutton(
            self.base_Settings_Frame,
            text="13",
            variable=self.show_Base_13,
            onvalue=True,
            offvalue=False,
            command=lambda: updateBases(13, self.show_Base_13.get())).grid(
                column=1, row=4, sticky=W)
        ttk.Checkbutton(
            self.base_Settings_Frame,
            text="14",
            variable=self.show_Base_14,
            onvalue=True,
            offvalue=False,
            command=lambda: updateBases(14, self.show_Base_14.get())).grid(
                column=2, row=4, sticky=W)
        ttk.Checkbutton(
            self.base_Settings_Frame,
            text="15",
            variable=self.show_Base_15,
            onvalue=True,
            offvalue=False,
            command=lambda: updateBases(15, self.show_Base_15.get())).grid(
                column=3, row=4, sticky=W)
        ttk.Checkbutton(
            self.base_Settings_Frame,
            text="16",
            variable=self.show_Base_16,
            onvalue=True,
            offvalue=False,
            command=lambda: updateBases(16, self.show_Base_16.get())).grid(
                column=4, row=4, sticky=W)
        ttk.Checkbutton(
            self.base_Settings_Frame,
            text="17",
            variable=self.show_Base_17,
            onvalue=True,
            offvalue=False,
            command=lambda: updateBases(17, self.show_Base_17.get())).grid(
                column=5, row=4, sticky=W)
        ttk.Checkbutton(
            self.base_Settings_Frame,
            text="18",
            variable=self.show_Base_18,
            onvalue=True,
            offvalue=False,
            command=lambda: updateBases(18, self.show_Base_18.get())).grid(
                column=6, row=4, sticky=W)
        ttk.Checkbutton(
            self.base_Settings_Frame,
            text="19",
            variable=self.show_Base_19,
            onvalue=True,
            offvalue=False,
            command=lambda: updateBases(19, self.show_Base_19.get())).grid(
                column=1, row=5, sticky=W)
        ttk.Checkbutton(
            self.base_Settings_Frame,
            text="20",
            variable=self.show_Base_20,
            onvalue=True,
            offvalue=False,
            command=lambda: updateBases(20, self.show_Base_20.get())).grid(
                column=2, row=5, sticky=W)

        ttk.Checkbutton(
            self.base_Settings_Frame,
            text="21",
            variable=self.show_Base_21,
            onvalue=True,
            offvalue=False,
            command=lambda: updateBases(21, self.show_Base_21.get())).grid(
                column=3, row=5, sticky=W)
        ttk.Checkbutton(
            self.base_Settings_Frame,
            text="22",
            variable=self.show_Base_22,
            onvalue=True,
            offvalue=False,
            command=lambda: updateBases(22, self.show_Base_22.get())).grid(
                column=4, row=5, sticky=W)
        ttk.Checkbutton(
            self.base_Settings_Frame,
            text="23",
            variable=self.show_Base_23,
            onvalue=True,
            offvalue=False,
            command=lambda: updateBases(23, self.show_Base_23.get())).grid(
                column=5, row=5, sticky=W)
        ttk.Checkbutton(
            self.base_Settings_Frame,
            text="24",
            variable=self.show_Base_24,
            onvalue=True,
            offvalue=False,
            command=lambda: updateBases(24, self.show_Base_24.get())).grid(
                column=6, row=5, sticky=W)
        ttk.Checkbutton(
            self.base_Settings_Frame,
            text="25",
            variable=self.show_Base_25,
            onvalue=True,
            offvalue=False,
            command=lambda: updateBases(25, self.show_Base_25.get())).grid(
                column=1, row=6, sticky=W)
        ttk.Checkbutton(
            self.base_Settings_Frame,
            text="26",
            variable=self.show_Base_26,
            onvalue=True,
            offvalue=False,
            command=lambda: updateBases(26, self.show_Base_26.get())).grid(
                column=2, row=6, sticky=W)
        ttk.Checkbutton(
            self.base_Settings_Frame,
            text="27",
            variable=self.show_Base_27,
            onvalue=True,
            offvalue=False,
            command=lambda: updateBases(27, self.show_Base_27.get())).grid(
                column=3, row=6, sticky=W)
        ttk.Checkbutton(
            self.base_Settings_Frame,
            text="28",
            variable=self.show_Base_28,
            onvalue=True,
            offvalue=False,
            command=lambda: updateBases(28, self.show_Base_28.get())).grid(
                column=4, row=6, sticky=W)
        ttk.Checkbutton(
            self.base_Settings_Frame,
            text="29",
            variable=self.show_Base_29,
            onvalue=True,
            offvalue=False,
            command=lambda: updateBases(29, self.show_Base_29.get())).grid(
                column=5, row=6, sticky=W)
        ttk.Checkbutton(
            self.base_Settings_Frame,
            text="30",
            variable=self.show_Base_30,
            onvalue=True,
            offvalue=False,
            command=lambda: updateBases(30, self.show_Base_30.get())).grid(
                column=6, row=6, sticky=W)

        ttk.Checkbutton(
            self.base_Settings_Frame,
            text="31",
            variable=self.show_Base_31,
            onvalue=True,
            offvalue=False,
            command=lambda: updateBases(31, self.show_Base_31.get())).grid(
                column=1, row=7, sticky=W)
        ttk.Checkbutton(
            self.base_Settings_Frame,
            text="32",
            variable=self.show_Base_32,
            onvalue=True,
            offvalue=False,
            command=lambda: updateBases(32, self.show_Base_32.get())).grid(
                column=2, row=7, sticky=W)
        ttk.Checkbutton(
            self.base_Settings_Frame,
            text="33",
            variable=self.show_Base_33,
            onvalue=True,
            offvalue=False,
            command=lambda: updateBases(33, self.show_Base_33.get())).grid(
                column=3, row=7, sticky=W)
        ttk.Checkbutton(
            self.base_Settings_Frame,
            text="34",
            variable=self.show_Base_34,
            onvalue=True,
            offvalue=False,
            command=lambda: updateBases(34, self.show_Base_34.get())).grid(
                column=4, row=7, sticky=W)
        ttk.Checkbutton(
            self.base_Settings_Frame,
            text="35",
            variable=self.show_Base_35,
            onvalue=True,
            offvalue=False,
            command=lambda: updateBases(35, self.show_Base_35.get())).grid(
                column=5, row=7, sticky=W)
        ttk.Checkbutton(
            self.base_Settings_Frame,
            text="36",
            variable=self.show_Base_36,
            onvalue=True,
            offvalue=False,
            command=lambda: updateBases(36, self.show_Base_36.get())).grid(
                column=6, row=7, sticky=W)
 _image_frame.grid(row=1, column=0, sticky='N, S, E,W')
 
 _images = StringVar()
 _img_listbox = Listbox(_image_frame, listvariable=_images, height=6, width=25)
 _img_listbox.grid(row=0, column=0, sticky=(E, W), pady = 5)
 _scrollbar = ttk.Scrollbar(_image_frame, orient=VERTICAL, command=_img_listbox.yview)
 _scrollbar.grid(row=0, column=1, sticky=(S, N), pady=6)
 _img_listbox.configure(yscrollcommand=_scrollbar.set)
 
 _radio_frame = ttk.Frame(_image_frame)
 _radio_frame.grid(row=0, column=2, sticky=(N, S, E, W))
 _choice_lbl = ttk.Label(_radio_frame, text="Choose how to save images :")
 _choice_lbl.grid(row=0, column=0, padx=5, pady=5)
 _save_method = StringVar()
 _save_method.set('img')
 _img_only_radio = ttk.Radiobutton(_radio_frame, text = 'As images', variable= _save_method, value='img')
 _img_only_radio.grid(row=1, column=0, padx=5, pady=2, sticky=W)
 _img_only_radio.configure(state='normal')
 _json_radio = ttk.Radiobutton(_radio_frame, text = 'As json', variable= _save_method, value='json')
 _json_radio.grid(row=2, column=0, padx=5, pady = 2,sticky=W)
 
 def save(): 
     if not config.get('images') :  
         _alert('no images to save')
         return
     if _save_method.get() == 'img':
         dirname = filedialog.askdirectory(mustexist=True)
         _save_images(dirname)
     else:  
         filename = filedialog.asksaveasfilename(initialfile = 'images.json', filetypes = ['JSON', '.json'])
         _save_json(filename)
Beispiel #12
0
    def init_window(self):

        self.master.title('Automated Change Tickets')
        self.pack(fill=BOTH, expand=1)

        if os.path.exists('data/settings.pickle'):
            with open('data/settings.pickle', 'rb') as handle:
                settings = pickle.load(handle)
                if isinstance(settings, dict):
                    settings_exist = True
                    logger.info('Loaded settings')
                else:
                    settings_exist = False
                    logger.info('No settings found.')
        else:
            if not os.path.exists('./data'):
                os.mkdir('./data')
            settings_exist = False

        menu = Menu(self.master)
        self.master.config(menu=menu)

        file = Menu(menu)
        file.add_command(label='Save', command=self.client_exit)
        file.add_command(label='Exit', command=self.client_exit)
        menu.add_cascade(label='File', menu=file)

        edit = Menu(menu)
        edit.add_command(label='Nothing here', command=None)
        menu.add_cascade(label='Edit', menu=edit)

        view = Menu(menu)
        view.add_command(label='View Recent Report', command=None)
        menu.add_cascade(label='View', menu=view)

        self.msg = Message(
            self,
            text="ENTERPRISE BUSINESS INTELLIGENCE",
            bg='#4c9dd5',
            bd=20,
            fg='black',
            aspect=530,
            width=500,
            justify='center',
            font=('TkDefaultFont', 9, 'bold'),
        )
        self.msg.place(relx=0, rely=0, relwidth=1, relheight=0.1)

        campus_key_label = Label(self, text='Campus Key')
        campus_key_label.place(relx=-0.150,
                               rely=0.11,
                               relwidth=0.5,
                               relheight=0.07)

        self.campus_key = StringVar()
        self.campus_key_entry = Entry(self, textvariable=self.campus_key)
        self.campus_key_entry.place(relx=0.03,
                                    rely=0.17,
                                    relwidth=0.4,
                                    relheight=0.07)

        password_label = Label(self, text='Password')
        password_label.place(relx=-0.165,
                             rely=0.25,
                             relwidth=0.5,
                             relheight=0.07)

        self.password_entry = Entry(self, show='*')
        self.password_entry.place(relx=0.03,
                                  rely=0.32,
                                  relwidth=0.4,
                                  relheight=0.07)
        self.password = self.password_entry

        # https://stackoverflow.com/questions/37234071/changing-the-background-color-of-a-radio-button-with-tkinter-in-python-3
        style = ttk.Style()  # Creating style element
        style.configure(
            'Wild.TRadiobutton',  # First argument is the name of style. Needs to end with: .TRadiobutton
            background=
            '#4c9dd5',  # Setting background to our specified color above
            foreground='black')  # You can define colors like this also

        self.app = StringVar(None, 'EBI')
        app_label = Label(self, text="Application")
        app_label.place(relx=-0.155, rely=0.4, relwidth=0.5, relheight=0.07)

        ebi_radial_btn = ttk.Radiobutton(self,
                                         text='EBI',
                                         value='EBI',
                                         variable=self.app,
                                         command=self.app_type,
                                         style='Wild.TRadiobutton')
        ebi_radial_btn.place(relx=0.03, rely=0.47)

        hp_radial_btn = ttk.Radiobutton(self,
                                        text='Healthy Planet',
                                        value="Healthy Planet",
                                        variable=self.app,
                                        command=self.app_type,
                                        style='Wild.TRadiobutton')
        hp_radial_btn.place(relx=0.15, rely=0.47)

        amb_radial_btn = ttk.Radiobutton(self,
                                         text='Ambulatory',
                                         value="Ambulatory",
                                         variable=self.app,
                                         command=self.app_type,
                                         style='Wild.TRadiobutton')
        amb_radial_btn.place(relx=0.35, rely=0.47)

        ini_label = Label(self, text='Master File')
        ini_label.place(relx=-0.11, rely=0.55, relwidth=0.4, relheight=0.07)

        self.options = StringVar()
        self.ini_entry = OptionMenu(self, self.options, *tp.ebi_files)
        self.ini_entry.place(relx=0.025,
                             rely=0.61,
                             relwidth=0.4,
                             relheight=0.07)
        self.ini = self.options

        self.save_settings = IntVar()
        save_setting_box = Checkbutton(self,
                                       text='Save Settings',
                                       selectcolor='#4c9dd5',
                                       variable=self.save_settings,
                                       command='')
        save_setting_box.place(relx=-0.085,
                               rely=0.7,
                               relwidth=0.4,
                               relheight=0.07)

        submit_btn = Button(self,
                            text='Create Change',
                            command=self.submit_clicked)
        submit_btn.place(relx=0.03, rely=0.8)

        clear_btn = Button(self,
                           text='Clear Data',
                           command=self.clear_all_entries)
        clear_btn.place(relx=0.28, rely=0.8)

        load = Image.open('img/Globe-Internet-icon.png')
        render = ImageTk.PhotoImage(load)
        img = Label(self, image=render)
        img.image = render
        img.place(relx=0.5, rely=0.13)

        self.author = Label(self,
                            text='Developed by Matthew L. Moore, MBI, CPHIMS')
        self.author.place(relx=0.48, rely=0.93)

        if settings_exist:
            self.campus_key.set(settings['campus_key'])
            self.app.set(settings['app'])
            self.app_type()
            self.password_entry.focus()
        else:
            self.campus_key_entry.focus()
Beispiel #13
0
    def create_interface(self):

        # Add elements to the menu bar
        self.create_menu_bar()

        iv_frame = ttk.Frame(self.master.control_frame)
        iv_frame.grid(column=0, row=0, sticky=(tk.EW))
        iv_frame.columnconfigure(0, weight=1)

        # Hardware widgets
        hardware_frame = ttk.Labelframe(iv_frame, text='Selected hardware:', padding=(0, 5, 0, 15))
        hardware_frame.grid(column=0, row=0, sticky=(tk.EW))
        hardware_frame.columnconfigure(0, weight=1)

        self.smu_var = tk.StringVar()
        self.smu_box = ttk.Combobox(master=hardware_frame, textvariable=self.smu_var, state="readonly")
        self.smu_box.grid(column=0, row=0, sticky=(tk.EW))
        self.smu_box.bind('<<ComboboxSelected>>', self.select_smu)

        # Set widgets ---------------------------------
        set_frame = ttk.Labelframe(iv_frame, text='Set:', padding=(0, 5, 0, 15))
        set_frame.grid(column=0, row=1, sticky=(tk.EW))
        set_frame.columnconfigure(1, weight=1)

        self.integration_time_button = ttk.Button(master=set_frame, text='Integration time (ms)', command=self.update_integration_time)
        self.integration_time_list = ttk.Combobox(set_frame, state="readonly", width=10)

        self.waiting_time_button = ttk.Button(master=set_frame, text='Waiting time (ms)', command=self.update_waiting_time)
        self.waiting_time_entry = ttk.Entry(master=set_frame, width=10)
        self.waiting_time_entry.insert(0, '10')

        self.integration_time_button.grid(column=0, row=2, sticky=(tk.EW))
        self.integration_time_list.grid(column=1, row=2, sticky=(tk.EW))
        self.waiting_time_button.grid(column=0, row=3, sticky=(tk.EW))
        self.waiting_time_entry.grid(column=1, row=3, sticky=(tk.EW))

        self.source_var = tk.StringVar()
        self.source_var.set('v')
        ttk.Radiobutton(set_frame, text="Voltage (V)", variable=self.source_var, value='v', command=self.mode).grid(column=0, row=4, sticky=(tk.E, tk.W, tk.S))
        ttk.Radiobutton(set_frame, text="Current (A)", variable=self.source_var, value='i', command=self.mode).grid(column=1, row=4, sticky=(tk.E, tk.W, tk.S))

        # Scan widgets ---------------------------------
        scan_frame = ttk.Labelframe(iv_frame, text='Scan:', padding=(0, 5, 0, 15))
        scan_frame.columnconfigure(0, weight=1)
        scan_frame.grid(column=0, row=3, sticky=(tk.EW))

        self.start_var = tk.StringVar()
        self.start_var.set('0.00')
        self.start_label = ttk.Label(scan_frame, text='Start (V): ')
        self.start_label.grid(column=0, row=0, sticky=(tk.E, tk.W, tk.S))
        ttk.Entry(master=scan_frame, width=10, textvariable=self.start_var).grid(column=1, row=0, sticky=(tk.E, tk.W, tk.S))

        self.stop_var = tk.StringVar()
        self.stop_var.set('1.00')
        self.stop_label = ttk.Label(scan_frame, text='Stop (V): ')
        self.stop_label.grid(column=0, row=1, sticky=(tk.E, tk.W, tk.S))
        ttk.Entry(master=scan_frame, width=10, textvariable=self.stop_var).grid(column=1, row=1, sticky=(tk.E, tk.W, tk.S))

        self.step_var = tk.StringVar()
        self.step_var.set('0.05')
        self.step_label = ttk.Label(scan_frame, text='Step (V): ')
        self.step_entry = ttk.Entry(master=scan_frame, width=10, textvariable=self.step_var)

        self.points_label = ttk.Label(scan_frame, text='Points (per decade): ')
        self.points_list = ttk.Combobox(scan_frame, state="readonly", width=10)

        self.compliance_var = tk.StringVar()
        self.compliance_var.set('0.01')
        self.compliance_label = ttk.Label(scan_frame, text='Compliance (A): ')
        self.compliance_label.grid(column=0, row=3, sticky=(tk.E, tk.W, tk.S))
        ttk.Entry(scan_frame, width=10, textvariable=self.compliance_var).grid(column=1, row=3, sticky=(tk.E, tk.W, tk.S))

        # Combobox containing the available hardware
        ttk.Label(scan_frame, text='Range: ').grid(column=0, row=4, sticky=(tk.E, tk.W, tk.S))
        self.range_list = ttk.Combobox(scan_frame,  state="readonly", width=10)
        self.range_list.grid(column=1, row=4, sticky=(tk.E, tk.W, tk.S))

        # The "Run" button is only available if not in batch mode
        if not self.in_batch:
            self.run_button = ttk.Button(master=scan_frame, width=10, text='Run', command=self.start_stop_scan)
            self.run_button.grid(column=1, row=98, sticky=( tk.E, tk.W, tk.S))
Beispiel #14
0
mainframe.columnconfigure(0, weight=1)
mainframe.rowconfigure(0, weight=1)

usern = StringVar()
pasw = StringVar()
gender = StringVar()
type = StringVar()
result = StringVar()
departs = StringVar()

userna = ttk.Entry(mainframe, width=10, textvariable=usern)
userna.grid(column=1, row=2, sticky=(W, E))
paswo = ttk.Entry(mainframe, width=10, textvariable=pasw, show="*")
paswo.grid(column=1, row=3, sticky=(W, E))

male = ttk.Radiobutton(mainframe, text='Male', variable=gender, value='male')
male.grid(column=1, row=4, sticky=(W, E))
female = ttk.Radiobutton(mainframe,
                         text='Female',
                         variable=gender,
                         value='female')
female.grid(column=1, row=5, sticky=(W, E))

admin = ttk.Checkbutton(mainframe,
                        text='Admin',
                        variable=type,
                        onvalue='admin',
                        offvalue='0')
admin.grid(column=1, row=7, sticky=(W, E))
user = ttk.Checkbutton(mainframe,
                       text='User',
Beispiel #15
0
        def generate_settings_pane(self, *args):
            """
            Spawns the plotting settings pane after the data file has been selected.

            Parameters
            ----------
            Arguments returned by trace
            """

            if self.data.filename.get() != 'None' and self.data.filename.get() != '':

                # Interactive
                interactive_label = tk.Label(self, text='Select plot drawing method:')
                interactive_label.grid(row=1, columnspan=3, sticky='n')
                matplotlib_radiobutton = ttk.Radiobutton(self, text='Non-interactive (matplotlib)',
                                                         variable=self.interactive,
                                                         value='False')
                matplotlib_radiobutton.grid_configure(row=2, columnspan=3, sticky='w', padx=250, pady=(10, 10))
                plotly_radiobutton = ttk.Radiobutton(self, text='Interactive (Plotly)',
                                                     variable=self.interactive,
                                                     value='True')
                plotly_radiobutton.grid_configure(row=2, columnspan=3, sticky='e', padx=250, pady=(10, 10))
                self.interactive.set('False')

                # Plot type layout
                plot_type_label = tk.Label(self, text='Plot type:')
                plot_type_label.grid(row=3, columnspan=3, sticky='n')

                time_radiobutton = ttk.Radiobutton(self,
                                                   text='Interactions vs. time',
                                                   variable=self.plottype,
                                                   value='time')
                time_radiobutton.grid_configure(row=4, columnspan=3, sticky='w', padx=100, pady=(5, 20))

                frame_radiobutton = ttk.Radiobutton(self,
                                                    text='Interactions vs. frame number',
                                                    variable=self.plottype,
                                                    value='frame_number')
                frame_radiobutton.grid_configure(row=4, columnspan=3, sticky='n', pady=(5, 20))

                averages_radiobutton = ttk.Radiobutton(self,
                                                       text='Average energy per residue',
                                                       variable=self.plottype,
                                                       value='averages')
                averages_radiobutton.grid_configure(row=4, columnspan=3, sticky='e', padx=(0, 100), pady=(5, 20))
                self.plottype.set('time')

                # Plot settings layout
                self.startingframe.grid_configure(row=5, column=1)
                self.startingframe.label.grid_configure(row=5, column=0)

                self.endframe.grid_configure(row=6, column=1)
                self.endframe.label.grid_configure(row=6, column=0)

                self.starting_residue.grid_configure(row=7, column=1)
                self.starting_residue.label.grid_configure(row=7, column=0)

                self.end_residue.grid_configure(row=8, column=1)
                self.end_residue.label.grid_configure(row=8, column=0)

                self.range_of_values.grid_configure(row=9, column=1)
                self.range_of_values.label.grid_configure(row=9, column=0)

                # Create and set up Run and Quit buttons
                run_plot = TotalGui.RunButton('Run', self)
                run_plot.configure(command=lambda: run_plotting(self))
                run_plot.grid_configure(column=1)
                quit_program = TotalGui.RunButton('Quit', self)
                quit_program.configure(command=self.master.quit)
                quit_program.grid_configure(column=2)
Beispiel #16
0
output_label.grid(row=1, column=2)

# Создание поля для ввода информации и установка на нем фокуса
input_text = Text(app, width=50, height=5, font='Consolas 12', wrap=WORD)
input_text.grid(row=2, column=0)
input_text.focus()

# Создание поле для вывода
output_text = Text(app, width=50, height=5, font='Consolas 12', wrap=WORD)
output_text.grid(row=2, column=2)

# Установка RadioButton
convert_type = StringVar()
convert_type.set('en-ru')

radio_enru = ttk.Radiobutton(app, text='En --> Ru', value='en-ru', variable=convert_type)
radio_enru.grid(row=2, column=1, sticky=N)
radio_ruen = ttk.Radiobutton(app, text='Ru --> En', value='ru-en', variable=convert_type)
radio_ruen.grid(row=2, column=1, sticky=S)

# Создание кнопки для запуска перевода
btn_converter = ttk.Button(app, text='Исправить', width=15, command=converter)
btn_converter.grid(row=3, column=1)

# Отслеживание события нажатия на клавиши Ctrl+V
# input_text.bind('<Control-v>', ctrlV)

# TODO: Сделать кнопку для копирования исправленного текста в буфер обмена

# Запускаем цикл обработки событий
app.mainloop()
Beispiel #17
0
gender_var = tk.StringVar()

gender_combobox = ttk.Combobox(
    win, width=14, textvariable=gender_var,
    state="readonly")  # state--> user cannot type in combobox
gender_combobox["values"] = ("Male", "Female", "Other")
gender_combobox.current(0)
gender_combobox.grid(row=3, column=1)

# Create a RADIO BUTTON  --> select one from many

usertype = tk.StringVar()

radiobtn1 = ttk.Radiobutton(win,
                            text="Student",
                            value="Student",
                            variable=usertype)
radiobtn1.grid(row=4, column=0)

radiobtn2 = ttk.Radiobutton(win,
                            text="Teacher",
                            value="Teacher",
                            variable=usertype)
radiobtn2.grid(row=4, column=1)

#Create a CHECK BUTTON
checkbtn_var = tk.IntVar()

checkbtn = ttk.Checkbutton(win,
                           text="Check if you love me",
                           variable=checkbtn_var)
root = tkinter.Tk()

style = ttk.Style()
style.theme_use("alt")
style.configure("Red.TButton", background="#ff8080")

radio_var = tkinter.StringVar()
radio_var.set("Python")

langs = ("Assembler", "Basic", "Brainfuck", "C", "Python")

f1 = ttk.Frame(root)
f2 = ttk.Frame(root)

radio_buttons = (ttk.Radiobutton(f1, text=lang, value=lang, variable=radio_var)
                 for lang in langs)

showButton = ttk.Button(f2,
                        text="Show var",
                        command=lambda: print(radio_var.get()))

quitButton = ttk.Button(f2, text="Exit", style="Red.TButton", command=exit)

for i, radio_button in enumerate(radio_buttons):
    radio_button.grid(column=1, row=i, sticky="w")

showButton.grid(column=1, row=1, sticky="we", padx=6, pady=6)
quitButton.grid(column=1, row=2, sticky="we", padx=6, pady=6)

f1.grid(column=1, row=1, sticky="ne", padx=6, pady=6)
age_var = tk.StringVar()
age_entrybox = ttk.Entry(root , width=16 , textvariable = age_var)
age_entrybox.grid(row=4 , column=1)


#create combobox
gender_var = tk.StringVar()
gender_combobox = ttk.Combobox(root , width=13 , textvariable=gender_var, state ='readonly')
gender_combobox['value'] = ('Male' , 'Female' , 'Other')
gender_combobox.current(0)
gender_combobox.grid(row=6 , column=1)

#radio button 
usertype = tk.StringVar()
radiobtn1 = ttk.Radiobutton(root , text='Student' , value='Student' , variable=usertype)
radiobtn1.grid(row=8 , column=0)
radiobtn2 = ttk.Radiobutton(root , text='Teacher' , value='Teacher' , variable=usertype)
radiobtn2.grid(row=8 , column=1)
#create button 

#check button 
checkbtn_var = tk.IntVar()
checkbtn = ttk.Checkbutton(root , text ='Check if you fill all the blanks' , variable=checkbtn_var)
checkbtn.grid(row=10 , columnspan=3)

def action():
    user_name = name_var.get()
    user_age = age_var.get()
    user_email = email_var.get()
    user_gender = gender_var.get()
label_1=Label(excel_mframe,text="Excel Merger",
	bd=0,
	bg="#393e46",
	fg='#F4511E',
	font='Times 20',
	width=0,
	height=0	
	)
label_1.pack(fill=X,pady=20)

#-----------Radio Button All----------- 
selct_typ1=tk.IntVar()
selct_typ1.set(3)

#radiobtn1 = ttk.Radiobutton(rframe,text="Ignore Header" ,value=1,variable=selct_typ1)
radiobtn2 = ttk.Radiobutton(rframe,text="Default" ,value=3,variable=selct_typ1)
radiobtn3 = ttk.Radiobutton(rframe,text="Same Header" ,value=2,variable=selct_typ1)

#------------- directory entry------------
entry_d_var = StringVar()
entry_d=Entry(dframe,width=80,textvariable=entry_d_var,bg='#dedede')
entry_d_txt = entry_d_var.get()

#------------directory Button----------
button_d=tk.Button(dframe,relief=RAISED,font=('Times 10 bold'),text='Select Folder' ,fg='#fcf9ec',bg='#132238',command=daction)

#----------merge button-------------------
btn_txt=StringVar()
button_m=tk.Button(mframe,textvariable=btn_txt,command=mfunc,relief=GROOVE,font=('Times 10 bold'),width=22,fg='#fcf9ec',bg='#132238')
btn_txt.set("Merge")
Beispiel #21
0
 def __init__(self):
     tk.Tk.__init__(self)
     self.title('Automata')
     self.geometry('1000x500+200+200')
     tk.Tk.report_callback_exception = self.show_error
     self.left_frame = tk.Frame(self, bd = 1, relief=tk.RIDGE, width = 200)
     self.left_frame.pack(side = tk.LEFT, expand = False, fill = tk.Y)
     def select_algo():
         selection = str(algo_index.get())
         label.config(text = selection)
         
     algo_index = tk.IntVar(self)
     R1 = ttk.Radiobutton(self.left_frame, text="Chuyển từ NNCQ sang NFA", variable=algo_index, value=1, 
                          command=lambda: self.switch_frame(FrameRegextoNFA))
     R1.pack( anchor = tk.W, padx=(0, 10))
     
     R2 = ttk.Radiobutton(self.left_frame, text="Chuyển từ NNCQ sang DFA", variable=algo_index, value=2, 
                       command=lambda: self.switch_frame(FrameRegextoDFA))
     R2.pack( anchor = tk.W, padx=(0, 10))
     
     R3 = ttk.Radiobutton(self.left_frame, text="Chuyển từ NFA sang DFA", variable=algo_index, value=3, 
                       command=lambda: self.switch_frame(FrameNFAtoDFA))
     R3.pack( anchor = tk.W, padx=(0, 10))
          
     R4 = ttk.Radiobutton(self.left_frame, text="Chuyển từ DFA sang NNCQ", variable=algo_index, value=4, 
                       command=lambda: self.switch_frame(FrameDFAtoRegex))
     R4.pack( anchor = tk.W, padx=(0, 10))
     
     R5 = ttk.Radiobutton(self.left_frame, text="Chuyển từ NFA sang NNCQ", variable=algo_index, value=5, 
                       command=lambda: self.switch_frame(FrameNFAtoRegex))
     R5.pack( anchor = tk.W, padx=(0, 10))
     
     R6 = ttk.Radiobutton(self.left_frame, text="Chuyển từ VPTTT sang VPTTP", variable=algo_index, value=6, 
                       command=lambda: self.switch_frame(FrameLGtoRG))
     R6.pack( anchor = tk.W, padx=(0, 10))
     
     R7 = ttk.Radiobutton(self.left_frame, text="Chuyển từ VPCQ sang NFA", variable=algo_index, value=7, 
                       command=lambda: self.switch_frame(FrameGrtoNFA))
     R7.pack( anchor = tk.W, padx=(0, 10))
     
     R8 = ttk.Radiobutton(self.left_frame, text="Chuyển từ NFA sang VPTTP", variable=algo_index, value=8, 
                       command=lambda: self.switch_frame(FrameNFAtoGr))
     R8.pack( anchor = tk.W, padx=(0, 10))
     
     R9 = ttk.Radiobutton(self.left_frame, text="Chuyển từ VPCQ sang NNCQ", variable=algo_index, value=9, 
                       command=lambda: self.switch_frame(FrameGrtoRegex))
     R9.pack( anchor = tk.W, padx=(0, 10))
     
     R9 = ttk.Radiobutton(self.left_frame, text="Chuyển từ NNCQ sang VPTTP", variable=algo_index, value=10, 
                       command=lambda: self.switch_frame(FrameRegextoGr))
     R9.pack( anchor = tk.W, padx=(0, 10))
     
     R10 = ttk.Radiobutton(self.left_frame, text="Tạo mã Hamming", variable=algo_index, value=11, 
                       command=lambda: self.switch_frame(FrameHammingCode))
     R10.pack( anchor = tk.W, padx=(0, 10))
     
     R12 = ttk.Radiobutton(self.left_frame, text="Tìm lỗi trong mã Hamming", variable=algo_index, value=12, 
                       command=lambda: self.switch_frame(FrameHammingCorrect))
     R12.pack( anchor = tk.W, padx=(0, 10))
     
     self.right_frame = tk.Frame(self)
     self.right_frame.pack(side = tk.RIGHT, expand = True, fill = tk.BOTH)
     label = ttk.Label(self.right_frame)
     label.pack()
Beispiel #22
0
	def __init__(self):
		# NOTE: I'm gonna rewrite this function because this is not a good coding style

		self.root = tk.Tk()
		self.root.title(NAME + ' ' + VERSION)
		self.frame1 = ttk.Frame(
			self.root,
			height=720,
			width=1280,
			relief='flat',
			borderwidth=5)
		self.controller = None
		self.keyPress = None
		self.keyboard = None

		# label frames
		self.lf = ttk.Labelframe(self.frame1, text='Command', padding=5)
		self.serial_lf = ttk.Labelframe(self.frame1, text='Serial Settings', padding=5)
		self.camera_lf = ttk.Labelframe(self.frame1, text='Camera', padding=5)
		self.control_lf = ttk.Labelframe(self.frame1, text='Controller', padding=5)

		# frames
		self.camera_f1 = ttk.Frame(self.camera_lf, relief='flat')
		self.camera_f2 = ttk.Frame(self.camera_lf, relief='flat')
		self.serial_f1 = ttk.Frame(self.serial_lf, relief='flat')
		self.serial_f2 = ttk.Frame(self.serial_lf, relief='flat')

		# log area
		self.logArea = MyScrolledText(self.frame1, width=70)
		self.logArea.write = self.write
		sys.stdout = self.logArea

		# load settings file
		self.loadSettings()

		# camera settings
		self.label1 = ttk.Label(self.camera_f1, text='Camera ID:')
		self.camera_entry = None
		if os.name == 'nt':
			try:
				self.locateCameraCmbbox()
			except:
				# Locate an entry instead whenever dll is not imported successfully
				self.camera_entry = ttk.Entry(self.camera_f1, width=5, textvariable=self.settings.camera_id)
		else:
			self.camera_entry = ttk.Entry(self.camera_f1, width=5, textvariable=self.settings.camera_id)

		# open up a camera
		self.camera = Camera()
		self.openCamera()

		self.cb1 = ttk.Checkbutton(
			self.camera_f1,
			padding=5,
			text='Show Realtime',
			onvalue=True,
			offvalue=False,
			variable=self.settings.is_show_realtime)

		self.label2 = ttk.Label(self.serial_f1, text='COM Port:')
		self.entry2 = ttk.Entry(self.serial_f1, width=5, textvariable=self.settings.com_port)
		self.preview = CaptureArea(self.camera, self.settings.fps.get(), self.settings.is_show_realtime, self.camera_lf)

		# activate serial communication
		self.ser = Sender.Sender(self.settings.is_show_serial)
		self.activateSerial()

		self.v1 = tk.StringVar(value='Python')
		self.rb1 = ttk.Radiobutton(self.lf, text='Mcu', value='Mcu', variable=self.v1, command=self.setCommandCmbbox)
		self.rb2 = ttk.Radiobutton(self.lf, text='Python', value='Python', variable=self.v1, command=self.setCommandCmbbox)
		self.reloadCommandButton = ttk.Button(self.lf, text='Reload', command=self.reloadCommands)

		self.reloadButton = ttk.Button(self.camera_f1, text='Reload Cam', command=self.openCamera)
		self.reloadComPort = ttk.Button(self.serial_f1, text='Reload Port', command=self.activateSerial)
		self.startButton = ttk.Button(self.lf, text='Start', command=self.startPlay)
		self.captureButton = ttk.Button(self.camera_f1, text='Capture', command=self.preview.saveCapture)

		self.cb_show_ser = ttk.Checkbutton(
			self.serial_f2,
			padding=5,
			text='Show Serial',
			onvalue=True,
			offvalue=False,
			variable=self.settings.is_show_serial)

		# simple controller
		self.cb_use_keyboard = ttk.Checkbutton(
			self.control_lf, text='Use Keyboard',
			onvalue=True, offvalue=False, variable=self.settings.is_use_keyboard,
			command=self.activateKeyboard)
		self.activateKeyboard()
		self.simpleConButton = ttk.Button(self.control_lf, text='Controller', command=self.createControllerWindow)

		# fps
		self.label3 = ttk.Label(self.camera_f2, text='FPS:')
		self.fps_cb = ttk.Combobox(self.camera_f2, textvariable=self.settings.fps, width=2, state="readonly")
		self.fps_cb['values'] = [45, 30, 15]
		self.fps_cb.bind('<<ComboboxSelected>>', self.applyFps)
		self.fps_cb.current(self.fps_cb['values'].index(self.settings.fps.get()))

		# commands
		self.mcu_name = tk.StringVar()
		self.mcu_cb = ttk.Combobox(self.lf, textvariable=self.mcu_name, state="readonly")
		self.py_name = tk.StringVar()
		self.py_cb = ttk.Combobox(self.lf, textvariable=self.py_name, state="readonly")
		self.loadCommands()

		self.partition1 = ttk.Label(self.camera_f1, text=' / ')
		self.partition2 = ttk.Label(self.camera_f1, text=' / ')

		self.frame1.grid(row=0,column=0,sticky='nwse')
		self.logArea.grid(row=0,column=7,rowspan=5, sticky='nwse')

		# camera
		self.camera_lf.grid(row=0,column=0,columnspan=3, sticky='nw')
		self.camera_f1.grid(row=0,column=0, sticky='nw')
		self.camera_f2.grid(row=2,column=0, sticky='nw', pady=(5, 0))
		self.preview.grid(row=1,column=0,columnspan=7, sticky='nw')
		self.label1.pack(side=tk.LEFT)
		self.camera_entry.pack(side=tk.LEFT, padx=5)

		self.reloadButton.pack(side=tk.LEFT)
		self.partition1.pack(side=tk.LEFT, padx=10)
		self.cb1.pack(side=tk.LEFT)
		self.partition2.pack(side=tk.LEFT, padx=10)
		self.captureButton.pack(side=tk.LEFT)
		self.label3.pack(side=tk.LEFT)
		self.fps_cb.pack(side=tk.LEFT, padx=5)

		# serial
		self.serial_lf.grid(row=1,column=0, sticky='nw')
		self.serial_f1.grid(row=0,column=0, sticky='nw')
		self.serial_f2.grid(row=1,column=0, sticky='nw', pady=(5, 0))
		self.label2.pack(side=tk.LEFT)
		self.entry2.pack(side=tk.LEFT, padx=5)
		self.reloadComPort.pack(side=tk.LEFT)
		self.cb_show_ser.pack(side=tk.LEFT)

		# controller simulator
		self.control_lf.grid(row=1, column=1, sticky='ne')
		self.cb_use_keyboard.grid(row=0, column=0)
		self.simpleConButton.grid(row=1, column=0, pady=(5,0))

		# commands selection
		self.lf.grid(row=1,column=2, rowspan=3, sticky='ne')
		self.rb1.grid(row=0,column=0, sticky='w')
		self.rb2.grid(row=1,column=0, sticky='w')
		self.setCommandCmbbox()
		self.reloadCommandButton.grid(row=3,column=1, sticky='e', pady=(10, 0))
		self.startButton.grid(row=3,column=2, sticky='e', pady=(10, 0))

		for child in self.frame1.winfo_children():
			if not type(child) is ttk.Combobox:
				child.grid_configure(padx=5, pady=5)

		self.root.protocol("WM_DELETE_WINDOW", self.exit)
		self.preview.startCapture()
Beispiel #23
0
threevar.set(False)

checkbutton = ttk.Checkbutton(content,
                              text="Match whole word only",
                              variable=onevar,
                              onvalue=True)
checkbutton1 = ttk.Checkbutton(content,
                               text="Match case",
                               variable=twovar,
                               onvalue=True)
checkbutton2 = ttk.Checkbutton(content,
                               text="Wrap around",
                               variable=threevar,
                               onvalue=True)

radio = ttk.Radiobutton(content, text="Up", value=1)
radio1 = ttk.Radiobutton(content, text="Down", value=2)

content.grid(row=0, column=0)
label.grid(row=0, column=0, sticky='e')
entry.grid(row=0, column=1, padx=2, pady=2, sticky='we', columnspan=9)
label1.grid(row=1, column=0, sticky='e')
entry1.grid(row=1, column=1, padx=2, pady=2, sticky='we', columnspan=9)
label2.grid(row=2, column=6, sticky='w')

button.grid(row=0, column=10, sticky='e' + 'w', padx=2, pady=2)
button1.grid(row=1, column=10, sticky='e' + 'w', padx=2)
button2.grid(row=2, column=10, padx=2)

checkbutton.grid(row=2, column=1, columnspan=4, sticky='w')
checkbutton1.grid(row=3, column=1, columnspan=4, sticky='w')
Beispiel #24
0
def start_now_playing():
    print(device_first.get())
    device = by_name(device_first.get())
    if (device):
        info = device.get_current_track_info()
        marginal.set(track_position(info) + " " + track_name(info))
        print(marginal.get())

def track_name(info):
    return "%s - %s" % (info["artist"], info["title"])
def track_position(info):
    return "[%s/%s]" % (info["position"], info["duration"])

ttk.Label(root, text="Devices:").pack()

# get list of devices
devices = []
for zone in soco.discover():
    devices.append(zone.player_name)
devices.sort()

device_first = StringVar()
for red in devices:
    aaa = ttk.Radiobutton(root, text=red, variable=device_first, value=red)
    aaa.pack()
    print(red)

ttk.Button(text="Select", command=start_now_playing).pack()

root.mainloop()
)
NameEntry.grid(row=1, column=1, columnspan=2, pady=8, padx=5, sticky="w")
PhoneEntry = ttk.Entry(love, width=40)
PhoneEntry.grid(row=2, column=1, columnspan=2, pady=8, padx=5, sticky="w")
EmailEntry = ttk.Entry(love, width=40)
EmailEntry.grid(row=4, column=1, columnspan=2, pady=8, padx=5, sticky="w")
CommentEntry = Text(width=30, height=10)
CommentEntry.grid(row=6, column=1, columnspan=2, pady=8, padx=5, sticky="w")

#Adding Radiobutton and Checkbutton
gender = StringVar()
cbVar = StringVar()
cbVar1 = StringVar()

gender.set("Male")
ttk.Radiobutton(love, text="Male", variable=gender,
                value="Male").grid(row=3, column=1, sticky="w")
ttk.Radiobutton(love, text="Female", variable=gender,
                value="female").grid(row=3, column=2, sticky="w")

ProffesionEntry1 = ttk.Checkbutton(love, text="Web Developer")
ProffesionEntry1.grid(row=5, column=1, sticky="w")
ProffesionEntry1.config(variable=cbVar, onvalue="Yes Web dev", offvalue="No")
ProffesionEntry2 = ttk.Checkbutton(love, text="Graphics designer")
ProffesionEntry2.grid(row=5, column=2)
ProffesionEntry2.config(variable=cbVar1,
                        onvalue="Yes Graph des.",
                        offvalue="Not at all")

#Adding Buttons
SubmitButton = ttk.Button(love, text="Submit")
SubmitButton.grid(row=7, column=0, sticky="w", ipadx=8, ipady=6)
Beispiel #26
0
def pref(root):
    window = Toplevel(root)
    window.title("Preferences")
    window.configure(relief="sunken", height=240, width=240)

    notebook = ttk.Notebook(window)
    notebook.pack()

    #Frame 1(LabelFrames)
    frame1 = ttk.Frame(notebook, padding=(10, 10, 10, 10))
    notebook.add(frame1, text="Label Frames")

    labelframe = ttk.Labelframe(frame1, text="LF", height=120, width=120)
    labelframe.grid(column=0, row=0)

    labelframe2 = ttk.Labelframe(frame1,
                                 text="LF",
                                 height=120,
                                 width=120,
                                 labelanchor="sw")
    labelframe2.grid(column=0, row=1)

    labelframe3 = ttk.Labelframe(frame1,
                                 text="LF",
                                 height=120,
                                 width=120,
                                 labelanchor="ne")
    labelframe3.grid(column=1, row=0)

    labelframe4 = ttk.Labelframe(frame1,
                                 text="LF",
                                 height=120,
                                 width=120,
                                 labelanchor="se")
    labelframe4.grid(column=1, row=1)

    #Frame2
    frame2 = ttk.Frame(notebook)
    notebook.add(frame2, text="Paned Windows", padding=(10, 10, 10, 10))

    panedframe1 = ttk.PanedWindow(frame2, width=200, height=100).pack()
    framepaned = ttk.Frame(panedframe1,
                           relief="groove",
                           padding=(10, 10, 10, 10)).pack()
    panedframe2 = ttk.PanedWindow(frame2, width=200, height=100).pack()
    framepaned2 = ttk.Frame(panedframe2,
                            relief="groove",
                            padding=(10, 10, 10, 10)).pack()

    style = ttk.Style()
    varlist = StringVar()
    varlist.set(style.theme_use('default'))
    style.configure('TRadiobutton',
                    background="blue",
                    foreground="yellow",
                    font="helvetica 8")

    lf = Listbox(window)
    for t in style.theme_names():

        ttk.Radiobutton(lf,
                        text=t,
                        variable=varlist,
                        value=t,
                        command=lambda: style.theme_use(varlist.get())).pack()

    lf.pack()

    window.mainloop()
Beispiel #27
0
        outTemp['text'] = "Whoops!"


window = tk.Tk()

# The radio buttons
radioVar = tk.IntVar(window, 1)
btnVals = {
    "F to C": 1,
    "C to F": 2,
}
btnNum = 0
for (text, value) in btnVals.items():
    btnNum += 1
    currBtn = ttk.Radiobutton(window,
                              text=text,
                              variable=radioVar,
                              value=value)
    currBtn.bind("<Button-1>", calcTemp)
    currBtn.grid(row=btnNum, column=1, padx=10, pady=5)

# The in-Temperature entry field
inTemp = tk.Entry(width=8)
inTemp.bind("<Key>", calcTemp)
inTemp.grid(row=3, column=0, padx=4, pady=5)

#The arrow
arrow = tk.Label(text="\N{RIGHTWARDS BLACK ARROW}")
arrow.grid(row=3, column=1, padx=2)

#And the output field
outTemp = tk.Label(text="", background="white", relief="raised", width=8)
Beispiel #28
0
def build_radio(par, col, row, text, val, var):
    """ var is tk.IntVar() accessed through x.get()
    val is value of option """
    x = ttk.Radiobutton(par, text=text, variable=var, value=val)
    x.grid(column=col, row=row, padx=10, pady=2, ipadx=10, ipady=2)
    return x
Beispiel #29
0
def window_layout():
    """ This function designs and shows the GUI window

    This function determines the labels, buttons and figures that show on the
    GUI window, along with their position, appearances and commands.

    Returns:
        None
    """
    global o_img, p_img, file_upload
    o_img = None
    p_img = None

    def get_user_metric():
        """ Callback function of 'Get my info' button

        This function takes the entered user id and requests the user
        information from server. If no user id entered, a message will show.

        :return:
            None
        """
        user_name = id_entry.get()
        if user_name == '':
            messagebox.showinfo('Error', 'Please enter your user name.')
            return
        r = requests.get(address + "/api/user_metrics/" + user_name)
        user_metric = r.json()
        info_n = r.status_code
        if info_n == 200:
            t = user_metric['user_creation_time']
            n_h = user_metric['num_actions']['histogram_eq']
            n_c = user_metric['num_actions']['contrast_str']
            n_l = user_metric['num_actions']['log_compress']
            n_r = user_metric['num_actions']['reverse_vid']
            messagebox.showinfo(
                'Your Info', 'Time you created account:{} \n '
                'Histogram equalization: {} \n '
                'Contras stretch: {} \n Log '
                'compress: {} \n Reverse video: '
                '{}'.format(t, n_h, n_c, n_l, n_r))
        else:
            messagebox.showinfo('Error', user_metric)
        return None

    def select_file():
        """ Callback function of the 'Upload new image(s)'

        This function allows the user to select one or more images or a zip
        file to upload. The selected file name shows up on the window after
        selecting.

        Returns:
            None
        """
        global file_upload
        file_upload = list(fd.askopenfilenames())
        if file_upload:
            if len(file_upload) == 1:
                selected_label.config(text='{}'.format(file_upload[0]))
            else:
                selected_label.config(text='{} ...'.format(file_upload[0]))
        return None

    def select_request():
        """ Callback function of the 'View a previous request' button

        This function takes entered user id and requests the user information
        from server. It parse the returned information to options in the
        drop down bar. If the user has no previous request, a message will
        show.

        Returns:
            None
        """
        user_name = id_entry.get()
        if user_name == '':
            messagebox.showinfo('Error', 'Please enter your user name.')
            return
        r = requests.get(address + "/api/previous_request/" + user_name)
        pre_req = r.json()
        if type(pre_req) == dict:
            req_keys = []
            for key, value in pre_req.items():
                f_n = value['filename']
                t_u = value['time_uploaded']
                p = value['procedure']
                k = key + ':' + f_n + t_u + p
                req_keys.append(k)
            open_req_cb['value'] = req_keys
        else:
            messagebox.showinfo('Error', pre_req)
        return None

    def unzip_encode_img():
        """ This function encode images to pass to the server.

        This function is called after the 'Start processing' button is clicked.
        It encodes the selected image files and convert them to utf-8 string.
        If the selected file is a zip folder, it unzip it to images first.

        Returns:
            int: the number of images
            string: the format of the images
            list: the encoded images
        """
        global file_upload
        file_format = file_upload[0].split('.')[-1]
        img = []
        if file_format != 'zip':
            img_num = len(file_upload)
            for i in range(img_num):
                with open(file_upload[i], 'rb') as image_file:
                    img_b64b = base64.b64encode(image_file.read())
                img.append(str(img_b64b, encoding='utf-8'))
        else:
            with ZipFile(file_upload[0], 'r') as zip_file:
                file_list = zip_file.namelist()
                img_num = len(file_list)
                print(file_list)
                for member in file_list:
                    if member[0] != '_' and member[0] != '.':
                        file_format = member.split('.')[-1]
                        with zip_file.open(member) as image_file:
                            img_b64b = base64.b64encode(image_file.read())
                            img.append(str(img_b64b, encoding='utf-8'))
        return img_num, file_format, img

    def show_time(r_dict):
        """ This function shows processing time information

        This function is called after the 'Start processing' button is clicked,
        and the processing result is returned. It takes the result and show the
        information of time uploaded, time to process and image size.

        Args:
            r_dict (dict): returned information from the server
        Returns;
            None
        """
        t_upload = r_dict['time_uploaded']
        t_process = r_dict['time_to_process']
        img_size = r_dict['img_size'][0]
        t_up_label.config(text='Time uploaded: {}'.format(t_upload))
        t_pr_label.config(text='Time to process: {} s'.format(t_process))
        img_size_label.config(
            text='Image size: {}*{}'.format(img_size[0], img_size[1]))
        return None

    def show_hist(r_dict):
        """ This function shows histograms

        This function is called after the 'Start processing' button is clicked,
        and the processing result is returned. It takes the result tuple and
        plot it on the window.

        Args:
            r_dict (dict): returned information from the server
        Returns:
            None
        """
        o_hist = r_dict['original_histograms'][0]
        fig_o = plt.figure(figsize=(4, 2.4))
        fig_r1 = plt.subplot(3, 1, 1)
        fig_r1.plot(o_hist['red'][0],
                    o_hist['red'][1],
                    color='red',
                    linewidth=2)
        fig_r1.set_title('Red channel')
        fig_g1 = plt.subplot(3, 1, 2)
        fig_g1.plot(o_hist['green'][0],
                    o_hist['green'][1],
                    color='green',
                    linewidth=2)
        fig_g1.set_title('Green channel')
        fig_b1 = plt.subplot(3, 1, 3)
        fig_b1.plot(o_hist['blue'][0],
                    o_hist['blue'][1],
                    color='blue',
                    linewidth=2)
        fig_b1.set_title('Blue channel')
        o_plot = FigureCanvasTkAgg(fig_o, root)
        o_plot.draw()
        o_plot._tkcanvas.grid(column=0, row=row_4 + 2, columnspan=2, rowspan=2)

        p_hist = r_dict['processed_histograms'][0]
        fig_p = plt.figure(figsize=(4, 2.4))
        fig_r2 = plt.subplot(3, 1, 1)
        fig_r2.plot(p_hist['red'][0],
                    p_hist['red'][1],
                    color='red',
                    linewidth=2)
        fig_r2.set_title('Red channel')
        fig_g2 = plt.subplot(3, 1, 2)
        fig_g2.plot(p_hist['green'][0],
                    p_hist['green'][1],
                    color='green',
                    linewidth=2)
        fig_g2.set_title('Green channel')
        fig_b2 = plt.subplot(3, 1, 3)
        fig_b2.plot(p_hist['blue'][0],
                    p_hist['blue'][1],
                    color='blue',
                    linewidth=2)
        fig_b2.set_title('Blue channel')
        p_plot = FigureCanvasTkAgg(fig_p, root)
        p_plot.draw()
        p_plot._tkcanvas.grid(column=2, row=row_4 + 2, columnspan=2, rowspan=2)
        return None

    def start_p():
        """ Callback function of the 'Start processing' button

        This function encode the images, pass it to the server along with other
        processing information, and takes the returned result. It then show or
        plot the returned result.

        Returns:
            None
        """
        global o_img, p_img, file_upload
        try:
            len_f = len(file_upload)
            if len_f < 1:
                raise NameError('error')
        except NameError:
            messagebox.showinfo('Error', 'Please select file')
            return None

        img_num, file_format, o_img = unzip_encode_img()
        p_dict = {
            'filename': selected_label.cget('text').split('/')[-1],
            'imgs': o_img,
            'username': id_entry.get(),
            'num_img': img_num,
            'procedure': p_method.get(),
            'img_format': file_format
        }
        r = requests.post(address + "/api/process_img", json=p_dict)
        result = r.json()
        if type(result) == dict:
            show_time(result)
            show_hist(result)
            p_img = result['processed_img']
        else:
            messagebox.showinfo('Error', result)
        return None

    def combo_callback(self):
        """ Callback function of the drop down bar

        This funtion shows the selected previous request. It passes the user id
        and request id to the server, and show or plot the returned
        information.

        Returns:
             None
        """
        global o_img, p_img
        request_name = open_req_cb.get()
        selected_label.config(text='{}'.format(request_name))
        request_id = selected_label.cget('text').split(':')[0]
        user_name = id_entry.get()
        r = requests.get(address + "/api/retrieve_request/" + user_name + '/' +
                         request_id)
        result = r.json()
        p_method.set(result['procedure'])
        selected_label.config(text=result['filename'])
        show_time(result)
        show_hist(result)
        o_img = result['original_img']
        p_img = result['processed_img']

        return None

    def decode_resize_img(img):
        """ This function decode and resize images to show

        This function takes the utf-8 string formatted images and decode it to
        images that can be plotted. It also resizes them so that they fit the
        window.

        Args:
            img (str): encoded images from the server

        Returns:
            PhotoImage: image to be plotted.
        """
        img = Image.open(io.BytesIO(base64.b64decode(img)))
        img = ImageTk.PhotoImage(img.resize((500, 300)))
        return img

    def download_image(dl_format):
        """ Callback function of the 'Download image(s)' button

        This function allows user to select the folder where they would like to
        download their processed images and name the image or zip file. If more
        than one images is to be downloaded, they will be downloaded as zip.
        User can select the format.

        Args:
            dl_format (string): user selected format to download the images

        Returns:
            None
        """
        global p_img
        if p_img is None:
            messagebox.showinfo('Error', 'No image to download.')
            return
        desired_name = fd.asksaveasfilename(initialdir=os.getcwd(),
                                            title='Select directory')
        if desired_name == '':
            return None
        print(desired_name)
        img_num = len(p_img)
        if img_num > 1:
            try:
                os.mkdir('./temp/')
            except FileExistsError:
                print('temp folder already exists')
            file_path = r'./temp/'
            for i in range(img_num):
                decoded = decode_b64(p_img[i], 'JPG')
                temp_file_name = str(i) + '.' + dl_format.get()
                mpimg.imsave(file_path + temp_file_name,
                             decoded,
                             format=dl_format.get().upper())
            zip_file = ZipFile(desired_name + '.zip', 'w')
            for i in range(img_num):
                zip_file.write("./temp/{}.{}".format(i, dl_format.get()),
                               arcname="{}.{}".format(i, dl_format.get()))
            zip_file.close()
            shutil.rmtree(file_path)
        else:
            one_img = p_img[0]
            decoded = decode_b64(one_img, 'JPG')
            final_file_name = desired_name + '.' + dl_format.get()
            mpimg.imsave(final_file_name,
                         decoded,
                         format=dl_format.get().upper())
        return None

    def display_img():
        """ Callback function of the 'Display and compare images' button

        This function uses a pop-up window to show the original image and
        processed image.

        Returns:
            None
        """
        global o_img, p_img
        if o_img is None or p_img is None:
            messagebox.showinfo('Error', 'No image to compare.')
            return
        o_img_first = decode_resize_img(o_img[0])
        p_img_first = decode_resize_img(p_img[0])
        disp_window = Toplevel()
        o_img_label = ttk.Label(disp_window, text='Original Image')
        o_img_label.grid(column=0, row=0)
        o_img_canv = Canvas(disp_window, bg='white', width=500, height=300)
        o_img_canv.grid(column=0, row=1)
        o_img_canv.create_image(250, 200, image=o_img_first)
        p_img_label = ttk.Label(disp_window, text='Processed Image')
        p_img_label.grid(column=1, row=0)
        p_img_canv = Canvas(disp_window, bg='white', width=500, height=300)
        p_img_canv.grid(column=1, row=1)
        p_img_canv.create_image(250, 200, image=p_img_first)
        disp_window.mainloop()
        return None

    def decode_b64(base64_string, img_format):
        """Decodes a single image from b64 format

        Args:
            base64_string (str): image before decoding
            img_format (str): what format the string was encoded in

        Returns:
            ndarray: image in matrix form
        """
        image_bytes = base64.b64decode(base64_string)
        image_buf = io.BytesIO(image_bytes)
        return mpimg.imread(image_buf, format=img_format)

    def encode_b64(image, img_format):
        """Encodes a single image with b64

        Args:
            image (ndarray): image in matrix form
            img_format (str): format to encode image

        Returns:
            str: encoded image
        """
        image_buf = io.BytesIO()
        mpimg.imsave(image_buf, image, format=img_format)
        image_buf.seek(0)
        b64_bytes = base64.b64encode(image_buf.read())
        return str(b64_bytes, encoding='utf-8')

    root = Tk()
    root.title('BME547 - Image Processing')

    # User ID input
    row_1 = 0
    id_label = ttk.Label(root, text='1. Please enter your name')
    id_label.grid(column=0, row=row_1, sticky=W)
    id_entry = ttk.Entry(root)
    id_entry.grid(column=1, row=row_1)
    user_info_btn = ttk.Button(root,
                               text='Get my user info',
                               command=get_user_metric)
    user_info_btn.grid(column=2, row=row_1)

    # Select action
    row_2 = row_1 + 1
    req_option = StringVar()
    action_label = ttk.Label(root, text='2. Please select an action')
    action_label.grid(column=0, row=row_2, sticky=W)
    new_file_btn = ttk.Button(root,
                              text='Upload new file(s)',
                              command=select_file)
    new_file_btn.grid(column=0, row=row_2 + 1)
    open_req_btn = ttk.Button(root,
                              text='View a previous request',
                              command=select_request)
    open_req_btn.grid(column=1, row=row_2 + 1)
    open_req_cb = ttk.Combobox(root, textvariable=req_option)
    open_req_cb.bind("<<ComboboxSelected>>", combo_callback)
    open_req_cb.grid(column=2, row=row_2 + 1, columnspan=3, sticky=W)
    selected_label = ttk.Label(root, text='None file or request selected')
    selected_label.grid(column=0, row=row_2 + 2, columnspan=5, sticky=W)

    # Choose process
    row_3 = row_2 + 3
    process_label = ttk.Label(root, text='3. Please choose the procedure')
    process_label.grid(column=0, row=row_3, columnspan=2, sticky=W)
    p_method = StringVar()
    p_method.set('histogram_eq')
    p_h_btn = ttk.Radiobutton(root,
                              text='Histogram Equalization',
                              variable=p_method,
                              value='histogram_eq')
    p_h_btn.grid(column=0, row=row_3 + 1)
    p_c_btn = ttk.Radiobutton(root,
                              text='Contrast Stretching',
                              variable=p_method,
                              value='contrast_str')
    p_c_btn.grid(column=1, row=row_3 + 1)
    p_l_btn = ttk.Radiobutton(root,
                              text='Log Compression',
                              variable=p_method,
                              value='log_compress')
    p_l_btn.grid(column=2, row=row_3 + 1)
    p_r_btn = ttk.Radiobutton(root,
                              text='Reverse Video',
                              variable=p_method,
                              value='reverse_vid')
    p_r_btn.grid(column=3, row=row_3 + 1)
    start_btn = ttk.Button(root, text='Start Processing', command=start_p)
    start_btn.grid(column=4, row=row_3 + 1)

    # Show results
    row_4 = row_3 + 2
    result_label = ttk.Label(root, text='4. Result')
    result_label.grid(column=0, row=row_4, sticky=W)

    t_up_label = ttk.Label(root, text='Time uploaded:')
    t_up_label.grid(column=0, row=row_4 + 1, columnspan=2)
    t_pr_label = ttk.Label(root, text='Time to process:')
    t_pr_label.grid(column=2, row=row_4 + 1, columnspan=2)
    img_size_label = ttk.Label(root, text='Image size:')
    img_size_label.grid(column=4, row=row_4 + 1)

    o_hist_canv = Canvas(root,
                         borderwidth=5,
                         relief=GROOVE,
                         width=400,
                         height=240)
    o_hist_canv.grid(column=0, row=row_4 + 2, columnspan=2, rowspan=2)
    o_hist_canv.create_text(70, 20, text='Original Histogram')
    p_hist_canv = Canvas(root,
                         borderwidth=5,
                         relief=GROOVE,
                         width=400,
                         height=240)
    p_hist_canv.grid(column=2, row=row_4 + 2, columnspan=2, rowspan=2)
    p_hist_canv.create_text(70, 20, text='Processed Histogram')
    disp_btn = ttk.Button(root,
                          text='Display and compare images',
                          command=display_img)
    disp_btn.grid(column=4, row=row_4 + 3, sticky=S)

    # Download choices
    row_5 = row_4 + 4
    download_label = ttk.Label(root, text='5. Download processed image(s)')
    download_label.grid(column=0, row=row_5, sticky=W)

    d_format = StringVar()
    d_format.set('jpg')
    jpg_btn = ttk.Radiobutton(root, text='JPG', variable=d_format, value='jpg')
    jpg_btn.grid(column=0, row=row_5 + 1)
    jpeg_btn = ttk.Radiobutton(root,
                               text='JPEG',
                               variable=d_format,
                               value='jpeg')
    jpeg_btn.grid(column=1, row=row_5 + 1)
    png_btn = ttk.Radiobutton(root, text='PNG', variable=d_format, value='png')
    png_btn.grid(column=2, row=row_5 + 1)
    tiff_btn = ttk.Radiobutton(root,
                               text='TIFF',
                               variable=d_format,
                               value='tiff')
    tiff_btn.grid(column=3, row=row_5 + 1)

    d_btn = ttk.Button(root,
                       text='Download',
                       command=lambda i=d_format: download_image(i))
    d_btn.grid(column=4, row=row_5 + 1)

    root.columnconfigure(0, minsize=170)
    root.columnconfigure(1, minsize=170)
    root.columnconfigure(2, minsize=170)
    root.columnconfigure(3, minsize=170)
    root.columnconfigure(4, minsize=170)

    root.mainloop()
    return
color_blue = "blue"
color_red = 'red'
color_gold = 'gold'


def rad_call():
    # Radiobutton callback
    rad_sel = rad_var.get()
    if rad_sel == 1:
        win.configure(background=color_blue)
    elif rad_sel == 2:
        win.configure(background=color_red)
    elif rad_sel == 3:
        win.configure(background=color_gold)


# create three Radiobuttons using one variable
rad_var = tk.IntVar()

rad1 = tk.Radiobutton(win, text=color_blue, variable=rad_var, value=1, command=rad_call)
rad1.grid(row=5, column=0, sticky=tk.W, columnspan=3)

rad2 = tk.Radiobutton(win, text=color_red, variable=rad_var, value=2, command=rad_call)
rad2.grid(row=5, column=1, sticky=tk.W, columnspan=3)

rad3 = ttk.Radiobutton(win, text=color_gold, variable=rad_var, value=3, command=rad_call)
rad3.grid(row=5, column=2, sticky=tk.W, columnspan=3)

win.mainloop()