Exemplo n.º 1
0
    def __init__(self, parent, *args, **kwargs):
        tk.Frame.__init__(self, parent, *args, **kwargs)
        self.parent = parent

        #navigation frame  ------------------------------------------------------
        navbar = tk.Frame(borderwidth=3, background="white").pack(side="left")
        Label(navbar, text="Select Term").pack(side="top")

        TERMS = [
            ("F16"),
            ("S17"),
            ("F17"),
        ]

        self.term = tk.StringVar()
        self.term.set("F16")

        for text in TERMS:
            b = tk.Radiobutton(navbar,
                               text=text,
                               bg="light blue",
                               value=text,
                               variable=self.term,
                               command=self.updateStatus)
            b.pack(side="top")

        b.radiobutton = self.term

        periodW = tk.Frame(borderwidth=3).pack(side="right")
        Label(periodW, text="Select Period").pack(side="left")

        self.period = tk.IntVar()
        self.period.set(3)

        for periodVal in range(1, 9):
            p = tk.Radiobutton(periodW,
                               text=periodVal,
                               bg="light blue",
                               value=periodVal,
                               variable=self.period,
                               command=self.updateStatus)
            p.pack(side="left")

        p.radiobutton = self.period

        #Games __________________________________________________________________________________________________________
        gamesW = tk.Frame()
        gamesW.pack(side="top")
        Label(gamesW, text="Select Game").pack(side="top")

        #listbox widget to select game
        self.game = tk.StringVar()
        self.game.set("Protobot")

        self.gameListBox = tk.Listbox(gamesW, height=4, selectmode="SINGLE")
        self.gameListBox.pack(side="top")
        self.gameListBox.bind("<Double-Button-1>", self.OnDouble)

        #populate list box
        try:
            conn = sqlite3.connect('./RoboMatch.db')
            curs = conn.cursor()

            for row in curs.execute("SELECT game FROM games ORDER BY gameid"):
                self.gameListBox.insert(tk.END, row)
            conn.close()

        except DatabaseError:
            print("teams reading exception")
            e = sys.exc_info()[0]
            print(">Error: %s</p>" % e)
            pass

        #Frame for listing students -----------------------------------------------------------------------------------
        studentsW = tk.Frame()
        studentsW.pack(side="right")
        Label(studentsW, text="Students").pack(side="top")

        student = tk.StringVar()

        self.studentsListBox = tk.Listbox(studentsW,
                                          height=4,
                                          selectmode="SINGLE")
        self.studentsListBox.pack(side="left")
        #studentsListBox.bind("<Double-Button-1>", self.OnDouble)

        #populate list box
        try:
            conn = sqlite3.connect('./RoboMatch.db')
            curs = conn.cursor()

            curs.execute(
                'SELECT * FROM students WHERE term = ? AND period = ?',
                (self.term.get(), self.period.get()))
            all_rows = curs.fetchall()
            #print (all_rows)

            self.studentsListBox.delete(0, tk.END)
            for row in all_rows:
                self.studentsListBox.insert(tk.END, row)
            conn.close()

        except DatabaseError:
            print("students reading exception")
            e = sys.exc_info()[0]
            print(">Error: %s</p>" % e)
            pass

        #Frame for teams -------------------------------------------------------------------
        teamW = tk.Frame()
        teamW.pack()
        Label(text="Teams").pack(side="right")

        team = tk.StringVar()

        self.teamsListBox = tk.Listbox(teamW, height=12, selectmode="SINGLE")
        self.teamsListBox.pack(side="left")
        #studentsListBox.bind("<Double-Button-1>", self.OnDouble)

        #populate list box
        try:
            conn = sqlite3.connect('./RoboMatch.db')
            curs = conn.cursor()

            #print('SELECT * FROM teams WHERE term = ? AND period = ?', (self.term.get(), self.period.get()))

            #curs.execute('SELECT * FROM teams WHERE term = ? AND period = ?', (self.term.get(), self.period.get()))
            curs.execute('SELECT * FROM teams')
            all_rows = curs.fetchall()
            print("teams data")
            print(all_rows)

            self.teamsListBox.delete(0, tk.END)
            for row in all_rows:
                self.teamsListBox.insert(tk.END, row)
            conn.close()

        except DatabaseError:
            print("teams reading exception")
            e = sys.exc_info()[0]
            print(">Error: %s</p>" % e)
            pass

        #Frame for matches
        matchW = tk.Frame()
        matchW.pack()
        Label(text="Matches").pack(side="right")
        master = tk.Frame()
        master.pack()
Exemplo n.º 2
0
    def __init__(self, parent):
        self.parent = parent
        Tk.Toplevel.__init__(self)

        self.wm_title('FFT (%d,%d) Settings' % self.parent.FigWrap.pos)
        self.parent = parent
        frm = ttk.Frame(self)
        frm.pack(fill=Tk.BOTH, expand=True)
        self.protocol('WM_DELETE_WINDOW', self.OnClosing)
        self.bind('<Return>', self.TxtEnter)

        # Create the OptionMenu to chooses the Chart Type:
        self.ctypevar = Tk.StringVar(self)
        self.ctypevar.set(self.parent.chartType)  # default value
        self.ctypevar.trace('w', self.ctypeChanged)

        ttk.Label(frm, text="Choose Chart Type:").grid(row=0, column=0)
        ctypeChooser = ttk.OptionMenu(frm, self.ctypevar,
                                      self.parent.chartType,
                                      *tuple(self.parent.ChartTypes))
        ctypeChooser.grid(row=0, column=1, sticky=Tk.W + Tk.E)

        # the Radiobox Control to choose the Field Type
        self.FFTList = ['FFT_Bz', 'FFT_perp_in_plane', 'FFT_Ex', 'Chi']
        self.FFTTypeVar = Tk.IntVar()
        self.FFTTypeVar.set(self.parent.GetPlotParam('FFT_type'))

        ttk.Label(frm, text='Choose FFT Plot:').grid(row=2, sticky=Tk.W)

        for i in range(len(self.FFTList)):
            ttk.Radiobutton(frm,
                            text=self.FFTList[i],
                            variable=self.FFTTypeVar,
                            command=self.RadioFFT,
                            value=i).grid(row=3 + i, sticky=Tk.W)

        # Now the field lim
        self.setZminVar = Tk.IntVar()
        self.setZminVar.set(self.parent.GetPlotParam('set_y_min'))
        self.setZminVar.trace('w', self.setZminChanged)

        self.setZmaxVar = Tk.IntVar()
        self.setZmaxVar.set(self.parent.GetPlotParam('set_y_max'))
        self.setZmaxVar.trace('w', self.setZmaxChanged)

        self.Zmin = Tk.StringVar()
        self.Zmin.set(str(self.parent.GetPlotParam('y_min')))

        self.Zmax = Tk.StringVar()
        self.Zmax.set(str(self.parent.GetPlotParam('y_max')))

        cb = ttk.Checkbutton(frm, text='Set y min', variable=self.setZminVar)
        cb.grid(row=3, column=2, sticky=Tk.W)
        self.ZminEnter = ttk.Entry(frm, textvariable=self.Zmin, width=7)
        self.ZminEnter.grid(row=3, column=3)

        cb = ttk.Checkbutton(frm, text='Set y max', variable=self.setZmaxVar)
        cb.grid(row=4, column=2, sticky=Tk.W)

        self.ZmaxEnter = ttk.Entry(frm, textvariable=self.Zmax, width=7)
        self.ZmaxEnter.grid(row=4, column=3)

        # Now whether or not the x and y axes should be in logspace
        self.xLogVar = Tk.IntVar()
        self.xLogVar.set(self.parent.GetPlotParam('xLog'))
        self.xLogVar.trace('w', self.xLogChanged)

        self.yLogVar = Tk.IntVar()
        self.yLogVar.set(self.parent.GetPlotParam('yLog'))
        self.yLogVar.trace('w', self.yLogChanged)

        cb = ttk.Checkbutton(frm,
                             text='k-axis logscale',
                             variable=self.xLogVar)
        cb.grid(row=7, column=0, sticky=Tk.W)

        cb = ttk.Checkbutton(frm,
                             text='y-axis logscale',
                             variable=self.yLogVar)
        cb.grid(row=8, column=0, sticky=Tk.W)
Exemplo n.º 3
0
    def __init__(self, master):

        # Graphical User Interface ----------------------------------------------

        self.s = ttk.Style()
        self.s.configure('TLabel', foreground='Black', background='white')
        self.s.configure('TButton', foreground='black', background='white')
        self.s.configure('about.TLabel',
                         forground='black',
                         background='#f2d211')
        self.s.configure('TEntry', foreground='Blue')
        self.s.configure('TCheckbutton',
                         foreground='black',
                         background='white')
        self.s.configure('TMenubutton',
                         background='white',
                         foreground='black',
                         width=25)
        self.s.configure('TLabelframe', foreground='black', background='white')
        self.s.configure('TFrame', background='white')

        # Window properties -----------------------------------------------------
        self.master = master
        master.wm_title("LSFR for Python")
        master.resizable(0, 0)
        # -----------------------------------------------------------------------

        # Variables -------------------------------------------------------------
        self.option = tk.StringVar(master)  # default fit type
        self.option.set(fitsTypes[0])  # default fit type

        self.directoryString = tk.StringVar(master)
        self.fileNameString = tk.StringVar(master)
        self.numberOfPointsString = tk.StringVar(master)

        self.gridLineCheckCmd = tk.IntVar()  # Gridline check command
        self.gridLineCheckCmd.set(1)

        self.residualsCheckCmd = tk.IntVar()  # resiuduals check command
        self.residualsCheckCmd.set(1)

        self.parametersCheckCmd = tk.IntVar()  # parametres check command
        self.parametersCheckCmd.set(1)

        self.xMinAutoCheckCmd = tk.IntVar()  # X min check command
        self.xMinAutoCheckCmd.set(1)

        self.xMaxAutoCheckCmd = tk.IntVar()  # X max check command
        self.xMaxAutoCheckCmd.set(1)

        self.yMinAutoCheckCmd = tk.IntVar()  # Y min check command
        self.yMinAutoCheckCmd.set(1)

        self.yMaxAutoCheckCmd = tk.IntVar()  # Y max check command
        self.yMaxAutoCheckCmd.set(1)
        # -----------------------------------------------------------------------
        # Frames ----------------------------------------------------------------
        self.frame0 = tk.Frame(master, bd=2, bg='white')
        self.frame1 = tk.LabelFrame(master,
                                    text=" Plot Options ",
                                    background='white')
        self.xAxisLimits = tk.LabelFrame(self.frame1,
                                         text=" X-Axis Limits ",
                                         bg='white')
        self.yAxisLimits = tk.LabelFrame(self.frame1,
                                         text=" Y-Axis Limits ",
                                         background='white')

        self.frame2 = tk.LabelFrame(master,
                                    text=" Data Options ",
                                    background='white')

        self.frame3 = tk.LabelFrame(master,
                                    text=" File Preview ",
                                    background='white')

        self.frame4 = ttk.Frame(master)
        # -----------------------------------------------------------------------

        # Frame grid positions --------------------------------------------------
        self.frame0.grid(row=0, columnspan=2, sticky='NSEW')

        self.frame1.grid(row=1,
                         columnspan=2,
                         sticky='NSEW',
                         padx=5,
                         pady=5,
                         ipadx=5,
                         ipady=15)
        self.xAxisLimits.grid(row=0,
                              column=3,
                              padx=5,
                              pady=5,
                              ipadx=5,
                              ipady=5,
                              sticky='E')

        self.yAxisLimits.grid(row=1,
                              rowspan=3,
                              column=3,
                              padx=5,
                              pady=5,
                              ipadx=5,
                              ipady=5)

        self.frame2.grid(row=2,
                         rowspan=3,
                         column=0,
                         sticky='NESW',
                         padx=5,
                         pady=5,
                         ipadx=1,
                         ipady=5)

        self.frame3.grid(row=2,
                         rowspan=5,
                         column=1,
                         sticky='NESW',
                         padx=5,
                         pady=5,
                         ipadx=0,
                         ipady=5)

        self.frame4.grid(row=6,
                         column=0,
                         sticky='NESW',
                         padx=5,
                         pady=5,
                         ipadx=0,
                         ipady=5)
        # -----------------------------------------------------------------------

        # Frame 0 widgets  ------------------------------------------------------
        self.about = ttk.Button(self.frame0, text=" About LSFR ")

        self.about.bind("<Button-1>", self.aboutLSFR)
        # -----------------------------------------------------------------------

        # Frame 0 widgets positions  --------------------------------------------
        self.about.grid(row=0, padx=7)
        # -----------------------------------------------------------------------
        # Frame 1 widgets  ------------------------------------------------------
        self.fitType = ttk.Label(self.frame1, text="Fit type: ")
        self.plotTitle = ttk.Label(self.frame1, text="Plot title: ")
        self.xLabel = ttk.Label(self.frame1, text="X-axis label: ")
        self.yLabel = ttk.Label(self.frame1, text="Y-axis label: ")

        self.fitTypeChoice = ttk.OptionMenu(self.frame1, self.option, '',
                                            fitsTypes[0], fitsTypes[1],
                                            fitsTypes[2])

        self.plotTitleEntry = ttk.Entry(self.frame1)
        self.xLabelEntry = ttk.Entry(self.frame1)
        self.yLabelEntry = ttk.Entry(self.frame1)

        self.plotTitleEntry.insert(0, string='Plot of my Data')
        self.xLabelEntry.insert(0, string='Abscissa')
        self.yLabelEntry.insert(0, string='Ordinate')

        self.gridLinesCheck = ttk.Checkbutton(self.frame1,
                                              text='Grid lines',
                                              variable=self.gridLineCheckCmd,
                                              onvalue=1,
                                              offvalue=0)

        self.residualsCheck = ttk.Checkbutton(self.frame1,
                                              text='Show residual plot',
                                              variable=self.residualsCheckCmd,
                                              onvalue=1,
                                              offvalue=0)

        self.showParametersCheck = ttk.Checkbutton(
            self.frame1,
            text='Show fitted Parameters',
            variable=self.parametersCheckCmd,
            onvalue=1,
            offvalue=0)

        self.frame1Spacer = ttk.Label(
            self.frame1,
            text="                                                       ")
        # -----------------------------------------------------------------------

        # Frame 1 widgets positions  --------------------------------------------
        self.fitType.grid(row=0, column=0, pady=30, sticky='E')
        self.fitTypeChoice.grid(row=0, column=1, sticky='EW')

        self.plotTitle.grid(row=1, column=0, sticky='E')
        self.plotTitleEntry.grid(row=1, column=1, sticky='W')

        self.xLabel.grid(row=2, column=0, sticky='E')
        self.xLabelEntry.grid(row=2, column=1, sticky='W')

        self.yLabel.grid(row=3, column=0, sticky='E')
        self.yLabelEntry.grid(row=3, column=1, sticky='W')

        self.gridLinesCheck.grid(row=4, column=1, sticky='W')

        self.residualsCheck.grid(row=5, column=1, sticky='W')

        self.showParametersCheck.grid(row=6, column=1, sticky='W')

        self.frame1Spacer.grid(row=0, column=2)
        # -----------------------------------------------------------------------

        # X-Axis Limit widgets  -------------------------------------------------
        self.xMin = ttk.Label(self.xAxisLimits, text='Min')
        self.xMinEntry = ttk.Entry(self.xAxisLimits, width=7, state='disabled')
        self.xMinAutoCheck = ttk.Checkbutton(self.xAxisLimits,
                                             variable=self.xMinAutoCheckCmd,
                                             onvalue=1,
                                             offvalue=0,
                                             command=self.disablexMinEntry,
                                             text='Auto')

        self.xMax = ttk.Label(self.xAxisLimits, text='Max')
        self.xMaxEntry = ttk.Entry(self.xAxisLimits, width=7, state='disabled')
        self.xMaxAutoCheck = ttk.Checkbutton(self.xAxisLimits,
                                             variable=self.xMaxAutoCheckCmd,
                                             onvalue=1,
                                             offvalue=0,
                                             command=self.disablexMaxEntry,
                                             text='Auto')

        # -----------------------------------------------------------------------

        # X-Axis Limit widgets positions ----------------------------------------
        self.xMin.grid(row=0, column=0, sticky='E', pady=5)
        self.xMinEntry.grid(row=0, column=1, sticky='W', pady=5)
        self.xMinAutoCheck.grid(row=0, column=2, padx=1, ipadx=1, pady=5)

        self.xMax.grid(row=1, column=0, sticky='E', pady=5)
        self.xMaxEntry.grid(row=1, column=1, sticky='W', pady=5)
        self.xMaxAutoCheck.grid(row=1, column=2, padx=1, ipadx=1, pady=5)
        # -----------------------------------------------------------------------

        # Y-Axis Limit widgets  -------------------------------------------------
        self.yMin = ttk.Label(self.yAxisLimits, text='Min')
        self.yMinEntry = ttk.Entry(self.yAxisLimits, width=7, state='disable')
        self.yMinAutoCheck = ttk.Checkbutton(self.yAxisLimits,
                                             variable=self.yMinAutoCheckCmd,
                                             onvalue=1,
                                             offvalue=0,
                                             command=self.disableyMinEntry,
                                             text="Auto")

        self.yMax = ttk.Label(self.yAxisLimits, text='Max')
        self.yMaxEntry = ttk.Entry(self.yAxisLimits, width=7, state='disable')
        self.yMaxAutoCheck = ttk.Checkbutton(self.yAxisLimits,
                                             variable=self.yMaxAutoCheckCmd,
                                             onvalue=1,
                                             offvalue=0,
                                             command=self.disableyMaxEntry,
                                             text="Auto")
        # -----------------------------------------------------------------------

        # Y-Axis Limit widgets positions ----------------------------------------
        self.yMin.grid(row=0, column=0, pady=5)
        self.yMinEntry.grid(row=0, column=1, pady=5)
        self.yMinAutoCheck.grid(row=0, column=2, padx=1, ipadx=1, pady=5)

        self.yMax.grid(row=1, column=0, pady=5)
        self.yMaxEntry.grid(row=1, column=1, pady=5)
        self.yMaxAutoCheck.grid(row=1, column=2, padx=1, ipadx=1, pady=5)
        # -----------------------------------------------------------------------

        # Frame 2 widgets  ------------------------------------------------------
        self.loadData = ttk.Button(self.frame2,
                                   text=" Load new data... ",
                                   command=self.openfile)
        self.directory = ttk.Label(self.frame2, text="Working directory: ")
        self.directoryDisplay = ttk.Entry(self.frame2, width=27)
        self.directoryDisplay.insert(0, string='(no directory selected)')
        self.directoryDisplay.configure(state='readonly')

        self.numberOfPoints = ttk.Label(self.frame2,
                                        text="Number of data points: ")
        self.numberOfPointsDisplay = ttk.Label(self.frame2, text="0")
        # -----------------------------------------------------------------------

        # Frame 2 widgets positions  --------------------------------------------
        self.directory.grid(row=0, column=0, sticky='E', padx=5, pady=1)
        self.directoryDisplay.grid(row=0,
                                   column=1,
                                   sticky='WE',
                                   padx=1,
                                   pady=1)

        self.numberOfPoints.grid(row=1, column=0, sticky='E', padx=5, pady=1)
        self.numberOfPointsDisplay.grid(row=1,
                                        column=1,
                                        sticky='W',
                                        padx=5,
                                        pady=1)

        self.loadData.grid(row=2,
                           column=0,
                           sticky='NESW',
                           padx=5,
                           pady=1,
                           columnspan=2)

        # -----------------------------------------------------------------------

        # Frame 3 widgets  ------------------------------------------------------
        self.filePreview = tk.Listbox(self.frame3, borderwidth=0, width=40)
        self.filePreview.insert(1, '(no file loaded)')
        self.filePreview.configure(state='disable')
        # -----------------------------------------------------------------------

        # Frame 3 widgets positions  --------------------------------------------
        self.filePreview.pack(fill='both')
        # -----------------------------------------------------------------------

        # Frame 4 widgets  ------------------------------------------------------
        self.exit = ttk.Button(self.frame4,
                               text=' Exit ',
                               command=self.destroy,
                               width=4)
        self.plot = ttk.Button(self.frame4,
                               text=" Plot ",
                               command=self.plot,
                               width=6)
        self.help = ttk.Button(self.frame4,
                               text=" Help ",
                               command=self.helpwindow,
                               width=4)
        # -----------------------------------------------------------------------

        # Frame 4 widgets positions  --------------------------------------------
        self.exit.grid(row=0,
                       column=0,
                       sticky='EW',
                       padx=30,
                       pady=5,
                       ipadx=5,
                       ipady=5)

        self.plot.grid(row=0,
                       column=1,
                       sticky='EW',
                       padx=30,
                       pady=5,
                       ipadx=5,
                       ipady=5)

        self.help.grid(row=0,
                       column=2,
                       sticky='EW',
                       padx=30,
                       pady=5,
                       ipadx=5,
                       ipady=5)
Exemplo n.º 4
0
button_login.place(x=75,y=165)
button_message.place(x=75,y=172)
message_popup.place(x=10,y=197)
login_popup.place(x=10,y=197)
filter_title_frame.place(x=5,y=5)
filter_title_label.place(x=110,y=3)
region_label.place(x=5,y=70)
region_entry.place(x=5,y=95)
button_filter.place(x=5,y=190)
filter_popup.place(x=320,y=195)
button_start_process.place(x=160,y=14)
check_button_invisible.place(x=50,y=11)
industry_dropdown.place(x=270,y=70)
for choice in x:
    choice=choice.replace("\n","")
    choices[choice] = tk.IntVar(value=0)
    menu.add_checkbutton(label=choice, variable=choices[choice], onvalue=1, offvalue=0, command=save_industries)
current_companies_label.place(x=5,y=130)
current_companies_entry.place(x=5,y=155)
schools_label.place(x=245,y=130)
schools_entry.place(x=245,y=155)
title_label.place(x=280,y=8)
title_label2.place(x=750,y=1)
# title_label3.place(x=660,y=30)
# title_label3.bind("<Button-1>", lambda e: callback("http://instagram.com/sshakirzargar"))
facebook_button.place(x=750,y=25)
facebook_button.bind("<Button-1>", lambda e: callback("http://facebook.com/sshakirshakeel"))
insta_button.place(x=790,y=25)
insta_button.bind("<Button-1>", lambda e: callback("http://instagram.com/sshakirzargar"))
github_button.place(x=830,y=25)
github_button.bind("<Button-1>", lambda e: callback("http://github.com/shakirshakeelzargar"))
Exemplo n.º 5
0
    def __init__(self, master, **kwargs):
        global x, var, rc
        rc = '^[a-zA-Z0-9.?,+-;:&`~"/*<>\'\n\t|\(\)\}\{\[\]\$@!#%=^_ ]+$'
        x = Convert()
        var = tk.IntVar()
        l1 = tk.Label(text="Select a task",
                      font=("Helvetica", 30, "bold"),
                      activeforeground="black",
                      fg="black",
                      bg="yellow")
        l1.place(x=140, y=100)
        l2 = tk.Label(text="Message:",
                      font=("Helvetica", 20, "bold"),
                      activeforeground="black",
                      fg="black",
                      bg="yellow")
        l2.place(x=140, y=400)
        textBox1 = tk.Text(height=5,
                           width=80,
                           relief="sunken",
                           bd=5,
                           font=("Helvetica", 15))
        textBox1.configure(state='disabled')
        textBox1.place(x=340, y=400)
        textBox2 = tk.Text(height=3,
                           width=80,
                           relief="sunken",
                           bd=5,
                           font=("Helvetica", 15))
        textBox2.configure(state='disabled')
        textBox2.place(x=340, y=230)
        action = tk.Button(root,
                           bd=5,
                           activeforeground="#ffffff",
                           activebackground="violet",
                           fg="white",
                           bg="#ed91af",
                           width=12,
                           height=1,
                           font=("verdana", 15, 'bold'))
        btn1 = tk.Button(root,
                         text="Encode",
                         bd=5,
                         activebackground="#ed91af",
                         bg="#ed91af",
                         font=("verdana", 20),
                         command=lambda: self.task(1, textBox1, action))
        btn1.place(x=550, y=100)
        btn2 = tk.Button(root,
                         text="Decode",
                         bd=5,
                         activebackground="#ed91af",
                         bg="#ed91af",
                         font=("verdana", 20),
                         command=lambda: self.task(2, textBox1, action))
        btn2.place(x=1050, y=100)

        btn3 = tk.Button(root,
                         text="Select Image",
                         bd=5,
                         activeforeground="#ffffff",
                         activebackground="violet",
                         fg="white",
                         bg="#ed91af",
                         width=12,
                         height=1,
                         font=("verdana", 12, 'bold'),
                         command=lambda: self.open_img(textBox2))
        btn3.place(x=140, y=250)

        btn4 = tk.Button(
            root,
            text="Back",
            bd=5,
            activeforeground="#ffffff",
            activebackground="violet",
            fg="white",
            bg="#ed91af",
            width=12,
            height=1,
            font=("verdana", 12, 'bold'),
            command=lambda: self.back(l1, l2, textBox1, textBox2, btn1, btn2,
                                      btn3, btn4, action))
        btn4.place(x=140, y=628)
Exemplo n.º 6
0
    if (DebugRelaySet):
        print("Button number ", thisButtonIndex)
    RelaySettings = RelayActionsForButton[thisButtonIndex]
    for i in range(len(RelayList)):
        thisRelay = RelayList[i]
        thisRelay.set(RelaySettings[i])
        if (DebugRelaySet):
            print("Setting relay", i, "to", RelaySettings[i])


#Here is where we set up the layout for the screen

win = tk.Tk()
#win.geometry("200x200")
win.title("WB1FJ Antenna Switcher")
CurrentButton = tk.IntVar()
tk.Label(win, text="Configuration:").grid(row=0, columnspan=2, sticky=tk.W)

#Here are 2 checkboxes for preamps that are overrides of the standard values for a confiruration.
#For example, you can turn on the preamp while in the local repeater configuration.

tk.Label(win, text="Preamp Override:").grid(row=8, column=0, sticky=tk.E)
tk.Label(
    win,
    text=
    "________________________________________________________________________________"
).grid(row=7, column=0, columnspan=2)

P70Value = tk.IntVar()
Preamp70Button = tk.Checkbutton(win,
                                text="70Cm",
Exemplo n.º 7
0
    def main(self):
        Frame = ttk.LabelFrame(self, text='Dialogue')
        Frame.pack(expand=1, fill='both')

        # creating the entry boxes
        self.vcmd = (self.register (self.validator ) , '%P' , '%d')
        self.vcmd2 = (self.register (self.validator3 ) , '%P' , '%d')
        self.txt1 = tk.Label(Frame, text='Music Id:')
        self.txt1.place(relx=0.01, rely=0.05)
        self.txt2 = tk.Label(Frame, text='Artist Id:')
        self.txt2.place(relx=0.01, rely=0.15)
        
        self.id1 = tk.Entry(Frame, width=26, state='disabled',validate = 'key' , validatecommand = self.vcmd2)
        self.id1.place(relx=0.15, rely=0.05)

        self.id2 = tk.Entry(Frame, width=26, validate = 'key' , validatecommand = self.vcmd, state='disabled')
        self.id2.place(relx= 0.15, rely=0.15)

        # creating the dropdown menu for the metrics
        #tk.Label(Frame, text='Metric:').place(relx=0.58, rely=0.154)
        OPTIONS = ['Cosine','Euclidean','Jaccard','manhattan','pearson']
        self.metric = tk.StringVar()
        self.metric.set(OPTIONS[2]) # default value
        option = tk.OptionMenu(Frame,self.metric, *OPTIONS)
        option.configure(width=13)
        option.place(relx= 0.59, rely=0.14)

        # creating the radiobuttons for choosing the similarites you want to check, either between music id or artists id or artist and music 
        Frame2 = tk.Frame(Frame)
        Frame2.place(relx=0.01, rely=0.25)
        tk.Label(Frame, text='Similarites Between').place(relx=0.01, rely=0.25)
        self.sim_choosen = tk.IntVar()
        similarities_opt = [('Musics', 1),('Artists', 2),("Artist & Musics",3)]
        for similarity, val in similarities_opt:
                tk.Radiobutton(Frame2, 
                                text=similarity,
                                variable=self.sim_choosen,command=self.getter 
                                ,value=val).pack(side='left', pady=20)

        # creating the spinbox that would indicate how many no of similarities do want to see..
        # this would only work if you are trying to only show the n similarity to an artist or music 
        tk.Label(Frame, text='N:').place(relx=0.58, rely=0.05)
        self.N = tk.Spinbox ( Frame , from_ = 0 , to = 100 , width = 15, state='disabled')
        self.N.place(relx= 0.61, rely =0.05)
        

        # creating the calculate button
        button = tk.Button(Frame, text='Calculate Similarity', width=16, command = lambda: [f () for f in [self.validator2]])
        button.place(relx = 0.50, rely=0.30)

        # creating the evalution button
        self.eval_button = tk.Button(Frame, text='Evaluation', width=10, state='disabled', command=self.evaluate)
        self.eval_button.place(relx = 0.80, rely=0.30)
        
        # progress bar
        self.progress_Bar = ttk.Progressbar(Frame, orient='horizontal', length=495, mode='determinate')
        self.progress_Bar.place(relx=0.00, rely=0.53)
        self.tips = tk.Label(Frame, text='Tips!!')
        self.tips.place(relx = 0.45, rely=0.44)
        
        # result panel
        tk.Label(Frame, text='Results').place(relx = 0.01, rely=0.62)
        tk.Label(Frame, text='Similarity Score:').place(relx=0.03, rely=0.72)

        self.Score = tk.Label(Frame, text='')
        self.Score.place(relx=0.25, rely=0.72)

        # creating the text area for displaying results
        Frame2 = tk.Frame(Frame)
        Frame2.place(relx=0.50, rely=0.62)
        h = tk.Scrollbar(Frame2, orient = 'horizontal')
        h.pack(side ='bottom', fill = 'x') 
        v = tk.Scrollbar(Frame2)
        v.pack(side = 'right', fill = 'y')
        self.t = tk.Text(Frame2, width = 33, height = 7.4,xscrollcommand = h.set,  
                 yscrollcommand = v.set, state='disabled')
        self.t.pack(side='top')
        h.config(command=self.t.xview)
        v.config(command=self.t.yview)
Exemplo n.º 8
0
    def __init__(self, master=None, histfile=HISTFILE, **kw):
        BaseWidget.__init__(self, master, 'History', **kw)
        self.columnconfigure(0, weight=1)
        self.rowconfigure(0, weight=1)

        self._search_count = tk.IntVar(self)

        current_session = CONFIG.getboolean('History', 'current_session', fallback=False)
        self._current_session = tk.BooleanVar(self, current_session)
        # --- menu
        self.menu = tk.Menu(self)
        self.menu.add_checkbutton(label='Current session only',
                                  image='img_menu_dummy_cb',
                                  selectimage='img_selected',
                                  indicatoron=False,
                                  compound='left',
                                  command=self._current_session_toggle,
                                  variable=self._current_session)
        self.menu.add_command(label='Find',
                              command=self.find,
                              image='img_menu_dummy',
                              compound='left')

        syh = AutoHideScrollbar(self, orient='vertical')

        self.history = History(self, HISTFILE, current_session,
                               yscrollcommand=syh.set,
                               relief='flat', borderwidth=0, highlightthickness=0)
        syh.configure(command=self.history.yview)

        # --- search bar
        self._highlighted = ''
        self.frame_search = ttk.Frame(self, padding=2)
        self.frame_search.columnconfigure(1, weight=1)
        self.entry_search = ttk.Entry(self.frame_search)
        self.entry_search.bind('<Return>', self.search)
        self.entry_search.bind('<Escape>', lambda e: self.frame_search.grid_remove())
        search_buttons = ttk.Frame(self.frame_search)
        ttk.Button(search_buttons, style='Up.TButton', padding=0,
                   command=lambda: self.search(backwards=True)).pack(side='left', padx=2, pady=4)
        ttk.Button(search_buttons, style='Down.TButton', padding=0,
                   command=self.search).pack(side='left', padx=2, pady=4)
        self.case_sensitive = ttk.Checkbutton(search_buttons, text='aA')
        self.case_sensitive.state(['selected', '!alternate'])
        self.case_sensitive.pack(side='left', padx=2, pady=4)
        self.regexp = ttk.Checkbutton(search_buttons, text='regexp')
        self.regexp.state(['!selected', '!alternate'])
        self.regexp.pack(side='left', padx=2, pady=4)
        self.full_word = ttk.Checkbutton(search_buttons, text='[-]')
        self.full_word.state(['!selected', '!alternate'])
        self.full_word.pack(side='left', padx=2, pady=4)
        self._highlight_btn = ttk.Checkbutton(search_buttons, image='img_highlight',
                                              padding=0, style='toggle.TButton',
                                              command=self.highlight_all)
        self._highlight_btn.pack(side='left', padx=2, pady=4)

        frame_find = ttk.Frame(self.frame_search)
        ttk.Button(frame_find, padding=0,
                   command=lambda: self.frame_search.grid_remove(),
                   style='close.TButton').pack(side='left')
        ttk.Label(frame_find, text='Find:').pack(side='right')
        frame_find.grid(row=1, column=0, padx=2, pady=4, sticky='ew')
        self.entry_search.grid(row=1, column=1, sticky='ew', pady=4, padx=2)
        search_buttons.grid(row=1, column=2, sticky='w')

        self.bind('<Control-f>', self.find)
        self.history.bind('<Control-f>', self.find)

        # --- placement
        syh.grid(row=0, column=1, sticky='ns')
        self.history.grid(row=0, column=0, sticky='nswe')
        self.frame_search.grid(row=1, columnspan=2, sticky='we')
        self.frame_search.grid_remove()

        self.update_style = self.history.update_style
Exemplo n.º 9
0
import tkinter as tk
from tkinter import messagebox

form = tk.Tk()

form.title('Alt Kümelerle Sayı Tahmin Oyunu')
form.geometry('1200x600')
form.minsize(1200, 600)
form.maxsize(1200, 600)

x1 = tk.IntVar()
x1.set(0)
x2 = tk.IntVar()
x2.set(0)
x3 = tk.IntVar()
x3.set(0)
x4 = tk.IntVar()
x4.set(0)
x5 = tk.IntVar()
x5.set(0)
x6 = tk.IntVar()
x6.set(0)
x7 = tk.IntVar()
x7.set(0)


def basla():

    sonuc = set()

    if x1.get() == 1:
Exemplo n.º 10
0
    def __init__(self, *args, **kw):
        super().__init__()
        self.configure(background='black')
        self.overrideredirect(True)
        self.width, self.height = 200, 100
        self.p_x, self.p_y = 100, 130
        self.isShow = True  # 是否隐藏
        self.wm_attributes("-alpha", 0.55)  # 透明度
        # self.wm_attributes("-toolwindow", True)  # 置为工具窗口
        self.wm_attributes("-topmost", True)  # 永远处于顶层
        self.bind('<B1-Motion>', self._on_move)
        self.bind('<ButtonPress-1>', self._on_tap)  # 设置窗口最大化大小
        self.bind('<Double-Button-1>', self.quit)
        self.bind('<Button-4>', self.zoom_up)
        self.bind('<Button-5>', self.zoom_down)
        self.resizable(width=False, height=True)  # 设置窗口宽度不可变,高度可变
        self.canvas = None
        self.geometry("%sx%s+%s+%s" % (1, 1, 1, 1))
        self.cancel = False  #是否取消

        # 缩放比例
        self.zoom, self.zoom = 1.0, 1.0
        #
        self.screenWidth = self.winfo_screenwidth()
        self.screenHeight = self.winfo_screenheight()

        # 变量X和Y用来记录鼠标左键按下的位置
        self.X = tk.IntVar(value=0)
        self.Y = tk.IntVar(value=0)

        filename = 'all.gif'
        im = ImageGrab.grab()
        im = ImageEnhance.Brightness(im).enhance(0.9)
        im.save(filename)
        im.close()
        time.sleep(0.1)
        # 创建顶级组件容器
        self.top = tk.Toplevel(self,
                               width=self.screenWidth,
                               height=self.screenHeight)
        # 不显示最大化、最小化按钮
        self.top.overrideredirect(True)

        self.topcanvas = tk.Canvas(self.top,
                                   bg='white',
                                   width=self.screenWidth,
                                   height=self.screenHeight)

        # 绑定鼠标事件

        def onEscPressd(event):
            print('top - esc')
            self.cancel = True
            self.top.destroy()
            # self.quit(0)
            # exit()

        # self.topcanvas.bind('<Escape>', onEscPressd)
        self.topcanvas.bind('<Button-2>', onEscPressd)

        # 鼠标左键按下的位置
        def onLeftButtonDown(event):
            # pdb.set_trace()
            self.X.set(event.x)
            self.Y.set(event.y)
            # 开始截图
            self.sel = True

        self.topcanvas.bind('<Button-1>', onLeftButtonDown)

        # 鼠标左键移动,显示选取的区域
        def onLeftButtonMove(event):
            # pdb.set_trace()
            global lastDraw, r, c
            try:
                # 删除刚画完的图形,要不然鼠标移动的时候是黑乎乎的一片矩形
                self.topcanvas.delete(lastDraw)
                self.topcanvas.delete(r)
                self.topcanvas.delete(c)
            except Exception as e:
                pass
            # 没有点击左键时绘制十字线
            r = self.topcanvas.create_line(0,
                                           event.y,
                                           self.screenWidth,
                                           event.y,
                                           fill='white')
            c = self.topcanvas.create_line(event.x,
                                           0,
                                           event.x,
                                           self.screenHeight,
                                           fill='white')
            if not self.sel:
                # print(event.x, event.y, self.screenWidth, self.screenHeight)
                pass
            else:
                lastDraw = self.topcanvas.create_rectangle(self.X.get(),
                                                           self.Y.get(),
                                                           event.x,
                                                           event.y,
                                                           outline='orange')
                # print(event.x, event.y, self.screenWidth, self.screenWidth)

        self.topcanvas.bind('<B1-Motion>', onLeftButtonMove)

        def onMouseMove(event):
            # 不点击时的鼠标移动,绘制十字线
            global r, c
            try:
                # 删除刚画完的图形,要不然鼠标移动的时候是黑乎乎的一片矩形
                self.topcanvas.delete(r)
                self.topcanvas.delete(c)
            except Exception as e:
                pass
            # 没有点击左键时绘制十字线
            r = self.topcanvas.create_line(0,
                                           event.y,
                                           self.screenWidth,
                                           event.y,
                                           fill='white')
            c = self.topcanvas.create_line(event.x,
                                           0,
                                           event.x,
                                           self.screenHeight,
                                           fill='white')

        self.topcanvas.bind('<Motion>', onMouseMove)

        # 获取鼠标左键抬起的位置,保存区域截图
        def onLeftButtonUp(event):
            try:
                self.topcanvas.delete(lastDraw)
            except Exception as e:
                pass
            time.sleep(0.1)
            # 考虑鼠标左键从右下方按下而从左上方抬起的截图
            left, right = sorted([self.X.get(), event.x])
            top, bottom = sorted([self.Y.get(), event.y])
            self.position = (left, top + 1, right, bottom)
            print(self.position)
            self.p_x, self.p_y = left + 2, top + 2
            self.width, self.height = right - left - 1, bottom - top - 1
            self.pic = ImageGrab.grab((left + 1, top + 1, right, bottom))
            # 关闭顶级容器
            self.top.destroy()
            # 弹出保存截图对话框
            # fileName = tk.filedialog.asksaveasfilename(title='保存截图',
            #                           filetypes=[('image','*.jpg *.png')])
            if self.pic:
                self.pic.save("cut.gif")

        self.topcanvas.bind('<ButtonRelease-1>', onLeftButtonUp)
        self.topcanvas.pack(fill=tk.BOTH, expand=tk.YES)

        # 显示全屏截图,在全屏截图上进行区域截图
        self.image = tk.PhotoImage(file=filename)
        self.topcanvas.create_image(self.screenWidth // 2,
                                    self.screenHeight // 2,
                                    image=self.image)
        self.topcanvas.pack()

        self.wait_window(self.top)

        if self.cancel:
            print('self.cancel')
            self.quit(0)
            # super().quit()
            # exit()
        self.run()

        self.geometry("%sx%s" % (self.width, self.height))
        self.geometry("+%s+%s" % (self.p_x, self.p_y))

        self.refresh_data()
        self.mainloop()
Exemplo n.º 11
0
    def __init__(self, parent):
        self.parent = parent

        self.regex = tkinter.StringVar()
        self.text = tkinter.StringVar()
        self.ignore_case = tkinter.IntVar()
        self.dotall = tkinter.IntVar()

        self.regex.trace('w', self.updateRE)
        self.text.trace('w', self.updateRE)
        self.dotall.trace('w', self.updateRE)
        self.ignore_case.trace('w', self.updateRE)

        main_frame = tkinter.Frame(self.parent)

        regex_label = tkinter.Label(main_frame, text='Regex', underline=0)
        regex_entry = tkinter.Entry(main_frame, textvariable=self.regex)
        text_label = tkinter.Label(main_frame, text='Text', underline=0)
        text_entry = tkinter.Entry(main_frame, textvariable=self.text)
        ignore_case_checkbox = tkinter.Checkbutton(main_frame,
                                                   text='Ignore case',
                                                   variable=self.ignore_case)
        dotall_checkbox = tkinter.Checkbutton(main_frame,
                                              text='Dotall',
                                              variable=self.dotall)

        regex_label.grid(row=0, column=0, padx=2, pady=2, sticky=tkinter.W)
        regex_entry.grid(row=0,
                         column=2,
                         columnspan=4,
                         padx=2,
                         pady=2,
                         sticky=tkinter.EW)
        text_label.grid(row=1, column=0, padx=2, pady=2, sticky=tkinter.W)
        text_entry.grid(row=1,
                        column=2,
                        columnspan=4,
                        padx=2,
                        pady=2,
                        sticky=tkinter.EW)
        ignore_case_checkbox.grid(row=2, column=2, sticky=tkinter.EW)
        dotall_checkbox.grid(row=2, column=4, sticky=tkinter.EW)

        self.group_matches = []
        self.group_names = []
        for i in range(10):
            group_label = tkinter.Label(main_frame, text='Group {}'.format(i))
            group_name = tkinter.Label(main_frame, text='')
            group_match = tkinter.Entry(main_frame)
            group_label.grid(row=3 + i,
                             column=0,
                             padx=2,
                             pady=2,
                             sticky=tkinter.W)
            group_name.grid(row=3 + i,
                            column=1,
                            padx=2,
                            pady=2,
                            sticky=tkinter.W)
            group_match.grid(row=3 + i,
                             column=2,
                             columnspan=3,
                             padx=2,
                             pady=2,
                             sticky=tkinter.EW)
            self.group_names.append(group_name)
            self.group_matches.append(group_match)

        self.status_label = tkinter.Label(main_frame,
                                          text='',
                                          anchor=tkinter.W)
        self.status_label.grid(row=13,
                               column=0,
                               columnspan=4,
                               sticky=tkinter.EW)

        main_frame.grid(row=0, column=0, sticky=tkinter.NSEW)

        main_frame.columnconfigure(0, weight=0)
        main_frame.columnconfigure(2, weight=999)
        main_frame.rowconfigure(1, weight=999)
        for i in range(1, 13):
            main_frame.rowconfigure(i, weight=1)
        window = main_frame.winfo_toplevel()
        window.columnconfigure(0, weight=1)
        window.rowconfigure(0, weight=1)

        self.parent.geometry("{0}x{1}+{2}+{3}".format(360, 480, 0, 50))
        self.parent.title("Regex")
Exemplo n.º 12
0
import tkinter as tk
root = tk.Tk()
v = tk.IntVar()
v.set(1)
languages = [("Python", 1), ("perl", 2), ("Java", 3), ("C++", 4), ("C", 5)]


def ShowChoice():
    print(v.get())


tk.Label(root,
         text="""Choose your favourite programming language:""",
         justify=tk.LEFT,
         padx=20).pack()
for val, language in enumerate(languages):
    tk.Radiobutton(root,
                   text=language,
                   padx=20,
                   variable=v,
                   command=ShowChoice,
                   value=val).pack(anchor=tk.W)
root.mainloop()

root = tkinter.Tk()
root.title("CMS")
lblId = tkinter.Label(root, text="ID", width=12)
lblId.grid(row=0, column=0, columnspan=2)

lblName = tkinter.Label(root, text="Name", width=12)
lblName.grid(row=1, column=0, columnspan=2)

lblAge = tkinter.Label(root, text="Age", width=12)
lblAge.grid(row=2, column=0, columnspan=2)

lblMob = tkinter.Label(root, text="Mobile No", width=12)
lblMob.grid(row=3, column=0, columnspan=2)
varID = tkinter.IntVar()
txtId = tkinter.Entry(root, text="ID", width=12, textvariable=varID)
txtId.grid(row=0, column=2, columnspan=2)

varName = tkinter.StringVar()
txtName = tkinter.Entry(root, text="Name", width=12, textvariable=varName)
txtName.grid(row=1, column=2, columnspan=2)

varAge = tkinter.IntVar()
txtAge = tkinter.Entry(root, text="Age", width=12, textvariable=varAge)
txtAge.grid(row=2, column=2, columnspan=2)

varMob = tkinter.StringVar()
txtMob = tkinter.Entry(root, text="Mobile No", width=12, textvariable=varMob)
txtMob.grid(row=3, column=2, columnspan=2)
Exemplo n.º 14
0
add = tkinter.Button(
    fileFrame,
    text="Add",
    command=lambda Lb=Lb: Lb.insert(
        'end',
        tkFileDialog.askopenfilename(title="Select file",
                                     filetypes=(("txt files", "*.txt"),
                                                ("all files", "*.*")))))
add.pack(side='left')

rem = tkinter.Button(fileFrame,
                     text="Remove",
                     command=lambda Lb=Lb: Lb.delete('anchor'))
rem.pack()

show = tkinter.IntVar()
save = tkinter.IntVar()
tkinter.Checkbutton(m, text='Display in Window',
                    variable=show).grid(column=0, row=1, sticky='w')
tkinter.Checkbutton(m, text='Save as File:', variable=save).grid(row=2,
                                                                 column=0,
                                                                 sticky='w')
location = tkinter.Entry(m)
location.grid(row=2, column=1)

orderlabel = tkinter.Label(m, text='Order')
orderlabel.grid(row=4, column=0)

order = tkinter.Entry(m)
order.grid(row=4, column=1)
Exemplo n.º 15
0
def loop():  #GUI
    global tcpClicSock, BtnIP, led_status, BtnVIN, l_VIN, TestMode  #The value of tcpClicSock changes in the function loop(),would also changes in global so the other functions could use it.
    while True:
        root = tk.Tk()  #Define a window named root
        root.title('Adeept')  #Main window title
        root.geometry(
            '917x630')  #Main window size, middle of the English letter x.
        root.config(bg=color_bg)  #Set the background color of root window

        var_spd = tk.StringVar()  #Speed value saved in a StringVar
        var_spd.set(
            1
        )  #Set a default speed,but change it would not change the default speed value in the car,you need to click button'Set' to send the value to the car

        var_x_scan = tk.IntVar()  #Scan range value saved in a IntVar
        var_x_scan.set(2)  #Set a default scan value

        #        logo =tk.PhotoImage(file = 'logo.png')         #Define the picture of logo,but only supports '.png' and '.gif'
        #        l_logo=tk.Label(root,image = logo,bg=color_bg) #Set a label to show the logo picture
        #        l_logo.place(x=30,y=13)                        #Place the Label in a right position

        BtnC1 = tk.Button(root,
                          width=15,
                          text='Camera Middle',
                          fg=color_text,
                          bg=color_btn,
                          relief='ridge')
        BtnC1.place(x=785, y=10)
        E_C1 = tk.Entry(root,
                        show=None,
                        width=16,
                        bg="#37474F",
                        fg='#eceff1',
                        exportselection=0,
                        justify='center')
        E_C1.place(x=785, y=45)  #Define a Entry and put it in position

        BtnC2 = tk.Button(root,
                          width=15,
                          text='Ultrasonic Middle',
                          fg=color_text,
                          bg=color_btn,
                          relief='ridge')
        BtnC2.place(x=785, y=100)
        E_C2 = tk.Entry(root,
                        show=None,
                        width=16,
                        bg="#37474F",
                        fg='#eceff1',
                        exportselection=0,
                        justify='center')
        E_C2.place(x=785, y=135)  #Define a Entry and put it in position

        BtnM1 = tk.Button(root,
                          width=15,
                          text='Motor A Speed',
                          fg=color_text,
                          bg=color_btn,
                          relief='ridge')
        BtnM1.place(x=785, y=190)
        E_M1 = tk.Entry(root,
                        show=None,
                        width=16,
                        bg="#37474F",
                        fg='#eceff1',
                        exportselection=0,
                        justify='center')
        E_M1.place(x=785, y=225)  #Define a Entry and put it in position

        BtnM2 = tk.Button(root,
                          width=15,
                          text='Motor B Speed',
                          fg=color_text,
                          bg=color_btn,
                          relief='ridge')
        BtnM2.place(x=785, y=280)
        E_M2 = tk.Entry(root,
                        show=None,
                        width=16,
                        bg="#37474F",
                        fg='#eceff1',
                        exportselection=0,
                        justify='center')
        E_M2.place(x=785, y=315)  #Define a Entry and put it in position

        BtnT1 = tk.Button(root,
                          width=15,
                          text='Look Up Max',
                          fg=color_text,
                          bg=color_btn,
                          relief='ridge')
        BtnT1.place(x=785, y=370)
        E_T1 = tk.Entry(root,
                        show=None,
                        width=16,
                        bg="#37474F",
                        fg='#eceff1',
                        exportselection=0,
                        justify='center')
        E_T1.place(x=785, y=405)  #Define a Entry and put it in position

        BtnT2 = tk.Button(root,
                          width=15,
                          text='Look Down Max',
                          fg=color_text,
                          bg=color_btn,
                          relief='ridge')
        BtnT2.place(x=785, y=460)
        E_T2 = tk.Entry(root,
                        show=None,
                        width=16,
                        bg="#37474F",
                        fg='#eceff1',
                        exportselection=0,
                        justify='center')
        E_T2.place(x=785, y=495)  #Define a Entry and put it in position

        BtnLED = tk.Button(root,
                           width=15,
                           text='Lights ON',
                           fg=color_text,
                           bg=color_btn,
                           relief='ridge')
        BtnLED.place(x=300, y=420)

        BtnOCV = tk.Button(root,
                           width=15,
                           text='OpenCV',
                           fg=color_text,
                           bg=color_btn,
                           relief='ridge',
                           command=call_opencv)
        BtnOCV.place(x=30, y=420)

        BtnFL = tk.Button(root,
                          width=15,
                          text='Find Line',
                          fg=color_text,
                          bg=color_btn,
                          relief='ridge')
        BtnFL.place(x=165, y=420)

        BtnSR3 = tk.Button(root,
                           width=15,
                           text='Sphinx SR',
                           fg=color_text,
                           bg=color_btn,
                           relief='ridge',
                           command=call_SR3)
        BtnSR3.place(x=300, y=495)

        E_C1.insert(0, 'Default:425')
        E_C2.insert(0, 'Default:425')
        E_M1.insert(0, 'Default:100')
        E_M2.insert(0, 'Default:100')
        E_T1.insert(0, 'Default:662')
        E_T2.insert(0, 'Default:295')

        can_scan = tk.Canvas(root,
                             bg=color_can,
                             height=250,
                             width=320,
                             highlightthickness=0)  #define a canvas
        can_scan.place(x=440, y=330)  #Place the canvas
        line = can_scan.create_line(0, 62, 320, 62,
                                    fill='darkgray')  #Draw a line on canvas
        line = can_scan.create_line(0, 124, 320, 124,
                                    fill='darkgray')  #Draw a line on canvas
        line = can_scan.create_line(0, 186, 320, 186,
                                    fill='darkgray')  #Draw a line on canvas
        line = can_scan.create_line(160, 0, 160, 250,
                                    fill='darkgray')  #Draw a line on canvas
        line = can_scan.create_line(80, 0, 80, 250,
                                    fill='darkgray')  #Draw a line on canvas
        line = can_scan.create_line(240, 0, 240, 250,
                                    fill='darkgray')  #Draw a line on canvas
        x_range = var_x_scan.get()
        can_tex_11 = can_scan.create_text(
            (27, 178), text='%sm' % round(
                (x_range / 4), 2), fill='#aeea00')  #Create a text on canvas
        can_tex_12 = can_scan.create_text(
            (27, 116), text='%sm' % round(
                (x_range / 2), 2), fill='#aeea00')  #Create a text on canvas
        can_tex_13 = can_scan.create_text(
            (27, 54), text='%sm' % round(
                (x_range * 0.75), 2), fill='#aeea00')  #Create a text on canvas

        def spd_set():  #Call this function for speed adjustment
            tcpClicSock.send(('spdset:%s' % var_spd.get()).encode(
            ))  #Get a speed value from IntVar and send it to the car
            l_ip_2.config(
                text='Speed:%s' %
                var_spd.get())  #Put the speed value on the speed status label

        def EC1_set(event):  #Call this function for speed adjustment
            tcpClicSock.send(('EC1set:%s' % E_C1.get()).encode(
            ))  #Get a speed value from IntVar and send it to the car

        def EC2_set(event):  #Call this function for speed adjustment
            tcpClicSock.send(('EC2set:%s' % E_C2.get()).encode(
            ))  #Get a speed value from IntVar and send it to the car

        def EM1_set(event):  #Call this function for speed adjustment
            tcpClicSock.send(('EM1set:%s' % E_M1.get()).encode(
            ))  #Get a speed value from IntVar and send it to the car

        def EM2_set(event):  #Call this function for speed adjustment
            tcpClicSock.send(('EM2set:%s' % E_M2.get()).encode(
            ))  #Get a speed value from IntVar and send it to the car

        def ET1_set(event):  #Call this function for speed adjustment
            tcpClicSock.send(('LUMset:%s' % E_T1.get()).encode(
            ))  #Get a speed value from IntVar and send it to the car

        def ET2_set(event):  #Call this function for speed adjustment
            tcpClicSock.send(('LDMset:%s' % E_T2.get()).encode(
            ))  #Get a speed value from IntVar and send it to the car

        def connect(event):  #Call this function to connect with the server
            if ip_stu == 1:
                sc = thread.Thread(
                    target=socket_connect)  #Define a thread for connection
                sc.setDaemon(
                    True
                )  #'True' means it is a front thread,it would close when the mainloop() closes
                sc.start()  #Thread starts

        def connect_2():  #Call this function to connect with the server
            if ip_stu == 1:
                sc = thread.Thread(
                    target=socket_connect)  #Define a thread for connection
                sc.setDaemon(
                    True
                )  #'True' means it is a front thread,it would close when the mainloop() closes
                sc.start()  #Thread starts

        def socket_connect():  #Call this function to connect with the server
            global ADDR, tcpClicSock, BUFSIZ, ip_stu, ipaddr
            ip_adr = E1.get()  #Get the IP address from Entry

            if ip_adr == '':  #If no input IP address in Entry,import a default IP
                ip_adr = num_import('IP:')
                l_ip_4.config(text='Connecting')
                l_ip_4.config(bg='#FF8F00')
                l_ip_5.config(text='Default:%s' % ip_adr)
                pass

            SERVER_IP = ip_adr
            SERVER_PORT = 10223  #Define port serial
            BUFSIZ = 1024  #Define buffer size
            ADDR = (SERVER_IP, SERVER_PORT)
            tcpClicSock = socket(AF_INET,
                                 SOCK_STREAM)  #Set connection value for socket

            for i in range(1, 6):  #Try 5 times if disconnected
                try:
                    if ip_stu == 1:
                        print("Connecting to server @ %s:%d..." %
                              (SERVER_IP, SERVER_PORT))
                        print("Connecting")
                        tcpClicSock.connect(ADDR)  #Connection with the server

                        print("Connected")

                        l_ip_5.config(text='IP:%s' % ip_adr)
                        l_ip_4.config(text='Connected')
                        l_ip_4.config(bg='#558B2F')

                        replace_num('IP:', ip_adr)
                        E1.config(state='disabled')  #Disable the Entry
                        Btn14.config(state='disabled')  #Disable the Entry

                        ip_stu = 0  #'0' means connected

                        at = thread.Thread(
                            target=code_receive
                        )  #Define a thread for data receiving
                        at.setDaemon(
                            True
                        )  #'True' means it is a front thread,it would close when the mainloop() closes
                        at.start()  #Thread starts

                        SR_threading = thread.Thread(
                            target=voice_command_thread
                        )  #Define a thread for ultrasonic tracking
                        SR_threading.setDaemon(
                            True
                        )  #'True' means it is a front thread,it would close when the mainloop() closes
                        SR_threading.start()  #Thread starts

                        video_thread = thread.Thread(
                            target=video_show
                        )  #Define a thread for data receiving
                        video_thread.setDaemon(
                            True
                        )  #'True' means it is a front thread,it would close when the mainloop() closes
                        print('Video Connected')
                        video_thread.start()  #Thread starts

                        ipaddr = tcpClicSock.getsockname()[0]
                        break
                    else:
                        break
                except Exception:
                    print("Cannot connecting to server,try it latter!")
                    l_ip_4.config(text='Try %d/5 time(s)' % i)
                    l_ip_4.config(bg='#EF6C00')
                    print('Try %d/5 time(s)' % i)
                    ip_stu = 1
                    time.sleep(1)
                    continue
            if ip_stu == 1:
                l_ip_4.config(text='Disconnected')
                l_ip_4.config(bg='#F44336')

        def code_receive():  #A function for data receiving
            global led_status, ipcon, findline_status, auto_status, opencv_status, speech_status, TestMode
            while True:
                code_car = tcpClicSock.recv(
                    BUFSIZ)  #Listening,and save the data in 'code_car'
                l_ip.config(text=code_car)  #Put the data on the label
                #print(code_car)
                if not code_car:
                    continue
                elif 'SET' in str(code_car):
                    print('set get')
                    set_list = code_car.decode()
                    set_list = set_list.split()
                    s1, s2, s3, s4, s5, s6 = set_list[1:]
                    E_C1.delete(0, 50)
                    E_C2.delete(0, 50)
                    E_M1.delete(0, 50)
                    E_M2.delete(0, 50)
                    E_T1.delete(0, 50)
                    E_T2.delete(0, 50)

                    E_C1.insert(0, '%d' % int(s1))
                    E_C2.insert(0, '%d' % int(s2))
                    E_M1.insert(0, '%d' % int(s3))
                    E_M2.insert(0, '%d' % int(s4))
                    E_T1.insert(0, '%d' % int(s5))
                    E_T2.insert(0, '%d' % int(s6))

                elif 'list' in str(code_car):  #Scan result receiving start
                    dis_list = []
                    f_list = []
                    list_str = code_car.decode()

                    while True:  #Save scan result in dis_list
                        code_car = tcpClicSock.recv(BUFSIZ)
                        if 'finished' in str(code_car):
                            break
                        list_str += code_car.decode()
                        l_ip.config(text='Scanning')

                    dis_list = list_str.split()  #Save the data as a list
                    l_ip.config(text='Finished')

                    for i in range(
                            0, len(dis_list)
                    ):  #Translate the String-type value in the list to Float-type
                        try:
                            new_f = float(dis_list[i])
                            f_list.append(new_f)
                        except:
                            continue

                    dis_list = f_list
                    #can_scan.delete(line)
                    #can_scan.delete(point_scan)
                    can_scan_1 = tk.Canvas(
                        root,
                        bg=color_can,
                        height=250,
                        width=320,
                        highlightthickness=0)  #define a canvas
                    can_scan_1.place(x=440, y=330)  #Place the canvas
                    line = can_scan_1.create_line(
                        0, 62, 320, 62,
                        fill='darkgray')  #Draw a line on canvas
                    line = can_scan_1.create_line(
                        0, 124, 320, 124,
                        fill='darkgray')  #Draw a line on canvas
                    line = can_scan_1.create_line(
                        0, 186, 320, 186,
                        fill='darkgray')  #Draw a line on canvas
                    line = can_scan_1.create_line(
                        160, 0, 160, 250,
                        fill='darkgray')  #Draw a line on canvas
                    line = can_scan_1.create_line(
                        80, 0, 80, 250,
                        fill='darkgray')  #Draw a line on canvas
                    line = can_scan_1.create_line(
                        240, 0, 240, 250,
                        fill='darkgray')  #Draw a line on canvas

                    x_range = var_x_scan.get(
                    )  #Get the value of scan range from IntVar

                    for i in range(0, len(dis_list)
                                   ):  #Scale the result to the size as canvas
                        try:
                            len_dis_1 = int((dis_list[i] / x_range) *
                                            250)  #600 is the height of canvas
                            pos = int((i / len(dis_list)) *
                                      320)  #740 is the width of canvas
                            pos_ra = int(
                                ((i / len(dis_list)) * 140) +
                                20)  #Scale the direction range to (20-160)
                            len_dis = int(len_dis_1 *
                                          (math.sin(math.radians(pos_ra)))
                                          )  #len_dis is the height of the line

                            x0_l, y0_l, x1_l, y1_l = pos, (
                                250 - len_dis), pos, (250 - len_dis
                                                      )  #The position of line
                            x0, y0, x1, y1 = (pos +
                                              3), (250 - len_dis +
                                                   3), (pos - 3), (
                                                       250 - len_dis - 3
                                                   )  #The position of arc

                            if pos <= 160:  #Scale the whole picture to a shape of sector
                                pos = 160 - abs(
                                    int(len_dis_1 *
                                        (math.cos(math.radians(pos_ra)))))
                                x1_l = (x1_l -
                                        math.cos(math.radians(pos_ra)) * 130)
                            else:
                                pos = abs(
                                    int(len_dis_1 * (math.cos(
                                        math.radians(pos_ra))))) + 160
                                x1_l = x1_l + abs(
                                    math.cos(math.radians(pos_ra)) * 130)

                            y1_l = y1_l - abs(
                                math.sin(math.radians(pos_ra)) *
                                130)  #Orientation of line

                            line = can_scan_1.create_line(
                                pos, y0_l, x1_l, y1_l,
                                fill=color_line)  #Draw a line on canvas
                            point_scan = can_scan_1.create_oval(
                                (pos + 3),
                                y0, (pos - 3),
                                y1,
                                fill=color_oval,
                                outline=color_oval)  #Draw a arc on canvas
                        except:
                            pass
                    can_tex_11 = can_scan_1.create_text(
                        (27, 178),
                        text='%sm' % round((x_range / 4), 2),
                        fill='#aeea00')  #Create a text on canvas
                    can_tex_12 = can_scan_1.create_text(
                        (27, 116),
                        text='%sm' % round((x_range / 2), 2),
                        fill='#aeea00')  #Create a text on canvas
                    can_tex_13 = can_scan_1.create_text(
                        (27, 54),
                        text='%sm' % round((x_range * 0.75), 2),
                        fill='#aeea00')  #Create a text on canvas

                elif '1' in str(code_car):  #Translate the code to text
                    l_ip.config(
                        text='Moving Forward')  #Put the text on the label
                elif '2' in str(code_car):  #Translate the code to text
                    l_ip.config(
                        text='Moving Backward')  #Put the text on the label
                elif '3' in str(code_car):  #Translate the code to text
                    l_ip.config(
                        text='Turning Left')  #Put the text on the label
                elif '4' in str(code_car):  #Translate the code to text
                    l_ip.config(
                        text='Turning Right')  #Put the text on the label
                elif '5' in str(code_car):  #Translate the code to text
                    l_ip.config(text='Look Up')  #Put the text on the label
                elif '6' in str(code_car):  #Translate the code to text
                    l_ip.config(text='Look Down')  #Put the text on the label
                elif '7' in str(code_car):  #Translate the code to text
                    l_ip.config(text='Look Left')  #Put the text on the label
                elif '8' in str(code_car):  #Translate the code to text
                    l_ip.config(text='Look Right')  #Put the text on the label
                elif '9' in str(code_car):  #Translate the code to text
                    l_ip.config(text='Stop')  #Put the text on the label

                elif '0' in str(code_car):  #Translate the code to text
                    l_ip.config(
                        text='Follow Mode On')  #Put the text on the label
                    Btn5.config(text='Following', fg='#0277BD', bg='#BBDEFB')
                    auto_status = 1

                elif 'findline' in str(code_car):  #Translate the code to text
                    BtnFL.config(text='Finding', fg='#0277BD', bg='#BBDEFB')
                    l_ip.config(text='Find Line')
                    findline_status = 1

                elif 'lightsON' in str(code_car):  #Translate the code to text
                    BtnLED.config(text='Lights ON', fg='#0277BD', bg='#BBDEFB')
                    led_status = 1
                    l_ip.config(text='Lights On')  #Put the text on the label

                elif 'lightsOFF' in str(code_car):  #Translate the code to text
                    BtnLED.config(text='Lights OFF',
                                  fg=color_text,
                                  bg=color_btn)
                    led_status = 0
                    l_ip.config(text='Lights OFF')  #Put the text on the label

                elif 'oncvon' in str(code_car):
                    if TestMode == 0:
                        BtnOCV.config(text='OpenCV ON',
                                      fg='#0277BD',
                                      bg='#BBDEFB')
                        BtnFL.config(text='Find Line',
                                     fg=color_text,
                                     bg=color_btn)
                        l_ip.config(text='OpenCV ON')
                        opencv_status = 1

                elif 'auto_status_off' in str(code_car):
                    if TestMode == 0:
                        BtnSR3.config(fg=color_text,
                                      bg=color_btn,
                                      state='normal')
                        BtnOCV.config(text='OpenCV',
                                      fg=color_text,
                                      bg=color_btn,
                                      state='normal')
                    BtnFL.config(text='Find Line', fg=color_text, bg=color_btn)
                    Btn5.config(text='Follow',
                                fg=color_text,
                                bg=color_btn,
                                state='normal')
                    findline_status = 0
                    speech_status = 0
                    opencv_status = 0
                    auto_status = 0

                elif 'voice_3' in str(code_car):
                    BtnSR3.config(fg='#0277BD', bg='#BBDEFB')
                    #BtnSR1.config(state='disabled')
                    #BtnSR2.config(state='disabled')
                    l_ip.config(text='Sphinx SR')  #Put the text on the label
                    speech_status = 1

                elif 'TestVersion' in str(code_car):
                    TestMode = 1
                    BtnSR3.config(fg='#FFFFFF', bg='#F44336')
                    BtnOCV.config(fg='#FFFFFF', bg='#F44336')

        s1 = tk.Scale(
            root,
            label="               < Slow   Speed Adjustment   Fast >",
            from_=0.4,
            to=1,
            orient=tk.HORIZONTAL,
            length=400,
            showvalue=0.1,
            tickinterval=0.1,
            resolution=0.2,
            variable=var_spd,
            fg=color_text,
            bg=color_bg,
            highlightthickness=0)
        s1.place(x=200, y=100)  #Define a Scale and put it in position

        s3 = tk.Scale(root,
                      label="< Near   Scan Range Adjustment(Meter(s))   Far >",
                      from_=1,
                      to=5,
                      orient=tk.HORIZONTAL,
                      length=300,
                      showvalue=1,
                      tickinterval=1,
                      resolution=1,
                      variable=var_x_scan,
                      fg=color_text,
                      bg=color_bg,
                      highlightthickness=0)
        s3.place(x=30, y=320)

        l_ip = tk.Label(root,
                        width=18,
                        text='Status',
                        fg=color_text,
                        bg=color_btn)
        l_ip.place(x=30, y=110)  #Define a Label and put it in position

        l_ip_2 = tk.Label(root,
                          width=18,
                          text='Speed:%s' % (var_spd.get()),
                          fg=color_text,
                          bg=color_btn)
        l_ip_2.place(x=30, y=145)  #Define a Label and put it in position

        l_ip_4 = tk.Label(root,
                          width=18,
                          text='Disconnected',
                          fg=color_text,
                          bg='#F44336')
        l_ip_4.place(x=637, y=110)  #Define a Label and put it in position

        l_ip_5 = tk.Label(root,
                          width=18,
                          text='Use default IP',
                          fg=color_text,
                          bg=color_btn)
        l_ip_5.place(x=637, y=145)  #Define a Label and put it in position

        l_inter = tk.Label(
            root,
            width=45,
            text=
            '< Car Adjustment              Camera Adjustment>\nW:Move Forward                 Look Up:I\nS:Move Backward            Look Down:K\nA:Turn Left                          Turn Left:J\nD:Turn Right                      Turn Right:L\nZ:Auto Mode On          Look Forward:H\nC:Auto Mode Off      Ultrasdonic Scan:X',
            fg='#212121',
            bg='#90a4ae')
        l_inter.place(x=240, y=180)  #Define a Label and put it in position

        E1 = tk.Entry(root, show=None, width=16, bg="#37474F", fg='#eceff1')
        E1.place(x=170, y=40)  #Define a Entry and put it in position

        l_ip_3 = tk.Label(root,
                          width=10,
                          text='IP Address:',
                          fg=color_text,
                          bg='#000000')
        l_ip_3.place(x=165, y=15)  #Define a Label and put it in position

        Btn14 = tk.Button(root,
                          width=8,
                          text='Connect',
                          fg=color_text,
                          bg=color_btn,
                          command=connect_2,
                          relief='ridge')
        Btn14.place(x=300, y=35)  #Define a Button and put it in position

        BtnVIN = tk.Button(root,
                           width=15,
                           text='Voice Input',
                           fg=color_text,
                           bg=color_btn,
                           relief='ridge')
        BtnVIN.place(x=30, y=495)

        l_VIN = tk.Label(root,
                         width=16,
                         text='Voice commands',
                         fg=color_text,
                         bg=color_btn)
        l_VIN.place(x=30, y=465)

        #Define buttons and put these in position
        Btn0 = tk.Button(root,
                         width=8,
                         text='Forward',
                         fg=color_text,
                         bg=color_btn,
                         relief='ridge')
        Btn1 = tk.Button(root,
                         width=8,
                         text='Backward',
                         fg=color_text,
                         bg=color_btn,
                         relief='ridge')
        Btn2 = tk.Button(root,
                         width=8,
                         text='Left',
                         fg=color_text,
                         bg=color_btn,
                         relief='ridge')
        Btn3 = tk.Button(root,
                         width=8,
                         text='Right',
                         fg=color_text,
                         bg=color_btn,
                         relief='ridge')
        Btn4 = tk.Button(root,
                         width=8,
                         text='Stop',
                         fg=color_text,
                         bg=color_btn,
                         relief='ridge')
        Btn5 = tk.Button(root,
                         width=8,
                         text='Follow',
                         fg=color_text,
                         bg=color_btn,
                         relief='ridge')

        Btn6 = tk.Button(root,
                         width=8,
                         text='Left',
                         fg=color_text,
                         bg=color_btn,
                         relief='ridge')
        Btn7 = tk.Button(root,
                         width=8,
                         text='Right',
                         fg=color_text,
                         bg=color_btn,
                         relief='ridge')
        Btn8 = tk.Button(root,
                         width=8,
                         text='Down',
                         fg=color_text,
                         bg=color_btn,
                         relief='ridge')
        Btn9 = tk.Button(root,
                         width=8,
                         text='Up',
                         fg=color_text,
                         bg=color_btn,
                         relief='ridge')
        Btn10 = tk.Button(root,
                          width=8,
                          text='Home',
                          fg=color_text,
                          bg=color_btn,
                          relief='ridge')
        Btn11 = tk.Button(root,
                          width=8,
                          text='Exit',
                          fg=color_text,
                          bg=color_btn,
                          relief='ridge')

        Btn12 = tk.Button(root,
                          width=8,
                          text='Set',
                          command=spd_set,
                          fg=color_text,
                          bg=color_btn,
                          relief='ridge')
        Btn13 = tk.Button(root,
                          width=8,
                          height=3,
                          text='Scan',
                          fg=color_text,
                          bg=color_btn,
                          relief='ridge')

        Btn0.place(x=100, y=195)
        Btn1.place(x=100, y=230)
        Btn2.place(x=30, y=230)
        Btn3.place(x=170, y=230)
        Btn4.place(x=170, y=275)
        Btn5.place(x=30, y=275)

        Btn6.place(x=565, y=230)
        Btn7.place(x=705, y=230)
        Btn8.place(x=635, y=265)
        Btn9.place(x=635, y=195)
        Btn10.place(x=635, y=230)
        Btn11.place(x=705, y=10)

        Btn12.place(x=535, y=107)
        Btn13.place(x=350, y=330)

        # Bind the buttons with the corresponding callback function
        Btn0.bind('<ButtonPress-1>', call_forward)
        Btn1.bind('<ButtonPress-1>', call_back)
        Btn2.bind('<ButtonPress-1>', click_call_Left)
        Btn3.bind('<ButtonPress-1>', click_call_Right)
        Btn4.bind('<ButtonPress-1>', call_Stop)
        Btn5.bind('<ButtonPress-1>', call_auto)
        Btn6.bind('<ButtonPress-1>', call_look_left)
        Btn7.bind('<ButtonPress-1>', call_look_right)

        Btn8.bind('<ButtonPress-1>', call_look_down)
        Btn9.bind('<ButtonPress-1>', call_look_up)
        Btn10.bind('<ButtonPress-1>', call_ahead)
        Btn11.bind('<ButtonPress-1>', call_exit)
        Btn13.bind('<ButtonPress-1>', scan)

        Btn0.bind('<ButtonRelease-1>', call_stop)
        Btn1.bind('<ButtonRelease-1>', call_stop)
        Btn2.bind('<ButtonRelease-1>', call_stop)
        Btn3.bind('<ButtonRelease-1>', call_stop)
        Btn4.bind('<ButtonRelease-1>', call_stop)

        BtnC1.bind('<ButtonPress-1>', EC1_set)
        BtnC2.bind('<ButtonPress-1>', EC2_set)
        BtnM1.bind('<ButtonPress-1>', EM1_set)
        BtnM2.bind('<ButtonPress-1>', EM2_set)
        BtnT1.bind('<ButtonPress-1>', ET1_set)
        BtnT2.bind('<ButtonPress-1>', ET2_set)
        BtnFL.bind('<ButtonPress-1>', find_line)
        BtnVIN.bind('<ButtonPress-1>', voice_command)

        BtnLED.bind('<ButtonPress-1>', lights_ON)
        # Bind the keys with the corresponding callback function
        root.bind('<KeyPress-w>', call_forward)
        root.bind('<KeyPress-a>', call_Left)
        root.bind('<KeyPress-d>', call_Right)
        root.bind('<KeyPress-s>', call_back)

        # When these keys is released,call the function call_stop()
        root.bind('<KeyRelease-w>', call_stop)
        root.bind('<KeyRelease-a>', call_stop_2)
        root.bind('<KeyRelease-d>', call_stop_2)
        root.bind('<KeyRelease-s>', call_stop)
        root.bind('<KeyRelease-f>', lights_ON)
        root.bind('<KeyRelease-e>', find_line)
        root.bind('<KeyRelease-q>', voice_command)

        # Press these keyss to call the corresponding function()
        root.bind('<KeyPress-c>', call_Stop)
        root.bind('<KeyPress-z>', call_auto)
        root.bind('<KeyPress-j>', call_look_left)
        root.bind('<KeyPress-l>', call_look_right)
        root.bind('<KeyPress-h>', call_ahead)
        root.bind('<KeyPress-k>', call_look_down)
        root.bind('<KeyPress-i>', call_look_up)
        root.bind('<KeyPress-x>', scan)
        root.bind('<Return>', connect)
        root.bind('<Shift_L>', call_stop)

        global stat
        if stat == 0:  # Ensure the mainloop runs only once
            root.mainloop()  # Run the mainloop()
            stat = 1  # Change the value to '1' so the mainloop() would not run again.
Exemplo n.º 16
0
    def __init__(self,
                 parent=None,
                 frameTitle="Test Signal Configurator",
                 winItemObject=None,
                 itemSet=None,
                 geometry="300x400+600+300",
                 *arg,
                 **kw):

        super(WindowConfigTestSignal,
              self).__init__(parent=parent,
                             frameTitle=frameTitle,
                             winItemObject=winItemObject,
                             itemSet=itemSet,
                             geometry=geometry,
                             *arg,
                             **kw)
        self.frameElementValue = ttk.Frame(self.top)
        self.frameElementValue.pack(side=tk.TOP, fill=tk.X, expand=False)

        frameSampling = ttk.Frame(self.top)
        frameSampling.pack(side=tk.TOP, fill=tk.X, expand=False)
        sampling_label = ttk.Label(frameSampling,
                                   text="Sample rate:",
                                   width=15)
        sampling_label.pack(side=tk.LEFT, padx=2, pady=2)
        self.varSampleRate = tk.DoubleVar()
        self.varSampleRate.set(100.0)
        sampling_entry = ttk.Entry(frameSampling,
                                   width=10,
                                   textvariable=self.varSampleRate)
        sampling_entry.pack(side=tk.LEFT,
                            fill=tk.X,
                            expand=False,
                            padx=2,
                            pady=2)

        frameSampleLength = ttk.Frame(self.top)
        frameSampleLength.pack(side=tk.TOP, fill=tk.X, expand=False)
        sampleLength_label = ttk.Label(frameSampleLength,
                                       text="Sample length:",
                                       width=15)
        sampleLength_label.pack(side=tk.LEFT, padx=2, pady=2)
        self.varSampleLength = tk.DoubleVar()
        self.varSampleLength.set(4.0 * np.pi)
        sampleLength_entry = ttk.Entry(frameSampleLength,
                                       width=10,
                                       textvariable=self.varSampleLength)
        sampleLength_entry.pack(side=tk.LEFT,
                                fill=tk.X,
                                expand=False,
                                padx=2,
                                pady=2)

        framePerсentNoise = tk.Frame(self.top)
        framePerсentNoise.pack(side=tk.TOP, fill=tk.X, expand=False)
        perсentNoise_label = ttk.Label(framePerсentNoise,
                                       text="Perсent noise:",
                                       width=15)
        perсentNoise_label.pack(side=tk.LEFT, padx=2, pady=2)
        self.varPerсentNoise = tk.DoubleVar()
        self.varPerсentNoise.set(0.0)
        perсentNoise_entry = ttk.Entry(framePerсentNoise,
                                       width=10,
                                       textvariable=self.varPerсentNoise)
        perсentNoise_entry.pack(side=tk.LEFT,
                                fill=tk.X,
                                expand=False,
                                padx=2,
                                pady=2)

        frameElementCount = ttk.Frame(self.top)
        frameElementCount.pack(side=tk.TOP, fill=tk.X, expand=False)
        elementCount_label = ttk.Label(frameElementCount,
                                       text="Element count:",
                                       width=15)
        elementCount_label.pack(side=tk.LEFT, padx=2, pady=2)
        self.varElementCount = tk.IntVar()
        self.varElementCount.set(1)
        elementCount_entry = ttk.Entry(frameElementCount,
                                       width=10,
                                       textvariable=self.varElementCount)
        elementCount_entry.pack(side=tk.LEFT,
                                fill=tk.X,
                                expand=False,
                                padx=2,
                                pady=2)
        elementCount_button = ttk.Button(frameElementCount,
                                         text="Create",
                                         command=self.onCreateElements)
        elementCount_button.pack(side=tk.RIGHT,
                                 fill=tk.X,
                                 expand=False,
                                 padx=2,
                                 pady=2)
    def create_widgets(self):    
        tabControl = ttk.Notebook(self.win)          # Create Tab Control
        
        tab1 = ttk.Frame(tabControl)            # Create a tab 
        tabControl.add(tab1, text='Tab 1')      # Add the tab
        tab2 = ttk.Frame(tabControl)            # Add a second tab
        tabControl.add(tab2, text='Tab 2')      # Make second tab visible
        
        tabControl.pack(expand=1, fill="both")  # Pack to make visible
        
        # LabelFrame using tab1 as the parent
        mighty = ttk.LabelFrame(tab1, text=' Mighty Python ')
        mighty.grid(column=0, row=0, padx=8, pady=4)
        
        # Modify adding a Label using mighty as the parent instead of win
        a_label = ttk.Label(mighty, text="Enter a name:")
        a_label.grid(column=0, row=0, sticky='W')
     
        # Adding a Textbox Entry widget
        self.name = tk.StringVar()
        self.name_entered = ttk.Entry(mighty, width=24, textvariable=self.name)
        self.name_entered.grid(column=0, row=1, sticky='W')               
        
        # Adding a Button
        self.action = ttk.Button(mighty, text="Click Me!", command=self.click_me)   
        self.action.grid(column=2, row=1)                                
        
        ttk.Label(mighty, text="Choose a number:").grid(column=1, row=0)
        number = tk.StringVar()
        self.number_chosen = ttk.Combobox(mighty, width=14, textvariable=number, state='readonly')
        self.number_chosen['values'] = (1, 2, 4, 42, 100)
        self.number_chosen.grid(column=1, row=1)
        self.number_chosen.current(0)
        
        # Adding a Spinbox widget
        self.spin = Spinbox(mighty, values=(1, 2, 4, 42, 100), width=5, bd=9, command=self._spin) # using range
        self.spin.grid(column=0, row=2, sticky='W') # align left
        
        # Using a scrolled Text control    
        scrol_w = 40; scrol_h = 10                  # increase sizes
        self.scrol = scrolledtext.ScrolledText(mighty, width=scrol_w, height=scrol_h, wrap=tk.WORD)
        self.scrol.grid(column=0, row=3, sticky='WE', columnspan=3)                    
        
        for child in mighty.winfo_children():       # add spacing to align widgets within tabs
            child.grid_configure(padx=4, pady=2) 
         
        #=====================================================================================
        # Tab Control 2 ----------------------------------------------------------------------
        self.mighty2 = ttk.LabelFrame(tab2, text=' The Snake ')
        self.mighty2.grid(column=0, row=0, padx=8, pady=4)
        
        # Creating three checkbuttons
        chVarDis = tk.IntVar()
        check1 = tk.Checkbutton(self.mighty2, text="Disabled", variable=chVarDis, state='disabled')
        check1.select()
        check1.grid(column=0, row=0, sticky=tk.W)                   
        
        chVarUn = tk.IntVar()
        check2 = tk.Checkbutton(self.mighty2, text="UnChecked", variable=chVarUn)
        check2.deselect()
        check2.grid(column=1, row=0, sticky=tk.W)                   
        
        chVarEn = tk.IntVar()
        check3 = tk.Checkbutton(self.mighty2, text="Enabled", variable=chVarEn)
        check3.deselect()
        check3.grid(column=2, row=0, sticky=tk.W)                     
        
        # trace the state of the two checkbuttons
        chVarUn.trace('w', lambda unused0, unused1, unused2 : self.checkCallback())    
        chVarEn.trace('w', lambda unused0, unused1, unused2 : self.checkCallback())   
        
        
        # First, we change our Radiobutton global variables into a list
        colors = ["Blue", "Gold", "Red"]   
        
        # create three Radiobuttons using one variable
        self.radVar = tk.IntVar()
        
        # Next we are selecting a non-existing index value for radVar
        self.radVar.set(99)                                 
         
        # Now we are creating all three Radiobutton widgets within one loop
        for col in range(3):                             
            curRad = tk.Radiobutton(self.mighty2, text=colors[col], variable=self.radVar, 
                                    value=col, command=self.radCall)          
            curRad.grid(column=col, row=1, sticky=tk.W)             # row=6
            # And now adding tooltips
            ToolTip(curRad, 'This is a Radiobutton control')
                
        # Add a Progressbar to Tab 2
        self.progress_bar = ttk.Progressbar(tab2, orient='horizontal', length=286, mode='determinate')
        self.progress_bar.grid(column=0, row=3, pady=2)         
             
        # Create a container to hold buttons
        buttons_frame = ttk.LabelFrame(self.mighty2, text=' ProgressBar ')
        buttons_frame.grid(column=0, row=2, sticky='W', columnspan=2)        
        
        # Add Buttons for Progressbar commands
        ttk.Button(buttons_frame, text=" Run Progressbar   ", command=self.run_progressbar).grid(column=0, row=0, sticky='W')  
        ttk.Button(buttons_frame, text=" Start Progressbar  ", command=self.start_progressbar).grid(column=0, row=1, sticky='W')  
        ttk.Button(buttons_frame, text=" Stop immediately ", command=self.stop_progressbar).grid(column=0, row=2, sticky='W')  
        ttk.Button(buttons_frame, text=" Stop after second ", command=self.progressbar_stop_after).grid(column=0, row=3, sticky='W')  
         
        for child in buttons_frame.winfo_children():  
            child.grid_configure(padx=2, pady=2) 
         
        for child in self.mighty2.winfo_children():  
            child.grid_configure(padx=8, pady=2) 
            
        # Creating a Menu Bar
        menu_bar = Menu(self.win)
        self.win.config(menu=menu_bar)
        
        # Add menu items
        file_menu = Menu(menu_bar, tearoff=0)
        file_menu.add_command(label="New")
        file_menu.add_separator()
        file_menu.add_command(label="Exit", command=self._quit)
        menu_bar.add_cascade(label="File", menu=file_menu)
        
        # Display a Message Box
        def _msgBox():
            msg.showinfo('Python Message Info Box', 'A Python GUI created using tkinter:\nThe year is 2019.')  
            
        # Add another Menu to the Menu Bar and an item
        help_menu = Menu(menu_bar, tearoff=0)
        help_menu.add_command(label="About", command=_msgBox)   # display messagebox when clicked
        menu_bar.add_cascade(label="Help", menu=help_menu)
        
        # Change the main windows icon
        self.win.iconbitmap('pyc.ico')
        
        # It is not necessary to create a tk.StringVar() 
        # strData = tk.StringVar()
        strData = self.spin.get()

        # call function
        self.usingGlobal()
        
        self.name_entered.focus()     

        # Add Tooltips -----------------------------------------------------
        # Add a Tooltip to the Spinbox
        ToolTip(self.spin, 'This is a Spinbox control')   
                
        # Add Tooltips to more widgets
        ToolTip(self.name_entered, 'This is an Entry control')  
        ToolTip(self.action, 'This is a Button control')                      
        ToolTip(self.scrol, 'This is a ScrolledText control')
Exemplo n.º 18
0
def openSettings():
    def saveSettings(): #todo add validity checks for variables
        ser.write(b"$0=" + str(stepPulseMicro.get()).encode() + b"\r")
        getGrblResponse()
        ser.write(b"$1=" + str(stepIdleDelay.get()).encode() + b"\r")
        getGrblResponse()

        stepMask = stepInvertX.get()
        stepMask = stepMask | (stepInvertY.get() << 1)
        stepMask = stepMask | (stepInvertZ.get() << 2)
        ser.write(b"$2=" + str(stepMask).encode() + b"\r")
        getGrblResponse()

        dirMask = directionInvertX.get()
        dirMask = dirMask | (directionInvertY.get() << 1)
        dirMask = dirMask | (directionInvertZ.get() << 2)
        ser.write(b"$3=" + str(dirMask).encode() + b"\r")
        getGrblResponse()

        ser.write(b"$4=" + str(stepEnableInvert.get()).encode() + b"\r")
        getGrblResponse()
        ser.write(b"$5=" + str(limitPinsInvert.get()).encode() + b"\r")
        getGrblResponse()
        ser.write(b"$6=" + str(probePinInvert.get()).encode() + b"\r")
        getGrblResponse()

        if str(statusMask.get()) == "Wpos":
            ser.write(b"$10=0\r")
        elif str(statusMask.get()) == "Mpos":
            ser.write(b"$10=1\r")
        else:
            ser.write(b"$10=2\r")

        ser.write(b"$11=" + str(junctionDeviation.get()).encode() + b"\r")
        getGrblResponse()
        ser.write(b"$12=" + str(arcTolerance.get()).encode() + b"\r")
        getGrblResponse()
        ser.write(b"$13=" + str(reportInches.get()).encode() + b"\r")
        getGrblResponse()
        ser.write(b"$20=" + str(softLimits.get()).encode() + b"\r")
        getGrblResponse()
        ser.write(b"$21=" + str(hardLimits.get()).encode() + b"\r")
        getGrblResponse()
        ser.write(b"$22=" + str(homingCycle.get()).encode() + b"\r")
        getGrblResponse()

        homingInvertMask = homingInvertX.get()
        homingInvertMask = homingInvertMask | (homingInvertY.get() << 1)
        homingInvertMask = homingInvertMask | (homingInvertZ.get() << 2)
        ser.write(b"$23=" + str(homingInvertMask).encode() + b"\r")
        getGrblResponse()

        ser.write(b"$24=" + str(homingFeed.get()).encode() + b"\r")
        getGrblResponse()
        ser.write(b"$25=" + str(homingSeek.get()).encode() + b"\r")
        getGrblResponse()
        ser.write(b"$26=" + str(homingDebounce.get()).encode() + b"\r")
        getGrblResponse()
        ser.write(b"$27=" + str(homingPulloff.get()).encode() + b"\r")
        getGrblResponse()
        ser.write(b"$30=" + str(maxSpindleSpeed.get()).encode() + b"\r")
        getGrblResponse()
        ser.write(b"$31=" + str(minSpindleSpeed.get()).encode() + b"\r")
        getGrblResponse()
        ser.write(b"$32=" + str(laserMode.get()).encode() + b"\r")
        getGrblResponse()

        ser.write(b"$100=" + str(xStepsMm.get()).encode() + b"\r")
        getGrblResponse()
        ser.write(b"$101=" + str(yStepsMm.get()).encode() + b"\r")
        getGrblResponse()
        ser.write(b"$102=" + str(zStepsMm.get()).encode() + b"\r")
        getGrblResponse()

        ser.write(b"$110=" + str(xMaxRate.get()).encode() + b"\r")
        getGrblResponse()
        ser.write(b"$111=" + str(yMaxRate.get()).encode() + b"\r")
        getGrblResponse()
        ser.write(b"$112=" + str(zMaxRate.get()).encode() + b"\r")
        getGrblResponse()

        ser.write(b"$120=" + str(xAccl.get()).encode() + b"\r")
        getGrblResponse()
        ser.write(b"$121=" + str(yAccl.get()).encode() + b"\r")
        getGrblResponse()
        ser.write(b"$122=" + str(zAccl.get()).encode() + b"\r")
        getGrblResponse()

        ser.write(b"$130=" + str(xMaxTravel.get()).encode() + b"\r")
        getGrblResponse()
        ser.write(b"$131=" + str(yMaxTravel.get()).encode() + b"\r")
        getGrblResponse()
        ser.write(b"$132=" + str(zMaxTravel.get()).encode() + b"\r")
        getGrblResponse()

        settingsWindow.destroy()

    settingsWindow = tk.Toplevel(window)
    settingsWindow.grab_set()
    getConfig()

    #Step pulse microseconds
    stepPulseMicro = tk.StringVar()
    stepPulseMicro.set(str(s0))
    stepPulseMicroLabel = tk.Label(settingsWindow, text="Step pulse Microseconds: ")
    stepPulseMicroLabel.grid(row=0, column=0)
    stepPulseMicroEntry = tk.Entry(settingsWindow, textvariable=stepPulseMicro)
    stepPulseMicroEntry.grid(row=0,column=1)

    #step idle delay
    stepIdleDelay = tk.StringVar()
    stepIdleDelay.set(str(s1))
    stepIdleDelayLabel = tk.Label(settingsWindow, text="Step idle delay Milliseconds: ")
    stepIdleDelayLabel.grid(row=1, column=0)
    stepIdleDelayEntry = tk.Entry(settingsWindow, textvariable=stepIdleDelay)
    stepIdleDelayEntry.grid(row=1,column=1)

    #step invert port
    stepInvertX = tk.BooleanVar() 
    stepInvertY = tk.BooleanVar()
    stepInvertZ = tk.BooleanVar()
    stepInvertX.set(s2 & 1)
    stepInvertY.set(s2 & 2)
    stepInvertZ.set(s2 & 4)
    tk.Label(settingsWindow, text="Step port invert:").grid(row=2, column=0)
    tk.Checkbutton(settingsWindow, text="X", variable=stepInvertX).grid(row=2, column=1)
    tk.Checkbutton(settingsWindow, text="Y", variable=stepInvertY).grid(row=2, column=2)
    tk.Checkbutton(settingsWindow, text="Z", variable=stepInvertZ).grid(row=2, column=3)

    #direction invert port
    directionInvertX = tk.BooleanVar()
    directionInvertY = tk.BooleanVar()
    directionInvertZ = tk.BooleanVar()
    directionInvertX.set(s3 & 1)
    directionInvertY.set(s3 & 2)
    directionInvertZ.set(s3 & 4)
    tk.Label(settingsWindow, text="Direction port invert:").grid(row=3, column=0)
    tk.Checkbutton(settingsWindow, text="X", variable=directionInvertX).grid(row=3, column=1)
    tk.Checkbutton(settingsWindow, text="Y", variable=directionInvertY).grid(row=3, column=2)
    tk.Checkbutton(settingsWindow, text="Z", variable=directionInvertZ).grid(row=3, column=3)

    #step enable invert
    stepEnableInvert = tk.IntVar()
    stepEnableInvert.set(s4 & 1)
    tk.Label(settingsWindow, text="Step enable invert:").grid(row=4, column=0)
    tk.Checkbutton(settingsWindow, variable=stepEnableInvert).grid(row=4, column=1)

    #limit pins invert
    limitPinsInvert = tk.IntVar()
    limitPinsInvert.set(s5 & 1)
    tk.Label(settingsWindow, text="Limit pins invert:").grid(row=5, column=0)
    tk.Checkbutton(settingsWindow, variable=limitPinsInvert).grid(row=5, column=1)
    
    #probe pin invert
    probePinInvert = tk.IntVar()
    probePinInvert.set(s6 & 1)
    tk.Label(settingsWindow, text="Probe pin invert:").grid(row=6, column=0)
    tk.Checkbutton(settingsWindow, variable=probePinInvert).grid(row=6, column=1)

    #status report mask
    statusOpts = ["Wpos","Mpos","Buf"]
    statusMask = tk.StringVar()
    statusMask.set(statusOpts[s10])
    tk.OptionMenu(settingsWindow, statusMask, *statusOpts).grid(row=7,column=0)

    #junction deviation mm
    junctionDeviation = tk.StringVar()
    junctionDeviation.set(str(s11))
    junctionDeviationLabel = tk.Label(settingsWindow, text="Juntion deviation mm: ")
    junctionDeviationLabel.grid(row=8, column=0)
    junctionDeviationEntry = tk.Entry(settingsWindow, textvariable=junctionDeviation)
    junctionDeviationEntry.grid(row=8,column=1)

    #arc tolerance mm
    arcTolerance = tk.StringVar()
    arcTolerance.set(str(s12))
    arcToleranceLabel = tk.Label(settingsWindow, text="Arc tolerance mm: ")
    arcToleranceLabel.grid(row=9, column=0)
    arcToleranceEntry = tk.Entry(settingsWindow, textvariable=arcTolerance)
    arcToleranceEntry.grid(row=9,column=1)

    #report inches
    reportInches = tk.IntVar()
    reportInches.set(s13 & 1)
    tk.Label(settingsWindow, text="Report inches:").grid(row=10, column=0)
    tk.Checkbutton(settingsWindow, variable=reportInches).grid(row=10, column=1)

    #soft limits
    softLimits = tk.IntVar()
    softLimits.set(s20 & 1)
    tk.Label(settingsWindow, text="Soft limits:").grid(row=11, column=0)
    tk.Checkbutton(settingsWindow, variable=softLimits).grid(row=11, column=1)

    #hard limits
    hardLimits = tk.IntVar()
    hardLimits.set(s21 & 1)
    tk.Label(settingsWindow, text="Hard limits:").grid(row=12, column=0)
    tk.Checkbutton(settingsWindow, variable=hardLimits).grid(row=12, column=1)

    #homing cycle
    homingCycle = tk.IntVar()
    homingCycle.set(s22 & 1)
    tk.Label(settingsWindow, text="Homing cycle:").grid(row=13, column=0)
    tk.Checkbutton(settingsWindow, variable=homingCycle).grid(row=13, column=1)

    #Homing dir invert
    homingInvertX = tk.BooleanVar()
    homingInvertY = tk.BooleanVar()
    homingInvertZ = tk.BooleanVar()
    homingInvertX.set(s23 & 1)
    homingInvertY.set(s23 & 2)
    homingInvertZ.set(s23 & 4)
    tk.Label(settingsWindow, text="Homing direction invert:").grid(row=14, column=0)
    tk.Checkbutton(settingsWindow, text="X", variable=homingInvertX).grid(row=14, column=1)
    tk.Checkbutton(settingsWindow, text="Y", variable=homingInvertY).grid(row=14, column=2)
    tk.Checkbutton(settingsWindow, text="Z", variable=homingInvertZ).grid(row=14, column=3)

    #homing feed mm
    homingFeed = tk.StringVar()
    homingFeed.set(str(s24))
    homingFeedLabel = tk.Label(settingsWindow, text="Homing feed mm/min: ")
    homingFeedLabel.grid(row=15, column=0)
    homingFeedEntry = tk.Entry(settingsWindow, textvariable=homingFeed)
    homingFeedEntry.grid(row=15,column=1)

    #homing seek mm
    homingSeek = tk.StringVar()
    homingSeek.set(str(s25))
    homingSeekLabel = tk.Label(settingsWindow, text="Homing seek mm/min: ")
    homingSeekLabel.grid(row=16, column=0)
    homingSeekEntry = tk.Entry(settingsWindow, textvariable=homingSeek)
    homingSeekEntry.grid(row=16,column=1)

    #homing debounce milli
    homingDebounce = tk.StringVar()
    homingDebounce.set(str(s26))
    homingDebounceLabel = tk.Label(settingsWindow, text="Homing debounce milliseconds: ")
    homingDebounceLabel.grid(row=17, column=0)
    homingDebounceEntry = tk.Entry(settingsWindow, textvariable=homingDebounce)
    homingDebounceEntry.grid(row=17,column=1)

    #homing pulloff mm
    homingPulloff = tk.StringVar()
    homingPulloff.set(str(s27))
    homingPulloffLabel = tk.Label(settingsWindow, text="Homing pulloff mm: ")
    homingPulloffLabel.grid(row=18, column=0)
    homingPulloffEntry = tk.Entry(settingsWindow, textvariable=homingPulloff)
    homingPulloffEntry.grid(row=18,column=1)

    #max spindle speed RPM
    maxSpindleSpeed = tk.StringVar()
    maxSpindleSpeed.set(str(s30))
    maxSpindleSpeedLabel = tk.Label(settingsWindow, text="Max spindle speed RPM: ")
    maxSpindleSpeedLabel.grid(row=19, column=0)
    maxSpindleSpeedEntry = tk.Entry(settingsWindow, textvariable=maxSpindleSpeed)
    maxSpindleSpeedEntry.grid(row=19,column=1)

    #min spindle speed RPM
    minSpindleSpeed = tk.StringVar()
    minSpindleSpeed.set(str(s31))
    minSpindleSpeedLabel = tk.Label(settingsWindow, text="Min spindle speed RPM: ")
    minSpindleSpeedLabel.grid(row=0, column=5)
    minSpindleSpeedEntry = tk.Entry(settingsWindow, textvariable=minSpindleSpeed)
    minSpindleSpeedEntry.grid(row=0,column=6)

    #laser mode
    laserMode = tk.IntVar()
    laserMode.set(s32 & 1)
    tk.Label(settingsWindow, text="Laser mode:").grid(row=13, column=5)
    tk.Checkbutton(settingsWindow, variable=laserMode).grid(row=13, column=6)

    #x steps per mm
    xStepsMm = tk.StringVar()
    xStepsMm.set(str(s100))
    xStepsMmLabel = tk.Label(settingsWindow, text="X steps per mm: ")
    xStepsMmLabel.grid(row=1, column=5)
    xStepsMmEntry = tk.Entry(settingsWindow, textvariable=xStepsMm)
    xStepsMmEntry.grid(row=1,column=6)

    #y steps per mm
    yStepsMm = tk.StringVar()
    yStepsMm.set(str(s101))
    yStepsMmLabel = tk.Label(settingsWindow, text="Y steps per mm: ")
    yStepsMmLabel.grid(row=2, column=5)
    yStepsMmEntry = tk.Entry(settingsWindow, textvariable=yStepsMm)
    yStepsMmEntry.grid(row=2,column=6)

    #z steps per mm
    zStepsMm = tk.StringVar()
    zStepsMm.set(str(s102))
    zStepsMmLabel = tk.Label(settingsWindow, text="Z steps per mm: ")
    zStepsMmLabel.grid(row=3, column=5)
    zStepsMmEntry = tk.Entry(settingsWindow, textvariable=zStepsMm)
    zStepsMmEntry.grid(row=3,column=6)

    #x max rate mm/min
    xMaxRate = tk.StringVar()
    xMaxRate.set(str(s110))
    xMaxRateLabel = tk.Label(settingsWindow, text="X max rate mm/min: ")
    xMaxRateLabel.grid(row=4, column=5)
    xMaxRateEntry = tk.Entry(settingsWindow, textvariable=xMaxRate)
    xMaxRateEntry.grid(row=4,column=6)

    #y max rate
    yMaxRate = tk.StringVar()
    yMaxRate.set(str(s111))
    yMaxRateLabel = tk.Label(settingsWindow, text="Y max rate mm/min: ")
    yMaxRateLabel.grid(row=5, column=5)
    yMaxRateEntry = tk.Entry(settingsWindow, textvariable=yMaxRate)
    yMaxRateEntry.grid(row=5,column=6)

    #z max rate
    zMaxRate = tk.StringVar()
    zMaxRate.set(str(s112))
    zMaxRateLabel = tk.Label(settingsWindow, text="Z max rate mm/min: ")
    zMaxRateLabel.grid(row=6, column=5)
    zMaxRateEntry = tk.Entry(settingsWindow, textvariable=zMaxRate)
    zMaxRateEntry.grid(row=6,column=6)

    #x accl mm/sec2
    xAccl = tk.StringVar()
    xAccl.set(str(s120))
    xAcclLabel = tk.Label(settingsWindow, text="X acceleration mm/sec^2: ")
    xAcclLabel.grid(row=7, column=5)
    xAcclEntry = tk.Entry(settingsWindow, textvariable=xAccl)
    xAcclEntry.grid(row=7,column=6)

    #y accl mm/sec2
    yAccl = tk.StringVar()
    yAccl.set(str(s121))
    yAcclLabel = tk.Label(settingsWindow, text="Y acceleration mm/sec^2: ")
    yAcclLabel.grid(row=8, column=5)
    yAcclEntry= tk.Entry(settingsWindow, textvariable=yAccl)
    yAcclEntry.grid(row=8,column=6)

    #z accl mm/sec2
    zAccl = tk.StringVar()
    zAccl.set(str(s122))
    zAcclLabel = tk.Label(settingsWindow, text="Z acceleration mm/sec^2: ")
    zAcclLabel.grid(row=9, column=5)
    zAcclEntry = tk.Entry(settingsWindow, textvariable=zAccl)
    zAcclEntry.grid(row=9,column=6)

    #x max travel
    xMaxTravel = tk.StringVar()
    xMaxTravel.set(str(s130))
    xMaxTravelLabel = tk.Label(settingsWindow, text="X max travel mm: ")
    xMaxTravelLabel.grid(row=10, column=5)
    xMaxTravelEntry = tk.Entry(settingsWindow, textvariable=xMaxTravel)
    xMaxTravelEntry.grid(row=10,column=6)

    #y max travel
    yMaxTravel = tk.StringVar()
    yMaxTravel.set(str(s131))
    yMaxTravelLabel = tk.Label(settingsWindow, text="Y max travel mm: ")
    yMaxTravelLabel.grid(row=11, column=5)
    yMaxTravelEntry = tk.Entry(settingsWindow, textvariable=yMaxTravel)
    yMaxTravelEntry.grid(row=11,column=6)

    #z max travel
    zMaxTravel = tk.StringVar()
    zMaxTravel.set(str(s132))
    zMaxTravelLabel = tk.Label(settingsWindow, text="Z max travel mm: ")
    zMaxTravelLabel.grid(row=12, column=5)
    zMaxTravelEntry = tk.Entry(settingsWindow, textvariable=zMaxTravel)
    zMaxTravelEntry.grid(row=12,column=6)

    tk.Button(settingsWindow, text="Save settings", command=saveSettings).grid(row=50,column=1)
Exemplo n.º 19
0
    def __init__(self, master):
        #Main Window
        self.master = master
        master.title("ASX Data Analysis")
        master.geometry("1280x960")
        master.pack_propagate(False)
        master.resizable(0, 0)
        self.tabBook = ttk.Notebook(master)
        self.tabBook.place(relheight=1, relwidth=1)

        #Tab for Details
        #Frame for Input fields and buttons
        self.inputFrame = ttk.LabelFrame(self.tabBook, text="User Input")
        self.inputFrame.place(width=1280)
        self.tabBook.add(self.inputFrame, text="Details")
        #Lables
        tk.Label(self.inputFrame, text="ASX ticker", width=20,
                 anchor="w").grid(row=0, column=1)
        self.tickerEntry = tk.Entry(self.inputFrame, width=20)
        self.tickerEntry.grid(row=0, column=0)
        #Buttons
        ttk.Button(self.inputFrame,
                   text='Show Data for listing',
                   width=20,
                   command=self.printDetails).grid(row=2, column=0)
        ttk.Button(self.inputFrame,
                   text='Refresh Daily Data',
                   width=20,
                   command=self.getDailyDetails).grid(row=3, column=0)
        ttk.Button(self.inputFrame,
                   text='Quit',
                   width=10,
                   command=self.master.destroy).place(relx=0.9)
        ttk.Button(self.inputFrame,
                   text='Update Database',
                   width=18,
                   command=self.confirm).place(relx=0.9, rely=0.03)

        # Frame for Treeview (info)
        self.infoFrame = ttk.LabelFrame(self.tabBook, text="Stock Summary")
        self.infoFrame.place(height=370, width=640, rely=0.12)
        #Treeview widget
        self.infoTv = Tvwidget(frame=self.infoFrame,
                               columns=("Item", "Value"),
                               relheight=1,
                               relwidth=1)

        #Frame for Estimates (calculations)
        self.estimateFrame = ttk.LabelFrame(self.tabBook,
                                            text="Estimated forward values")
        self.estimateFrame.place(height=370, width=640, rely=0.12, relx=0.5)
        #Calc button
        ttk.Button(self.estimateFrame,
                   text='Calculate Estimates',
                   width=20,
                   command=self.runEstimate).grid(row=0, column=2)
        #Entry fields
        self.ebitdaEntry = Calcinput(self.estimateFrame,
                                     text="EBITDA ($M)",
                                     row=0,
                                     col=0)
        self.sharesOutstandingEntry = Calcinput(self.estimateFrame,
                                                text="Shares Outstanding (M)",
                                                row=1,
                                                col=0)
        self.longDebtEntry = Calcinput(self.estimateFrame,
                                       text="L/T Debt ($M)",
                                       row=2,
                                       col=0)
        self.cashEntry = Calcinput(self.estimateFrame,
                                   text="Cash on hand ($M)",
                                   row=3,
                                   col=0)
        self.percentEbitdaEntry = Calcinput(self.estimateFrame,
                                            text="% EBITDA",
                                            row=4,
                                            col=0)
        tk.Label(self.estimateFrame, width=20).grid(row=5, column=0)

        #Calculated values
        self.medianPriceCalc = Calcoutput(self.estimateFrame,
                                          text="Median Price",
                                          row=6,
                                          col=0,
                                          width=20)
        self.averagePriceCalc = Calcoutput(self.estimateFrame,
                                           text="Average Price",
                                           row=7,
                                           col=0,
                                           width=20)
        self.minPriceCalc = Calcoutput(self.estimateFrame,
                                       text="Min Price",
                                       row=8,
                                       col=0,
                                       width=20)
        self.maxPriceCalc = Calcoutput(self.estimateFrame,
                                       text="Max Price",
                                       row=9,
                                       col=0,
                                       width=20)
        self.divPaidCalc = Calcoutput(self.estimateFrame,
                                      text="Dividends Paid ($M)",
                                      row=10,
                                      col=0,
                                      width=20)
        self.medianYieldCalc = Calcoutput(self.estimateFrame,
                                          text="Median Yield",
                                          row=11,
                                          col=0,
                                          width=20)
        self.averageYieldCalc = Calcoutput(self.estimateFrame,
                                           text="Average Yield",
                                           row=12,
                                           col=0,
                                           width=20)
        self.minYieldCalc = Calcoutput(self.estimateFrame,
                                       text="Minimum Yield",
                                       row=13,
                                       col=0,
                                       width=20)
        self.maxYieldCalc = Calcoutput(self.estimateFrame,
                                       text="Maximum Yield",
                                       row=14,
                                       col=0,
                                       width=20)
        self.assessedDivCalc = Calcoutput(self.estimateFrame,
                                          text="Assessed Dividend",
                                          row=15,
                                          col=0,
                                          width=20)

        #stats values
        tk.Label(self.estimateFrame, width=10,
                 text="Cash Yield %").grid(row=5, column=3)
        tk.Label(self.estimateFrame, width=10,
                 text="EV Multiple").grid(row=5, column=4)
        self.medianValueCalc = Statoutput(self.estimateFrame,
                                          text="Median Value",
                                          row=6,
                                          col=2,
                                          width=10)
        self.meanValueCalc = Statoutput(self.estimateFrame,
                                        text="Mean Value",
                                        row=7,
                                        col=2,
                                        width=10)
        self.stdValueCalc = Statoutput(self.estimateFrame,
                                       text="Std. Dev.",
                                       row=8,
                                       col=2,
                                       width=10)
        self.minValueCalc = Statoutput(self.estimateFrame,
                                       text="Min. value",
                                       row=9,
                                       col=2,
                                       width=10)
        self.maxValueCalc = Statoutput(self.estimateFrame,
                                       text="Max. value",
                                       row=10,
                                       col=2,
                                       width=10)

        #Frame for KPIs (Selected info from database)
        self.keyPerformanceFrame = ttk.LabelFrame(
            self.tabBook, text="Key Performance Indicators")
        self.keyPerformanceFrame.place(height=165, width=1280, rely=0.5)
        #Treeview widget
        self.keyPerformanceTv = Tvwidget(frame=self.keyPerformanceFrame,
                                         columns=tvcolumns,
                                         relheight=1,
                                         relwidth=1,
                                         firstColWidth=250,
                                         colWidth=100)

        #Frame for Details (Extended info from database)
        self.detailsFrame = ttk.LabelFrame(self.tabBook,
                                           text="Historical Performance")
        self.detailsFrame.place(height=300, width=1280, rely=0.67)
        #Treeview widget
        self.detailTv = Tvwidget(frame=self.detailsFrame,
                                 columns=tvcolumns,
                                 relheight=1,
                                 relwidth=1,
                                 firstColWidth=250,
                                 colWidth=100)

        #Tab for Trend Plots
        self.trendsFrame = ttk.LabelFrame(self.tabBook, text="Plots")
        self.trendsFrame.place(relheight=1, relwidth=1)
        self.tabBook.add(self.trendsFrame, text="Plots")
        ttk.Button(self.trendsFrame,
                   text='Plot Stock Price',
                   width=20,
                   command=self.plotTrends).grid(row=1, column=0)
        ttk.Button(self.trendsFrame,
                   text='Quit',
                   width=10,
                   command=self.master.destroy).place(relx=0.9)

        #Tab for Screening Tool
        self.screenFrame = ttk.LabelFrame(self.tabBook, text="Screening Tool")
        self.screenFrame.place(relheight=1, relwidth=1)
        self.tabBook.add(self.screenFrame, text="Screening Tool")
        tk.Label(self.screenFrame, width=20).grid(row=12, column=0)
        ttk.Button(self.screenFrame,
                   text='Search',
                   width=20,
                   command=self.screen).grid(row=13, column=0)
        ttk.Button(self.screenFrame,
                   text='Quit',
                   width=10,
                   command=self.master.destroy).place(relx=0.9)
        self.search = tk.IntVar()
        self.search.set(1)
        tk.Radiobutton(self.screenFrame,
                       text="Most recent year only",
                       variable=self.search,
                       value=1,
                       anchor="w",
                       width=20).grid(row=13, column=3)
        tk.Radiobutton(self.screenFrame,
                       text="Average from 2010",
                       variable=self.search,
                       value=2,
                       anchor="w",
                       width=20).grid(row=14, column=3)
        self.sectors = [
            "All", "All", "Automobiles & Components", "Banks", "Capital Goods",
            "Class Pend", "Commerical & Professional Services",
            "Consumer Durables & Apparel", "Consumer Services",
            "Diversified Financials", "Energy", "Food & Staples Retailing",
            "Food, Beverage & Tobacco", "Health Care Equipment & Services",
            "Household & Personal Products", "Insurance", "Materials",
            "Media & Entertainment", "Not Applic",
            "Pharmaceuticals, Biotechnology & Life Sciences", "Real Estate",
            "Retailing", "Semiconductors & Semiconductor Equipment",
            "Software & Services", "Technology Hardware & Equipment",
            "Telecommunication Services", "Transportation", "Utilities"
        ]
        self.sector = tk.StringVar(self.screenFrame)
        self.sector.set("All")
        tk.Label(self.screenFrame,
                 text="Sector/Industry",
                 width=20,
                 anchor="w").grid(row=13, column=6)
        self.optionmenu = ttk.OptionMenu(self.screenFrame, self.sector,
                                         *self.sectors)
        self.optionmenu.grid(row=14, column=6)
        self.optionmenu.config(width=20)

        #Entry fields for screening tool
        self.marketCapCriteria = Criteriawidget(self.screenFrame,
                                                "Market Capital ($M)", 0, 0)
        self.sharesOutstandingCriteria = Criteriawidget(
            self.screenFrame, "Shares Outstanding (mil)", 4, 0)
        self.shortDebtCriteria = Criteriawidget(self.screenFrame,
                                                "Short-term debt ($M)", 8, 0)
        self.dividendsCriteria = Criteriawidget(self.screenFrame,
                                                "Dividends (¢)", 0, 3)
        self.dividendYieldCriteria = Criteriawidget(self.screenFrame,
                                                    "Dividend yield (%)", 4, 3)
        self.ebitdaCriteria = Criteriawidget(self.screenFrame, "EBITDA ($M)",
                                             8, 3)
        self.cashYieldCriteria = Criteriawidget(self.screenFrame,
                                                "Cash yield (%)", 0, 6)
        self.cashCriteria = Criteriawidget(self.screenFrame,
                                           "Cash on hand ($M)", 4, 6)
        self.longDebtCriteria = Criteriawidget(self.screenFrame,
                                               "Long-term debt ($M)", 8, 6)
        self.bookValueCriteria = Criteriawidget(self.screenFrame,
                                                "Book value ($)", 0, 9)
        self.evMultipleCriteria = Criteriawidget(self.screenFrame,
                                                 "EV Multiple", 4, 9)
        self.returnCapitalCriteria = Criteriawidget(self.screenFrame,
                                                    "Return on capital (%)", 8,
                                                    9)
        self.priceEarningsCriteria = Criteriawidget(self.screenFrame,
                                                    "Price/Earnings (%)", 0,
                                                    12)
        self.profitMarginCriteria = Criteriawidget(self.screenFrame,
                                                   "Profit Margin(%)", 4, 12)
        self.netDebtEbitdaRatioCriteria = Criteriawidget(
            self.screenFrame, "Net debt : EBITDA (ratio)", 8, 12)

        #Screening tool output frame
        self.screenOutput = ttk.LabelFrame(self.screenFrame,
                                           text="Search Results")
        self.screenOutput.place(height=650, width=1280, rely=0.29)

        #Screening tool Output treeview
        columns = ("Name", "Ticker", "Sector", "EV Multiple", "Cash yield (%)",
                   "Net debt : EBITDA (ratio)", "Market capital ($M)",
                   "Dividends (c)", "Dividend yield (%)", "Book value ($)",
                   "Price / Earnings (%)", "Shares Outstanding (mil)",
                   "Cash on hand ($M)", "Profit margin (%)",
                   "Short-term debt ($M)", "EBITDA ($M)",
                   "Return on capital (%)", "Long-term debt ($M)")
        self.screenTv = Tvwidget(self.screenOutput, 1, 1, columns, 250, 150)
Exemplo n.º 20
0
    def __init__(self):
        window = tk.Tk()
        window.title("Arduino GUI Demo")
        self.ardState = False  # is arduino open or not

        # a frame contains COM's information, and start/stop button
        frame_COMinf = tk.Frame(window)
        frame_COMinf.grid(row=1, column=1)

        labelCOM = tk.Label(frame_COMinf, text="Port: ")
        self.COM = tk.StringVar(value="COM3")
        ertryCOM = tk.Entry(frame_COMinf, textvariable=self.COM)
        labelCOM.grid(row=1, column=1, padx=5, pady=3)
        ertryCOM.grid(row=1, column=2, padx=5, pady=3)

        labelBaudrate = tk.Label(frame_COMinf, text="Baudrate: ")
        self.Baudrate = tk.IntVar(value=9600)
        ertryBaudrate = tk.Entry(frame_COMinf, textvariable=self.Baudrate)
        labelBaudrate.grid(row=1, column=3, padx=5, pady=3)
        ertryBaudrate.grid(row=1, column=4, padx=5, pady=3)

        labelParity = tk.Label(frame_COMinf, text="Parity: ")
        self.Parity = tk.StringVar(value="NONE")
        comboParity = ttk.Combobox(frame_COMinf,
                                   width=17,
                                   textvariable=self.Parity)
        comboParity["values"] = ("NONE", "ODD", "EVEN", "MARK", "SPACE")
        comboParity["state"] = "readonly"
        labelParity.grid(row=2, column=1, padx=5, pady=3)
        comboParity.grid(row=2, column=2, padx=5, pady=3)

        labelStopbits = tk.Label(frame_COMinf, text="Stopbits: ")
        self.Stopbits = tk.StringVar(value="1")
        comboStopbits = ttk.Combobox(frame_COMinf,
                                     width=17,
                                     textvariable=self.Stopbits)
        comboStopbits["values"] = ("1", "1.5", "2")
        comboStopbits["state"] = "readonly"
        labelStopbits.grid(row=2, column=3, padx=5, pady=3)
        comboStopbits.grid(row=2, column=4, padx=5, pady=3)

        self.buttonSS = tk.Button(frame_COMinf,
                                  text="Start",
                                  command=self.processButtonSS)
        self.buttonSS.grid(row=3, column=4, padx=5, pady=3, sticky=tk.E)

        # serial object
        self.ser = serial.Serial()
        # serial read threading
        self.ReadardThread = threading.Thread(target=self.Readard)
        self.ReadardThread.start()

        frameRecv = tk.Frame(window)
        frameRecv.grid(row=2, column=1)
        labelOutText = tk.Label(frameRecv, text="Received Data:")
        labelOutText.grid(row=1, column=1, padx=3, pady=2, sticky=tk.W)

        frameRecvSon = tk.Frame(frameRecv)
        frameRecvSon.grid(row=2, column=1)
        scrollbarRecv = tk.Scrollbar(frameRecvSon)
        scrollbarRecv.pack(side=tk.RIGHT, fill=tk.Y)
        self.OutputText = tk.Text(frameRecvSon,
                                  wrap=tk.WORD,
                                  width=60,
                                  height=20,
                                  yscrollcommand=scrollbarRecv.set)
        self.OutputText.pack()

        frameTrans = tk.Frame(window)
        frameTrans.grid(row=3, column=1)

        labelInText1 = tk.Label(frameTrans, text="RPM:")
        labelInText1.grid(row=1, column=1, padx=0, pady=2, sticky=tk.W)
        frameTransSon1 = tk.Frame(frameTrans)
        frameTransSon1.grid(row=2, column=1)
        self.InputText1 = tk.Text(frameTransSon1,
                                  wrap=tk.WORD,
                                  width=56,
                                  height=1)
        self.InputText1.pack()
        self.buttonSend = tk.Button(frameTrans,
                                    text="Send",
                                    command=self.processButtonSend1)
        self.buttonSend.grid(row=2, column=2, padx=3, pady=2, sticky=tk.E)

        labelInText2 = tk.Label(frameTrans, text="Temperature (C):")
        labelInText2.grid(row=3, column=1, padx=0, pady=2, sticky=tk.W)
        frameTransSon2 = tk.Frame(frameTrans)
        frameTransSon2.grid(row=4, column=1)
        self.InputText2 = tk.Text(frameTransSon2,
                                  wrap=tk.WORD,
                                  width=56,
                                  height=1)
        self.InputText2.pack()
        self.buttonSend = tk.Button(frameTrans,
                                    text="Send",
                                    command=self.processButtonSend2)
        self.buttonSend.grid(row=4, column=2, padx=3, pady=2, sticky=tk.E)

        labelInText3 = tk.Label(frameTrans, text="pH:")
        labelInText3.grid(row=5, column=1, padx=0, pady=2, sticky=tk.W)
        frameTransSon3 = tk.Frame(frameTrans)
        frameTransSon3.grid(row=6, column=1)
        self.InputText3 = tk.Text(frameTransSon3,
                                  wrap=tk.WORD,
                                  width=56,
                                  height=1)
        self.InputText3.pack()
        self.buttonSend = tk.Button(frameTrans,
                                    text="Send",
                                    command=self.processButtonSend3)
        self.buttonSend.grid(row=6, column=2, padx=3, pady=2, sticky=tk.E)

        window.mainloop()
Exemplo n.º 21
0
    def __init__(self, id, root, menu, todo, matrix, data=None):
        if data == None:
            self.name = tk.StringVar(value=id)
            self.urgency = tk.IntVar(value=len(task_names))
            self.importance = tk.IntVar(value=len(task_names))
        else:
            self.name = tk.StringVar(value=data[0])
            self.urgency = tk.IntVar(value=data[1])
            self.importance = tk.IntVar(value=data[2])

        self.unitM = tk.Label(matrix,
                              textvariable=self.name,
                              font='Times 10 bold',
                              height=2,
                              width=8,
                              wraplength=62)

        self.unitU = tk.Frame(todo)
        self.unitI = tk.Frame(todo)
        self.unitU.grid(row=self.urgency.get() + 1, column=1)
        self.unitI.grid(row=self.importance.get() + 1, column=2)
        self.itemU = tk.Entry(self.unitU, textvariable=self.name)
        self.increaseU = tk.Button(self.unitU,
                                   text='Raise',
                                   command=functools.partial(
                                       self.increase_urgency, self.unitU,
                                       self.urgency))
        self.decreaseU = tk.Button(self.unitU,
                                   text='Lower',
                                   command=functools.partial(
                                       self.decrease_urgency, self.unitU,
                                       self.urgency))
        self.deleteU = tk.Button(self.unitU,
                                 text='Delete',
                                 command=functools.partial(
                                     self.delete_task, self.unitU, self.unitI,
                                     self.unitM))
        self.itemU.grid(row=1, column=1, columnspan=3)
        self.increaseU.grid(row=2, column=1)
        self.decreaseU.grid(row=2, column=2)
        self.deleteU.grid(row=2, column=3)

        self.itemI = tk.Entry(self.unitI, textvariable=self.name)
        self.increaseI = tk.Button(self.unitI,
                                   text='Raise',
                                   command=functools.partial(
                                       self.increase_importance, self.unitI,
                                       self.importance))
        self.decreaseI = tk.Button(self.unitI,
                                   text='Lower',
                                   command=functools.partial(
                                       self.decrease_importance, self.unitI,
                                       self.importance))
        self.deleteI = tk.Button(self.unitI,
                                 text='Delete',
                                 command=functools.partial(
                                     self.delete_task, self.unitU, self.unitI,
                                     self.unitM))
        self.itemI.grid(row=1, column=1, columnspan=3)
        self.increaseI.grid(row=2, column=1)
        self.decreaseI.grid(row=2, column=2)
        self.deleteI.grid(row=2, column=3)
# Adding a Button
action = ttk.Button(win, text="Click Me!", command=click_me)
action.grid(column=2, row=1)  # <= change column to 2

# Creating three checkbuttons
ttk.Label(win, text="Choose a number:").grid(column=1, row=0)
number = tk.StringVar()
number_chosen = ttk.Combobox(win,
                             width=12,
                             textvariable=number,
                             state='readonly')
number_chosen['values'] = (1, 2, 4, 42, 100)
number_chosen.grid(column=1, row=1)
number_chosen.current(0)

chVarDis = tk.IntVar()
check1 = tk.Checkbutton(win,
                        text="Disabled",
                        variable=chVarDis,
                        state='disabled')
check1.select()
check1.grid(column=0, row=4, sticky=tk.W)

chVarUn = tk.IntVar()
check2 = tk.Checkbutton(win, text="UnChecked", variable=chVarUn)
check2.deselect()
check2.grid(column=1, row=4, sticky=tk.W)

chVarEn = tk.IntVar()
check3 = tk.Checkbutton(win, text="Enabled", variable=chVarEn)
check3.deselect()
Exemplo n.º 23
0
#Menú superior
menubar = tk.Menu(root)
menubar.add_cascade(
    label="Nota",
    command=Nota,
)


def Validar(char):
    return char in "0123456789."


validatecommand = root.register(Validar)
Nombres = tk.StringVar()
Capturas = tk.IntVar()

label = tk.Label(root,
                 text="Reconocimiento Facial",
                 font=("times new roman", 20),
                 fg="white",
                 bg="maroon",
                 height=2).grid(row=0,
                                rowspan=2,
                                columnspan=2,
                                sticky=N + E + W + S,
                                padx=5,
                                pady=5)

label = tk.Label(root,
                 text="Nombre:",
Exemplo n.º 24
0
        output.place(x=250, y=68, anchor='center')


# The modulo equation button
def modulo():
    try:
        moduloNum = (firstNumber.get()) % (secondNumber.get())
        output = Label(master, text=moduloNum, width=20)
        output.place(x=250, y=68, anchor='center')
    except ZeroDivisionError:
        output = Label(master, text='You can not modulo by 0', width=20)
        output.place(x=250, y=68, anchor='center')


# Creates the Entry boxes for the numbers
firstNumber = tk.IntVar()
firstNum = ttk.Entry(master, width=12, textvariable=firstNumber)
firstNum.grid(column=2, row=0)

secondNumber = tk.IntVar()
secondNum = ttk.Entry(master, width=12, textvariable=secondNumber)
secondNum.grid(column=4, row=0)

# Adds a button to the master
add = ttk.Button(master, text='+', command=add)
add.grid(column=1, row=8)

# Adds a subtraction button
subtract = ttk.Button(master, text='-', command=subtract)
subtract.grid(column=2, row=8)
Exemplo n.º 25
0
    def __init__(self, master, **kwargs):
        global x, var
        x = Morse()
        var = tk.IntVar()
        l1 = tk.Label(text="Select a task",
                      font=("Helvetica", 30, "bold"),
                      activeforeground="black",
                      fg="black",
                      bg="yellow")
        l1.place(x=140, y=100)
        l2 = tk.Label(text="Message:",
                      font=("Helvetica", 20, "bold"),
                      activeforeground="black",
                      fg="black",
                      bg="yellow")
        l2.place(x=140, y=230)
        l3 = tk.Label(text="Morse code:",
                      font=("Helvetica", 20, "bold"),
                      activeforeground="black",
                      fg="black",
                      bg="yellow")
        l3.place(x=140, y=400)

        textBox1 = tk.Text(height=5,
                           width=80,
                           relief="sunken",
                           bd=5,
                           font=("Helvetica", 15))
        textBox1.configure(state='disabled')
        textBox1.place(x=340, y=400)
        textBox2 = tk.Text(height=3,
                           width=80,
                           relief="sunken",
                           bd=5,
                           font=("Helvetica", 15))
        textBox2.configure(state='disabled')
        textBox2.place(x=340, y=230)
        action = tk.Button(root,
                           bd=5,
                           activeforeground="#ffffff",
                           activebackground="violet",
                           fg="white",
                           bg="#ed91af",
                           width=12,
                           height=1,
                           font=("verdana", 15, 'bold'))
        btn1 = tk.Button(
            root,
            text="Encode",
            bd=5,
            activebackground="#ed91af",
            bg="#ed91af",
            font=("verdana", 20),
            command=lambda: self.task(1, textBox1, textBox2, action))
        btn1.place(x=550, y=100)
        btn2 = tk.Button(
            root,
            text="Decode",
            bd=5,
            activebackground="#ed91af",
            bg="#ed91af",
            font=("verdana", 20),
            command=lambda: self.task(2, textBox1, textBox2, action))
        btn2.place(x=1050, y=100)

        btn4 = tk.Button(
            root,
            text="Back",
            bd=5,
            activeforeground="#ffffff",
            activebackground="violet",
            fg="white",
            bg="#ed91af",
            width=12,
            height=1,
            font=("verdana", 12, 'bold'),
            command=lambda: self.back(l1, l2, l3, textBox1, textBox2, btn1,
                                      btn2, action, btn4))
        btn4.place(x=140, y=628)
Exemplo n.º 26
0
import tkinter as tk

string_variable = tk.StringVar()
int_variable = tk.IntVar()
float_var = tk.DoubleVar()
bool_variable = tk.BooleanVar()

# Getting and Setting
string_variable.set('Hi')
string_variable.get()


# Tracing
def r_observer(*args):
    print("Reading")


def w_observer(*args):
    print("Writing")


# r_observer will be called when string_variable is read
r_obsid = string_variable.trace("r", r_observer)
# w_observer will be called when string_variable is set
w_obsid = string_variable.trace('w', w_observer)
Exemplo n.º 27
0
    def __init__(self, parent):
        tk.Frame.__init__(self, parent)
        self.config(borderwidth=2, relief=tk.RAISED, background=COLORS.fr_read)
        self.grid(row=2, column=0, columnspan=8, sticky='EW')
        #
        #       Get Element symbols and characteristic wavelength from DISCUS
        nwave, self.symbols, self.wavelengths = get_wave()
        #
        #       Get Fourier settings from DISCUS
        corners, increment, radiation, bElement, wvle, ener, adp, ano, \
                percent, lot_type, lot_num, lot_dim, lot_per \
                = suite.discus_get_fourier()
        for i in range(4):
            for j in range(3):
                corners[i, j] = round_rbn(corners[i, j], 5)
        wvle = round_rbn(wvle, 5)
        ener = round_rbn(ener, 5)
        #
        #       Determine if an element was given for its characteristic radiation
        Element = bElement.decode()
        ElementNumber = -1
        for i in range(nwave):
            if Element == self.symbols[i]:
                ElementNumber = i
                break

        self.ll_h = tk.StringVar()
        self.ll_k = tk.StringVar()
        self.ll_l = tk.StringVar()
        self.lr_h = tk.StringVar()
        self.lr_k = tk.StringVar()
        self.lr_l = tk.StringVar()
        self.ul_h = tk.StringVar()
        self.ul_k = tk.StringVar()
        self.ul_l = tk.StringVar()
        self.tl_h = tk.StringVar()
        self.tl_k = tk.StringVar()
        self.tl_l = tk.StringVar()
        self.ll_h.set(str(corners[0, 0]))
        self.ll_k.set(str(corners[0, 1]))
        self.ll_l.set(str(corners[0, 2]))
        self.lr_h.set(str(corners[1, 0]))
        self.lr_k.set(str(corners[1, 1]))
        self.lr_l.set(str(corners[1, 2]))
        self.ul_h.set(str(corners[2, 0]))
        self.ul_k.set(str(corners[2, 1]))
        self.ul_l.set(str(corners[2, 2]))
        self.tl_h.set(str(corners[3, 0]))
        self.tl_k.set(str(corners[3, 1]))
        self.tl_l.set(str(corners[3, 2]))
        self.caption = ttk.Label(self,
                                 text='Single crystal Fourier calculations')
        self.label_h = ttk.Label(self, text='H', anchor='center')
        self.label_k = ttk.Label(self, text='K', anchor='center')
        self.label_l = ttk.Label(self, text='L', anchor='center')
        self.label_ll = ttk.Label(self, text='Lower left')
        self.label_lr = ttk.Label(self, text='Lower right')
        self.label_ul = ttk.Label(self, text='Upper left')
        self.label_tl = ttk.Label(self, text='Top left')
        self.entry_ll_h = ttk.Entry(self,
                                    textvariable=self.ll_h,
                                    width=8,
                                    justify='right',
                                    background=COLORS.en_back,
                                    foreground=COLORS.en_fore)
        self.entry_ll_k = ttk.Entry(self,
                                    textvariable=self.ll_k,
                                    width=8,
                                    justify='right',
                                    background=COLORS.en_back,
                                    foreground=COLORS.en_fore)
        self.entry_ll_l = ttk.Entry(self,
                                    textvariable=self.ll_l,
                                    width=8,
                                    justify='right',
                                    background=COLORS.en_back,
                                    foreground=COLORS.en_fore)
        self.entry_lr_h = ttk.Entry(self,
                                    textvariable=self.lr_h,
                                    width=8,
                                    justify='right',
                                    background=COLORS.en_back,
                                    foreground=COLORS.en_fore)
        self.entry_lr_k = ttk.Entry(self,
                                    textvariable=self.lr_k,
                                    width=8,
                                    justify='right',
                                    background=COLORS.en_back,
                                    foreground=COLORS.en_fore)
        self.entry_lr_l = ttk.Entry(self,
                                    textvariable=self.lr_l,
                                    width=8,
                                    justify='right',
                                    background=COLORS.en_back,
                                    foreground=COLORS.en_fore)
        self.entry_ul_h = ttk.Entry(self,
                                    textvariable=self.ul_h,
                                    width=8,
                                    justify='right',
                                    background=COLORS.en_back,
                                    foreground=COLORS.en_fore)
        self.entry_ul_k = ttk.Entry(self,
                                    textvariable=self.ul_k,
                                    width=8,
                                    justify='right',
                                    background=COLORS.en_back,
                                    foreground=COLORS.en_fore)
        self.entry_ul_l = ttk.Entry(self,
                                    textvariable=self.ul_l,
                                    width=8,
                                    justify='right',
                                    background=COLORS.en_back,
                                    foreground=COLORS.en_fore)
        self.entry_tl_h = ttk.Entry(self,
                                    textvariable=self.tl_h,
                                    width=8,
                                    justify='right',
                                    background=COLORS.en_back,
                                    foreground=COLORS.en_fore)
        self.entry_tl_k = ttk.Entry(self,
                                    textvariable=self.tl_k,
                                    width=8,
                                    justify='right',
                                    background=COLORS.en_back,
                                    foreground=COLORS.en_fore)
        self.entry_tl_l = ttk.Entry(self,
                                    textvariable=self.tl_l,
                                    width=8,
                                    justify='right',
                                    background=COLORS.en_back,
                                    foreground=COLORS.en_fore)
        #
        self.label_np = ttk.Label(self, text='Points along axis:')
        self.label_np_a = ttk.Label(self, text='Abscissa')
        self.label_np_o = ttk.Label(self, text='Ordinate')
        self.label_np_t = ttk.Label(self, text='Top axis')
        self.np_aa = tk.StringVar()
        self.np_oo = tk.StringVar()
        self.np_tt = tk.StringVar()
        self.np_aa.set(str(increment[0]))
        self.np_oo.set(str(increment[1]))
        self.np_tt.set(str(increment[2]))
        self.np_a = tk.Spinbox(self,
                               from_=1,
                               to=1001,
                               width=8,
                               justify='right',
                               textvariable=self.np_aa,
                               background=COLORS.en_back,
                               foreground=COLORS.en_fore)
        self.np_o = tk.Spinbox(self,
                               from_=1,
                               to=1001,
                               width=8,
                               justify='right',
                               textvariable=self.np_oo,
                               background=COLORS.en_back,
                               foreground=COLORS.en_fore)
        self.np_t = tk.Spinbox(self,
                               from_=1,
                               to=1001,
                               width=8,
                               justify='right',
                               textvariable=self.np_tt,
                               background=COLORS.en_back,
                               foreground=COLORS.en_fore)
        #
        discus_rad_menu(self, nwave, radiation, wvle, ener, ElementNumber, adp,
                        ano, 1, 4)
        #
        #
        self.Aver = tk.StringVar()
        self.Aver.set(percent)
        self.LabelAver =ttk.Label(self, \
                text='Subtract scattering by average structure sampled at')
        self.EntryAver = ttk.Entry(self,
                                   textvariable=self.Aver,
                                   width=8,
                                   justify='right',
                                   background=COLORS.en_back,
                                   foreground=COLORS.en_fore)
        self.LabelAverPer = ttk.Label(self, text='%')
        #
        #
        self.lot_use = tk.IntVar()
        if lot_type == 0:
            self.lot_use.set(0)
        else:
            self.lot_use.set(1)
        self.label_lot = ttk.Label(self, text='Lots:')
        self.check_lot = ttk.Checkbutton(self,
                                         text='Use',
                                         variable=self.lot_use)
        self.check_lot.bind('<ButtonRelease-1>', self.lot_event)
        #
        self.label_lotshape = ttk.Label(self, text='Lot Shape:')
        self.lot_shape = tk.Listbox(self,
                                    height=2,
                                    width=10,
                                    selectbackground=COLORS.en_back,
                                    selectforeground=COLORS.en_fore,
                                    selectmode=tk.SINGLE)
        self.lot_shape.configure(exportselection=False)
        self.lot_shape.insert(1, 'Box')
        self.lot_shape.insert(2, 'Ellipsoid')
        if lot_type == 1 or lot_type == 0:
            self.lot_shape.selection_set(0)
        elif lot_type == 2:
            self.lot_shape.selection_set(1)
        #
        self.label_lotnum = ttk.Label(self, text='Lot Number:')
        self.lotnn = tk.StringVar()
        self.lotnn.set(str(lot_num))
        self.lotn = tk.Spinbox(self,
                               from_=1,
                               to=1001,
                               width=6,
                               justify='right',
                               textvariable=self.lotnn,
                               background=COLORS.en_back,
                               foreground=COLORS.en_fore)
        #
        self.label_lotdimx = ttk.Label(self, text='Lot Size X:')
        self.label_lotdimy = ttk.Label(self, text='Lot Size Y:')
        self.label_lotdimz = ttk.Label(self, text='Lot Size Z:')
        self.lotxx = tk.StringVar()
        self.lotxx.set(str(lot_dim[0]))
        self.lotyy = tk.StringVar()
        self.lotyy.set(str(lot_dim[1]))
        self.lotzz = tk.StringVar()
        self.lotzz.set(str(lot_dim[2]))
        self.lotx = tk.Spinbox(self,
                               from_=1,
                               to=1001,
                               width=6,
                               justify='right',
                               textvariable=self.lotxx,
                               background=COLORS.en_back,
                               foreground=COLORS.en_fore)
        self.loty = tk.Spinbox(self,
                               from_=1,
                               to=1001,
                               width=6,
                               justify='right',
                               textvariable=self.lotyy,
                               background=COLORS.en_back,
                               foreground=COLORS.en_fore)
        self.lotz = tk.Spinbox(self,
                               from_=1,
                               to=1001,
                               width=6,
                               justify='right',
                               textvariable=self.lotzz,
                               background=COLORS.en_back,
                               foreground=COLORS.en_fore)
        #
        self.label_lot_per = ttk.Label(self, text='Lots:')
        self.lot_per = tk.IntVar()
        if lot_per == 0:
            self.lot_per.set(0)
        else:
            self.lot_per.set(1)
        self.check_lot_per = tk.Checkbutton(self,
                                            text='Periodic',
                                            variable=self.lot_per)
        self.lot_menu(self.lot_use.get())
        #
        #
        self.acc = ttk.Button(
            self,
            text='Run',
            command=lambda: self.calc_fourier(
                parent, corners, increment, radiation, wvle, ener, adp, ano,
                percent, lot_type, lot_num, lot_dim, lot_per))
        #
        #
        self.show = ttk.Button(
            self,
            text='Show',
            command=lambda: self.show_fourier(
                parent, corners, increment, radiation, wvle, ener, adp, ano,
                percent, lot_type, lot_num, lot_dim, lot_per))
        #
        #
        create_exit_button(
            self, 'discus', 11, 8, self.exit_command,
            (parent, corners, increment, radiation, wvle, ener, adp, ano,
             percent, lot_type, lot_num, lot_dim, lot_per))
        #
        #
        self.CExplain = tk.Canvas(self,
                                  bg=COLORS.fr_read,
                                  height=200,
                                  width=400)
        self.CExplain.create_text(20,
                                  20,
                                  text='Calculates an arbitrary line, ',
                                  anchor=tk.W)
        self.CExplain.create_text(20,
                                  35,
                                  text='plane or voxel in reciprocal ',
                                  anchor=tk.W)
        self.CExplain.create_text(20,
                                  50,
                                  text='space. The corners are the ',
                                  anchor=tk.W)
        self.CExplain.create_text(20,
                                  65,
                                  text='lower left, lower right...',
                                  anchor=tk.W)
        self.CExplain.create_text(20,
                                  80,
                                  text='Points include the corners as ',
                                  anchor=tk.W)
        self.CExplain.create_text(20,
                                  95,
                                  text='shown in the schematic drawing.',
                                  anchor=tk.W)
        self.CExplain.create_line(400, 120, 600, 160, width=4)
        self.CExplain.create_line(400, 120, 400, 20, width=4)
        self.CExplain.create_line(400, 120, 500, 60, width=4)
        self.CExplain.create_oval(400 - 5,
                                  120 - 5,
                                  400 + 5,
                                  120 + 5,
                                  fill='black')
        self.CExplain.create_oval(467 - 5,
                                  133 - 5,
                                  467 + 5,
                                  133 + 5,
                                  fill='black')
        self.CExplain.create_oval(533 - 5,
                                  147 - 5,
                                  533 + 5,
                                  147 + 5,
                                  fill='black')
        self.CExplain.create_oval(600 - 5,
                                  160 - 5,
                                  600 + 5,
                                  160 + 5,
                                  fill='black')
        self.CExplain.create_oval(400 - 5,
                                  70 - 5,
                                  400 + 5,
                                  70 + 5,
                                  fill='black')
        self.CExplain.create_oval(400 - 5,
                                  20 - 5,
                                  400 + 5,
                                  20 + 5,
                                  fill='black')
        self.CExplain.create_oval(500 - 5,
                                  60 - 5,
                                  500 + 5,
                                  60 + 5,
                                  fill='black')
        self.CExplain.create_text(390, 120, text='Lower left', anchor=tk.E)
        self.CExplain.create_text(600,
                                  180,
                                  text='Lower right',
                                  anchor=tk.CENTER)
        self.CExplain.create_text(390, 20, text='Upper left', anchor=tk.E)
        self.CExplain.create_text(510, 60, text='Top left', anchor=tk.W)
        self.CExplain.create_text(500,
                                  160,
                                  text='Points along abscissa = 4',
                                  anchor=tk.E)
        self.CExplain.create_text(390,
                                  70,
                                  text='Points along ordinate = 3',
                                  anchor=tk.E)
        #

        ##      # If an Element name was given, make this active
        ##      if ElementNumber > -1:
        ##          self.ele.configure(state='normal')
        ##          self.entry_wvle.configure(state='disabled')
        ##          self.entry_ener.configure(state='disabled')
        ##          self.rad_type.set(2)
        ##      else:
        ##          self.ele.configure(state='disabled')
        ##          self.entry_wvle.configure(state='normal')
        ##          self.entry_ener.configure(state='disabled')
        ##          self.rad_type.set(0)

        self.caption.grid(row=0, column=0, columnspan=8, pady=(10, 10))
        self.label_h.grid(row=1, column=1, sticky='EW')
        self.label_k.grid(row=1, column=2, sticky='EW')
        self.label_l.grid(row=1, column=3, sticky='EW')
        self.label_ll.grid(row=2, column=0, sticky='EW')
        self.label_lr.grid(row=3, column=0, sticky='EW')
        self.label_ul.grid(row=4, column=0, sticky='EW')
        self.label_tl.grid(row=5, column=0, sticky='EW')
        self.entry_ll_h.grid(row=2, column=1, sticky='EW')
        self.entry_ll_k.grid(row=2, column=2, sticky='EW')
        self.entry_ll_l.grid(row=2, column=3, sticky='EW')
        self.entry_lr_h.grid(row=3, column=1, sticky='EW')
        self.entry_lr_k.grid(row=3, column=2, sticky='EW')
        self.entry_lr_l.grid(row=3, column=3, sticky='EW')
        self.entry_ul_h.grid(row=4, column=1, sticky='EW')
        self.entry_ul_k.grid(row=4, column=2, sticky='EW')
        self.entry_ul_l.grid(row=4, column=3, sticky='EW')
        self.entry_tl_h.grid(row=5, column=1, sticky='EW')
        self.entry_tl_k.grid(row=5, column=2, sticky='EW')
        self.entry_tl_l.grid(row=5, column=3, sticky='EW')
        self.label_np.grid(row=6,
                           column=0,
                           pady=(5, 0),
                           columnspan=2,
                           sticky='EW')
        self.label_np_a.grid(row=7, column=0, sticky='EW')
        self.label_np_o.grid(row=8, column=0, sticky='EW')
        self.label_np_t.grid(row=9, column=0, sticky='EW')
        self.np_a.grid(row=7, column=1, columnspan=1, sticky='EW')
        self.np_o.grid(row=8, column=1, columnspan=1, sticky='EW')
        self.np_t.grid(row=9, column=1, columnspan=1, sticky='EW')
        #
        self.LabelAver.grid(row=6, column=3, columnspan=7, sticky='EW')
        self.EntryAver.grid(row=6, column=7, sticky='EW')
        self.LabelAverPer.grid(row=6, column=8, sticky='W')
        self.label_lot.grid(row=7, column=4, sticky='EW')
        self.check_lot.grid(row=7, column=5, sticky='EW')
        self.label_lotshape.grid(row=9, column=3, sticky='EW')
        self.lot_shape.grid(row=9, column=4, rowspan=2, sticky='EW')
        self.label_lotnum.grid(row=11, column=3, sticky='EW')
        self.lotn.grid(row=11, column=4, sticky='EW')
        self.label_lotdimx.grid(row=9, column=5, sticky='EW')
        self.label_lotdimy.grid(row=10, column=5, sticky='EW')
        self.label_lotdimz.grid(row=11, column=5, sticky='EW')
        self.lotx.grid(row=9, column=6, sticky='EW')
        self.loty.grid(row=10, column=6, sticky='EW')
        self.lotz.grid(row=11, column=6, sticky='EW')
        self.label_lot_per.grid(row=8, column=4, sticky='EW')
        self.check_lot_per.grid(row=8, column=5, sticky='EW')
        self.show.grid(row=9, column=8)
        self.acc.grid(row=10, column=8)
        self.CExplain.grid(row=12, column=0, columnspan=9, sticky='EW')
        #
        line = 'fourier'
        suite.suite_learn(line)
Exemplo n.º 28
0
    def __init__(self, parent):
        tk.Frame.__init__(self, parent)

        self.window = parent

        self.prompt1 = tk.Label(self, text="Enter the albedo:", anchor="w")
        self.prompt1.grid(row=0, column=0)
        self.entryAlbedo = tk.Entry(self)
        self.entryAlbedo.grid(row=0, column=1)
        self.entryAlbedo.delete(0, "end")
        self.entryAlbedo.insert(0, str(self.albedo))

        self.prompt2 = tk.Label(self,
                                text="Enter Daily Avg SW Radiation:",
                                anchor="w")
        self.prompt2.grid(row=1, column=0)
        self.entrySW = tk.Entry(self)
        self.entrySW.grid(row=1, column=1)
        self.entrySW.delete(0, "end")
        self.entrySW.insert(0, str(self.Q_prime))

        self.prompt3 = tk.Label(self,
                                text="Enter Daily Avg LW Radiation:",
                                anchor="w")
        self.prompt3.grid(row=2, column=0)
        self.entryLW = tk.Entry(self)
        self.entryLW.grid(row=2, column=1)
        self.entryLW.delete(0, "end")
        self.entryLW.insert(0, str(self.l_star))

        self.prompt2b = tk.Label(self,
                                 text="Enter Daily Variation SW Radiation:",
                                 anchor="w")
        self.prompt2b.grid(row=1, column=2)
        self.entrySW_var = tk.Entry(self)
        self.entrySW_var.grid(row=1, column=3)
        self.entrySW_var.delete(0, "end")
        self.entrySW_var.insert(0, str(self.Q_prime_var))

        self.prompt3b = tk.Label(self,
                                 text="Enter Daily Variation LW Radiation:",
                                 anchor="w")
        self.prompt3b.grid(row=2, column=2)
        self.entryLW_var = tk.Entry(self)
        self.entryLW_var.grid(row=2, column=3)
        self.entryLW_var.delete(0, "end")
        self.entryLW_var.insert(0, str(self.l_star_var))

        self.prompt4 = tk.Label(self,
                                text="Enter Avg 2m air temp:",
                                anchor="w")
        self.prompt4.grid(row=3, column=0)
        self.entryAir = tk.Entry(self)
        self.entryAir.grid(row=3, column=1)
        self.entryAir.delete(0, "end")
        self.entryAir.insert(0, str(self.T_air))

        self.prompt4b = tk.Label(self,
                                 text="Enter daily variation 2m air temp:",
                                 anchor="w")
        self.prompt4b.grid(row=3, column=2)
        self.entryAir_var = tk.Entry(self)
        self.entryAir_var.grid(row=3, column=3)
        self.entryAir_var.delete(0, "end")
        self.entryAir_var.insert(0, str(self.T_air_var))

        self.prompt4c = tk.Label(self,
                                 text="Enter Avg 2m Rel Humidity:",
                                 anchor="w")
        self.prompt4c.grid(row=4, column=0)
        self.entryRH = tk.Entry(self)
        self.entryRH.grid(row=4, column=1)
        self.entryRH.delete(0, "end")
        self.entryRH.insert(0, str(self.RH))

        self.prompt4d = tk.Label(self,
                                 text="Daily variation 2m Rel Humidity:",
                                 anchor="w")
        self.prompt4d.grid(row=4, column=2)
        self.entryRH_var = tk.Entry(self)
        self.entryRH_var.grid(row=4, column=3)
        self.entryRH_var.delete(0, "end")
        self.entryRH_var.insert(0, str(self.RH_var))

        self.prompt5 = tk.Label(self,
                                text="Enter Debris Thickness:",
                                anchor="w")
        self.prompt5.grid(row=5, column=0)
        self.entryDebris = tk.Entry(self)
        self.entryDebris.grid(row=5, column=1)
        self.entryDebris.delete(0, "end")
        self.entryDebris.insert(0, str(self.depth))

        #        self.prompt10 = tk.Label(self, text="Overwrite .csv files?", anchor="w")
        #        self.prompt10.grid(row=6,column=2)
        self.chekvar = tk.IntVar()
        self.entryover = tk.Checkbutton(self,
                                        text='Overwrite .csv files?',
                                        variable=self.chekvar)
        self.entryover.grid(row=6, column=3)

        self.prompt5 = tk.Label(self, text="Enter 2m Wind Speed:", anchor="w")
        self.prompt5.grid(row=6, column=0)
        self.entryWind = tk.Entry(self)
        self.entryWind.grid(row=6, column=1)
        self.entryWind.delete(0, "end")
        self.entryWind.insert(0, str(self.u_wind))

        self.prompt6 = tk.Label(self,
                                text="Enter Thermal Conductivity (W/m-K):",
                                anchor="w")
        self.prompt6.grid(row=7, column=0)
        self.entryKdeb = tk.Entry(self)
        self.entryKdeb.grid(row=7, column=1)
        self.entryKdeb.delete(0, "end")
        self.entryKdeb.insert(0, str(self.k_deb))

        self.prompt7 = tk.Label(self,
                                text="Enter Total Time (Days):",
                                anchor="w")
        self.prompt7.grid(row=8, column=0)
        self.entryTime = tk.Entry(self)
        self.entryTime.grid(row=8, column=1)
        self.entryTime.delete(0, "end")
        self.entryTime.insert(0, str(np.round(self.max_time) / 86400.))

        self.prompt8 = tk.Label(self,
                                text="Enter Plot Frequency (hours):",
                                anchor="w")
        self.prompt8.grid(row=8, column=2)
        self.entryFreq = tk.Entry(self)
        self.entryFreq.grid(row=8, column=3)
        self.entryFreq.delete(0, "end")
        self.entryFreq.insert(0, str(self.plot_frequency))

        self.prompt9 = tk.Label(self,
                                text="Enter Begin Measurement (days):",
                                anchor="w")
        self.prompt9.grid(row=9, column=0)
        self.entryPlotStart = tk.Entry(self)
        self.entryPlotStart.grid(row=9, column=1)
        self.entryPlotStart.delete(0, "end")
        self.entryPlotStart.insert(0, str(np.round(self.meas_begin) / 86400.))

        self.str = tk.StringVar()
        self.str.set("START")

        self.submit = tk.Button(self, text="Submit", command=self.calculate)
        self.submit.grid(row=9, column=2)

        self.output = tk.Label(self, textvariable=self.str)
        self.output.grid(row=9, column=3)

        Therm.canvas = FigureCanvasTkAgg(Therm.fig, master=self.window)
        Therm.canvas.get_tk_widget().pack(side="bottom")
Exemplo n.º 29
0
def main():
    """
    Add widgets to the GUI one by one.
    If screen height <1000 pixels (e.g. laptop screens) -> left & right layout
    If screen height >=1000 pixels (e.g. PC screens) -> top & bottom layout
	
    tk and ttk widgets used:
    Canvas, Message, Frame, Label, Scale, Radiobutton, Combobox and Button
    
    Parameters
    ----------
    None
    
    Returns
    -------
    None

    """
    root = tk.Tk()
    root.title('pyRiverBed')
    root.resizable(0, 0)
    
    canvas = tk.Canvas(root)

    if root.winfo_screenheight() < 1051:
        canvas.pack(side='left', padx=20)
    else:
        canvas.pack(side='top', padx=20)

####### MODE SELECTOR 
    msg = tk.Message(
        canvas,
        text='MODE SELECTOR',
        bg='wheat',
        font='System 11 bold',
        width=500,
        relief='raised')
    msg.pack() 

    row = tk.Frame(canvas)
    row.pack(side='top')
    
    tk.Label(
        row,
        text='Mode',
        width=7,
        font='System 10',
        anchor='e').pack(side='left')
    
    modvar = tk.IntVar()
    mod = tk.Radiobutton(
        row,
        text='1=Generate Kinoshita Curve from equation',
        width=43,
        font='System 10',
        anchor='sw',
        variable=modvar,
        value=1)
    mod.select()
    mod.pack() 
    
    mod = tk.Radiobutton(
        row,
        text='2=Read your own centerline from file',
        width=43,
        font='System 10',
        anchor='sw',
        variable=modvar,
        value=2)
    mod.pack() 

    row = tk.Frame(canvas)
    row.pack(side='top')
    
    tk.Label(
        row,
        text='File name',
        width=10,
        font='System 10',
        anchor='c').pack(side='left')
    
    fnamevar = tk.StringVar()
    fname = ttk.Combobox(
        row,
        font='System 10',
        width=18,
        textvariable=fnamevar)
    fname.set('mycenterline.txt')
    fname.pack()
    
    row = tk.Frame(canvas)
    row.pack(side='top')

    if platform.system() == 'Darwin':
        w1, w2 = 15, 120
    else:
        w1, w2 = 20, 135

    tk.Label(
        row,
        text='Level of smoothing ',
        width=w1,
        font='System 10',
        anchor='e').pack(side='left')
    
    smoothvar = tk.IntVar()
    scale = tk.Scale(row, 
                     from_=0, 
                     to=100, 
                     orient='horizontal',
                     width=8,
                     sliderlength=10,
                     font='System 8',
                     tickinterval=25,
                     length=w2,
                     variable=smoothvar)
    scale.set(20)
    scale.pack()

    if platform.system() == 'Darwin':
        row = tk.Frame(canvas)
        row.pack(side='top',pady=5)    

####### KINOSHITA PARAMETERS 
    msg = tk.Message(
        canvas,
        text='KINOSHITA PARAMETERS (ONLY WORK IF MODE=1)',
        bg='light cyan',
        font='System 11 bold',
        width=500,
        relief='raised')
    msg.pack()

    row = tk.Frame(canvas)
    row.pack(side='top')
    
    tk.Label(
        row,
        text='Number of bends (unit: /)',
        width=42,
        font='System 10',
        anchor='w').pack(side='left')
    
    nbendvar = tk.IntVar()
    nbend = ttk.Combobox(
        row,
        font='System 10',
        width=18,
        textvariable=nbendvar)
    nbend['values'] = ('1', '2', '3', '4', '5', '10')
    nbend.set('3')
    nbend.pack()

    row = tk.Frame(canvas)
    row.pack(side='top')
    
    tk.Label(
        row,
        text='Arc wavelength (unit: m)',
        width=42,
        font='System 10',
        anchor='w').pack(side='left')
    
    lamdvar = tk.DoubleVar()
    lamd = ttk.Combobox(
        row,
        font='System 10',
        width=18,
        textvariable=lamdvar)
    lamd['values'] = ('1', '2', '5', '10', '20', '50', '100')
    lamd.set('10')
    lamd.pack()

    row = tk.Frame(canvas)
    row.pack(side='top')
    
    tk.Label(
        row,
        text='Max angular amplitude (unit: deg)',
        width=42,
        font='System 10',
        anchor='w').pack(side='left')
    
    thetavar = tk.DoubleVar()
    thetau = ttk.Combobox(
        row,
        font='System 10',
        width=18,
        textvariable=thetavar)
    thetau['values'] = ('30', '45', '60', '90', '110')
    thetau.set('110')
    thetau.pack()

    row = tk.Frame(canvas)
    row.pack(side='top')
    
    tk.Label(
        row,
        text='Skewness coeff. (unit: /)',
        width=42,
        font='System 10',
        anchor='w').pack(side='left')
    
    skewvar = tk.DoubleVar()
    skew = ttk.Combobox(
        row,
        font='System 10',
        width=18,
        textvariable=skewvar)
    skew['values'] = ('0', '0.005', '0.01', '0.02', '0.03')
    skew.set('0.03125')
    skew.pack()

    row = tk.Frame(canvas)
    row.pack(side='top')
    
    tk.Label(
        row,
        text='Flatness coeff. (unit: /)',
        width=42,
        font='System 10',
        anchor='w').pack(side='left')
    
    flatvar = tk.DoubleVar()
    flat = ttk.Combobox(
        row,
        font='System 10',
        width=18,
        textvariable=flatvar)
    flat['values'] = ('0', '0.005', '0.01', '0.02', '0.03')
    flat.set('0.00520833')
    flat.pack()

####### CHANNEL PARAMETERS
    msg = tk.Message(
        canvas,
        text='CHANNEL PARAMETERS',
        bg='light cyan',
        font='System 11 bold',
        width=500,
        relief='raised')
    msg.pack()

    row = tk.Frame(canvas)
    row.pack(side='top')
    
    tk.Label(
        row,
        text='Channel width (unit: m)',
        width=42,
        font='System 10',
        anchor='w').pack(side='left')
    widvar = tk.DoubleVar()
    wid = ttk.Combobox(
        row,
        font='System 10',
        width=18,
        textvariable=widvar)
    wid.set('0.6')
    wid.pack()

    row = tk.Frame(canvas)
    row.pack(side='top')
    
    tk.Label(
        row,
        text='Water depth (unit: m)',
        width=42,
        font='System 10',
        anchor='w').pack(side='left')
    
    depvar = tk.DoubleVar()
    dep = ttk.Combobox(
        row,
        font='System 10',
        width=18,
        textvariable=depvar)
    dep.set('0.15')
    dep.pack()

    row = tk.Frame(canvas)
    row.pack(side='top')
    
    tk.Label(
        row,
        text='Channel slope (unit: /)',
        width=42,
        font='System 10',
        anchor='w').pack(side='left')
    
    slovar = tk.DoubleVar()
    slo = ttk.Combobox(
        row,
        font='System 10',
        width=18,
        textvariable=slovar)
    slo['values'] = ('0', '1e-3', '5e-4', '1e-4')
    slo.set('0')
    slo.pack()
    
    
    row = tk.Frame(canvas)
    row.pack(side='top')
    
    tk.Label(
        row,
        text='Transverse slope corrector (unit: /)',
        width=42,
        font='System 10',
        anchor='w').pack(side='left')
    
    stvar = tk.DoubleVar()
    st = ttk.Combobox(
        row,
        font='System 10',
        width=18,
        textvariable=stvar)
    st['values'] = ('0.5', '0.6', '0.7', '0.8', '0.9', '1')
    st.set('1')
    st.pack()

    row = tk.Frame(canvas)
    row.pack(side='top')
    
    tk.Label(
        row,
        text='Streamwise resolution (unit: m)',
        width=42,
        font='System 10',
        anchor='w').pack(side='left')
    
    dsvar = tk.DoubleVar()
    ds = ttk.Combobox(
        row,
        font='System 10',
        width=18,
        textvariable=dsvar)
    ds.set('0.03')
    ds.pack()
    
    row = tk.Frame(canvas)
    row.pack(side='top')
    
    tk.Label(
        row,
        text='(Grid size of centerline)',
        width=55,
        font='System 10',
        anchor='w').pack(side='left')

    row = tk.Frame(canvas)
    row.pack(side='top')
    
    tk.Label(
        row,
        text='Transverse resolution (unit: /)',
        width=42,
        font='System 10',
        anchor='w').pack(side='left')
    
    noffsvar = tk.IntVar()
    noffs = ttk.Combobox(
        row,
        font='System 10',
        width=18,
        textvariable=noffsvar)
    noffs['values'] = ('5', '8', '10', '20')
    noffs.set('10')
    noffs.pack()
    
    row = tk.Frame(canvas)
    row.pack(side='top')
    
    tk.Label(
        row,
        text='(Number of polyline offsets at each side of centerline)',
        width=55,
        font='System 10',
        anchor='w').pack(side='left')

    canvas = tk.Canvas(root)
    if root.winfo_screenheight() < 1051:
        canvas.pack(side='left', padx=20)
    else:
        canvas.pack(side='top', padx=20)

####### PHASE LAG 
    msg = tk.Message(
        canvas,
        text='CURVATURE PHASE LAG PARAMETERS',
        bg='light cyan',
        font='System 11 bold',
        width=500,
        relief='raised')
    msg.pack()

    row = tk.Frame(canvas)
    row.pack(side='top')
    
    tk.Label(
        row,
        text='Curvature phase lag',
        width=19,
        font='System 10',
        anchor='c').pack(side='left')
    
    if platform.system() == 'Darwin':
        w = 8
    else:
        w = 4
        
    lagmodvar = tk.IntVar()
    lagmod = tk.Radiobutton(
        row,
        text='Off',
        width=w,
        font='System 10',
        anchor='sw',
        variable=lagmodvar,
        value=0)
    lagmod.pack(side='left')
    
    lagmod = tk.Radiobutton(
        row,
        text='On',
        width=w,
        font='System 10',
        anchor='sw',
        variable=lagmodvar,
        value=1)
    lagmod.select()
    lagmod.pack(side='left')   
    
    tk.Label(
        row,
        text='Lag strength (unit: /)',
        width=19,
        font='System 10',
        anchor='w').pack(side='left')
    
    lagstrthvar = tk.DoubleVar()
    lagstrth = ttk.Combobox(
        row,
        font='System 10',
        width=3,
        textvariable=lagstrthvar)
    lagstrth['values'] = ('2', '3', '4', '5', '6')
    lagstrth.set('4')
    lagstrth.pack(side='left')

####### OUTPUT
    msg = tk.Message(
        canvas,
        text='FILE OUTPUT',
        bg='light cyan',
        font='System 11 bold',
        width=500,
        relief='raised')
    msg.pack()

    row = tk.Frame(canvas)
    row.pack(side='top')
    
    if platform.system() == 'Darwin':
        w = 10
    else:
        w = 7
    
    tk.Label(
        row,
        text='Save riverbed topography file (.xyz)?',
        width=42,
        font='System 10',
        anchor='w').pack(side='left')

    xyzvar = tk.IntVar()
    xyz = tk.Radiobutton(
        row,
        text='Yes',
        width=w,
        font='System 10',
        anchor='sw',
        variable=xyzvar,
        value=1)
    xyz.pack(side='left') 
    xyz.select()
    xyz = tk.Radiobutton(
        row,
        text='No',
        width=w,
        font='System 10',
        anchor='sw',
        variable=xyzvar,
        value=0)
    xyz.pack(side='left') 

    row = tk.Frame(canvas)
    row.pack(side='top')
    
    tk.Label(
        row,
        text='Save river bankline file (.i2s)?',
        width=42,
        font='System 10',
        anchor='w').pack(side='left')
    
    bdvar = tk.IntVar()
    bd = tk.Radiobutton(
        row,
        text='Yes',
        width=w,
        font='System 10',
        anchor='sw',
        variable=bdvar,
        value=1)
    bd.pack(side='left') 
    bd.select()
    bd = tk.Radiobutton(
        row,
        text='No',
        width=w,
        font='System 10',
        anchor='sw',
        variable=bdvar,
        value=0)
    bd.pack(side='left') 
    
    row = tk.Frame(canvas)
    row.pack(side='top')
    
    tk.Label(
        row,
        text='Save FEM mesh & BC files (.t3s, .dat, .cli, .bc2)?',
        width=42,
        font='System 10',
        anchor='w').pack(side='left')
    
    meshvar = tk.IntVar()
    mesh = tk.Radiobutton(
        row,
        text='Yes',
        width=w,
        font='System 10',
        anchor='sw',
        variable=meshvar,
        value=1)
    mesh.pack(side='left') 
    mesh.select()
    mesh = tk.Radiobutton(
        row,
        text='No',
        width=w,
        font='System 10',
        anchor='sw',
        variable=meshvar,
        value=0)
    mesh.pack(side='left') 
    
####### FLIP 
    msg = tk.Message(
        canvas,
        text='FLIP',
        bg='light cyan',
        font='System 11 bold',
        width=500,
        relief='raised')
    msg.pack()

    row = tk.Frame(canvas)
    row.pack(side='top')
    
    tk.Label(
        row,
        text='Flip in streamwise direction?',
        width=42,
        font='System 10',
        anchor='w').pack(side='left')

    flpstrmvar = tk.IntVar()
    flpstrm = tk.Radiobutton(
        row,
        text='Yes',
        width=w,
        font='System 10',
        anchor='sw',
        variable=flpstrmvar,
        value=1)
    flpstrm.pack(side='left') 
    flpstrm = tk.Radiobutton(
        row,
        text='No',
        width=w,
        font='System 10',
        anchor='sw',
        variable=flpstrmvar,
        value=0)
    flpstrm.pack(side='left')
    flpstrm.select()
    
    row = tk.Frame(canvas)
    row.pack(side='top')
    
    tk.Label(
        row,
        text='Flip in transverse direction?',
        width=42,
        font='System 10',
        anchor='w').pack(side='left')

    flptranvar = tk.IntVar()
    flptran = tk.Radiobutton(
        row,
        text='Yes',
        width=w,
        font='System 10',
        anchor='sw',
        variable=flptranvar,
        value=1)
    flptran.pack(side='left') 
    flptran.select()
    flptran = tk.Radiobutton(
        row,
        text='No',
        width=w,
        font='System 10',
        anchor='sw',
        variable=flptranvar,
        value=0)
    flptran.pack(side='left')

####### MIGRATION 
    msg = tk.Message(
        canvas,
        text='MEANDER MIGRATION PARAMETERS',
        bg='light cyan',
        font='System 11 bold',
        width=500,
        relief='raised')
    msg.pack()

    row = tk.Frame(canvas)
    row.pack(side='top')
    
    if platform.system() == 'Darwin':
        w = 8
    else:
        w = 4
        
    tk.Label(
        row,
        text='Meander migration',
        width=17,
        font='System 10',
        anchor='c').pack(side='left')
    migvar = tk.IntVar()
    mig = tk.Radiobutton(
        row,
        text='Off',
        width=w,
        font='System 10',
        anchor='sw',
        variable=migvar,
        value=0)
    mig.select()
    mig.pack(side='left')
    
    mig = tk.Radiobutton(
        row,
        text='On',
        width=w,
        font='System 10',
        anchor='sw',
        variable=migvar,
        value=1)
    mig.pack(side='left')

    row = tk.Frame(canvas)
    row.pack(side='top')
    
    tk.Label(
        row,
        text='Ub0 (unit: /)',
        width=15,
        font='System 10',
        anchor='w').pack(side='left')
    ub0var = tk.DoubleVar()
    ub0 = ttk.Combobox(
        row,
        font='System 10',
        width=12,
        textvariable=ub0var)
    ub0.set('0')
    ub0.pack(side='left')

    c0var = tk.DoubleVar()
    c0 = ttk.Combobox(
        row,
        font='System 10',
        width=12,
        textvariable=c0var)
    c0.set('0')
    c0.pack(side='right')
    tk.Label(
        row,
        text='        C0 (unit: /)',
        width=15,
        font='System 10',
        anchor='w').pack(side='right')

    row = tk.Frame(canvas)
    row.pack(side='top')
    
    tk.Label(
        row,
        text='Cf0 (unit: /)',
        width=15,
        font='System 10',
        anchor='w').pack(side='left')
    cf0var = tk.DoubleVar()
    cf0 = ttk.Combobox(
        row,
        font='System 10',
        width=12,
        textvariable=cf0var)
    cf0['values'] = ('0.01', '0.02', '0.03')
    cf0.set('0.01')
    cf0.pack(side='left')

    fr0var = tk.DoubleVar()
    fr0 = ttk.Combobox(
        row,
        font='System 10',
        width=12,
        textvariable=fr0var)
    fr0['values'] = ('0.1', '0.2', '0.3', '0.4', '0.5')
    fr0.set('0.1')
    fr0.pack(side='right')
    tk.Label(
        row,
        text='        Fr0 (unit: /)',
        width=15,
        font='System 10',
        anchor='w').pack(side='right')

    row = tk.Frame(canvas)
    row.pack(side='top')
    
    tk.Label(
        row,
        text='\u0394t (unit: s)',
        width=15,
        font='System 10',
        anchor='w').pack(side='left')
    dtvar = tk.DoubleVar()
    dt = ttk.Combobox(
        row,
        font='System 10',
        width=12,
        textvariable=dtvar)
    dt['values'] = ('60', '3600', '86400')
    dt.set('86400')
    dt.pack(side='left')

    e0var = tk.DoubleVar()
    e0 = ttk.Combobox(
        row,
        font='System 10',
        width=12,
        textvariable=e0var)
    e0['values'] = ('1e-5', '1e-6', '1e-7', '1e-8')
    e0.set('1e-7')
    e0.pack(side='right')
    tk.Label(
        row,
        text='        E0 (unit: /)',
        width=15,
        font='System 10',
        anchor='w').pack(side='right')

    row = tk.Frame(canvas)
    row.pack(side='top')
    
    tk.Label(
        row,
        text='Listing printout period',
        width=20,
        font='System 10',
        anchor='w').pack(side='left')
    Lprintvar = tk.IntVar()
    Lprint = ttk.Combobox(
        row,
        font='System 10',
        width=7,
        textvariable=Lprintvar)
    Lprint.set('50')
    Lprint.pack(side='left')


    tstepsvar = tk.IntVar()
    tsteps = ttk.Combobox(
        row,
        font='System 10',
        width=7,
        textvariable=tstepsvar)
    tsteps.set('10000')
    tsteps.pack(side='right')
    
    tk.Label(
        row,
        text='        # of time steps',
        width=20,
        font='System 10',
        anchor='w').pack(side='right')

    row = tk.Frame(canvas)
    row.pack(side='top')

    tk.Label(
        row,
        text='Graphic printout period',
        width=20,
        font='System 10',
        anchor='w').pack(side='left')
    gprintvar = tk.IntVar()
    gprint = ttk.Combobox(
        row,
        font='System 10',
        width=7,
        textvariable=gprintvar)
    gprint.set('100')
    gprint.pack(side='left')

    fpsvar = tk.IntVar()
    fps = ttk.Combobox(
        row,
        font='System 10',
        width=7,
        textvariable=fpsvar)
    fps['values'] = ('20', '24', '30', '60')
    fps.set('24')
    fps.pack(side='right')
    tk.Label(
        row,
        text='        FPS of GIF',
        width=20,
        font='System 10',
        anchor='w').pack(side='right')

######## BUTTONS 
    row = tk.Frame(canvas)
    row.pack(side='top',pady=3)
    
    row = tk.Frame(canvas)
    row.pack(side='top')

    def gen():
        entries = [modvar.get(), nbendvar.get(), lamdvar.get(),
                   thetavar.get(), skewvar.get(), flatvar.get(),
                   widvar.get(), depvar.get(), slovar.get(),
                   dsvar.get(), noffsvar.get(), lagmodvar.get(),
                   lagstrthvar.get(), xyzvar.get(), 
                   bdvar.get(), meshvar.get(), flpstrmvar.get(), 
                   flptranvar.get(), migvar.get(), ub0var.get(),
                   c0var.get(), cf0var.get(), fr0var.get(),
                   dtvar.get(), e0var.get(), Lprintvar.get(),
                   tstepsvar.get(), gprintvar.get(), fpsvar.get(),
                   smoothvar.get(), stvar.get()]
        with open('steering.txt', 'w') as f:
            entries_str = str(entries)
            f.write(fnamevar.get() + '\n')
            f.write(entries_str.replace(', ', '\n')[1:-1] + '\n')
        messagebox.showinfo(
            message='The steering file \'steering.txt\' has been generated',
            icon='info')

    tk.Button(
            row, 
            text='Generate steering file', 
            font='System 11 bold', 
            command=gen,
            padx=6,
            pady=1).pack(side='left',padx=6,pady=1)

    def run(): 
        if messagebox.showinfo(
            message='pyRiverBed will run',
            icon='info') == 'ok':
            pyriverbed.main()
            
    tk.Button(
        row,
        text='Run pyRiverBed',
        font='System 11 bold',
        command=run,
        padx=6,
        pady=1).pack(side='left',padx=6,pady=1)


    def clean(): 
        if messagebox.askyesno(
            message='Existing *.jpg, *.pdf, *,gif, *.xyz, *.i2s, *.t3s, *.dat, *.cli and *.bc2 files will be deleted',
            icon='warning'):
            extList = ['*.jpg', '*.pdf', '*.gif', '*.xyz', '*.i2s', '*.t3s', '*.dat', '*.cli', '*.bc2']
            n_file_removed = 0
            file_names = ''
            for ext in extList:
                for f in glob(ext):
                    remove(f)
                    n_file_removed += 1
                    file_names += f + '\n'
            if n_file_removed != 0:
                messagebox.showinfo(
                    message = str(n_file_removed) + ' files deleted:\n' + file_names,
                    icon='info')
            else:
                messagebox.showinfo(
                    message='Nothing to delete',
                    icon='info')
            
    tk.Button(
        row,
        text='Clean',
        font='System 11 bold',
        command=clean,
        padx=10,
        pady=1).pack(side='left',padx=6,pady=1)

    def q(): 
        if messagebox.askyesno(
                message='Quit?',
                icon='warning'):
            root.destroy()
            
    tk.Button(
        row, 
        text='Quit', 
        font='System 11 bold', 
        command=q,
        padx=10,
        pady=1).pack(side='left',padx=6,pady=1)

    row = tk.Frame(canvas)
    row.pack(side='top')
 
    def open_github(): 
        webbrowser.open('https://github.com/ZhiLiHydro/pyRiverBed')

    tk.Label(
        row,
        text='visit',
        width=5,
        font='System 10',
        anchor='e').pack(side='left')

    urlok = True
    try:
        u = request.urlopen('https://github.githubassets.com/images/modules/logos_page/GitHub-Logo.png')
    except error.URLError:
        urlok = False
    if urlok:
        icon = u.read()
        u.close()
        icon = tk.PhotoImage(data=encodebytes(icon)).subsample(15, 15)
        tk.Button(
            row,
            font='System 11 bold', 
            command=open_github,
            width=60,
            height=25,
            image=icon).pack(side='left')
    else:      
        tk.Button(
            row,
            text='GitHub',
            font='System 11 bold', 
            command=open_github,
            padx=15,
            pady=1).pack(side='left',padx=3,pady=1)

    tk.Label(
        row,
        text='for README',
        width=10,
        font='System 10',
        anchor='w').pack(side='left')
    
    root.mainloop()
    
    try:
        rmtree('__pycache__')
    except OSError:
        pass
Exemplo n.º 30
0
tool_bar = ttk.Label(main_application)
tool_bar.pack(side=tk.TOP, fill=tk.X)

##font box
font_tuple = tk.font.families()
font_family = tk.StringVar()
font_box = ttk.Combobox(tool_bar,
                        width=30,
                        textvariable=font_family,
                        state='readonly')
font_box['values'] = font_tuple
font_box.current(font_tuple.index('Arial'))
font_box.grid(row=0, column=0, padx=5)

##size box
size_var = tk.IntVar()
font_size = ttk.Combobox(tool_bar,
                         width=14,
                         textvariable=size_var,
                         state='readonly')
font_size['values'] = tuple(range(8, 80, 2))
font_size.current(4)
font_size.grid(row=0, column=1, padx=5)

##bold button
bold_icon = tk.PhotoImage(file='icons2/bold.png')
bold_btn = ttk.Button(tool_bar, image=bold_icon)
bold_btn.grid(row=0, column=2, padx=5)

##italic button
italic_icon = tk.PhotoImage(file='icons2/italic.png')