Exemplo n.º 1
0
    def initUI(self):
      
        self.parent.title("Review")
        self.pack(fill=BOTH, expand=True)
        
        frame1 = Frame(self)
        frame1.pack(fill=X)
        
        lbl1 = Label(frame1, text="Title", width=6)
        lbl1.pack(side=LEFT, padx=5, pady=5)           
       
        entry1 = Entry(frame1)
        entry1.pack(fill=X, padx=5, expand=True)
        
        frame2 = Frame(self)
        frame2.pack(fill=X)
        
        lbl2 = Label(frame2, text="Author", width=6)
        lbl2.pack(side=LEFT, padx=5, pady=5)        

        entry2 = Entry(frame2)
        entry2.pack(fill=X, padx=5, expand=True)
        
        frame3 = Frame(self)
        frame3.pack(fill=BOTH, expand=True)
        
        lbl3 = Label(frame3, text="Review", width=6)
        lbl3.pack(side=LEFT, anchor=N, padx=5, pady=5)        

        txt = Text(frame3)
        txt.pack(fill=BOTH, pady=5, padx=5, expand=True)           
Exemplo n.º 2
0
    def initUI(self):

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

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

        lbl1 = Label(frame1, text="Title", width=6)
        lbl1.pack(side=LEFT, padx=5, pady=5)

        entry1 = Entry(frame1)
        entry1.pack(fill=X, padx=5, expand=True)

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

        lbl2 = Label(frame2, text="Author", width=6)
        lbl2.pack(side=LEFT, padx=5, pady=5)

        entry2 = Entry(frame2)
        entry2.pack(fill=X, padx=5, expand=True)

        frame3 = Frame(self)
        frame3.pack(fill=BOTH, expand=True)

        lbl3 = Label(frame3, text="Review", width=6)
        lbl3.pack(side=LEFT, anchor=N, padx=5, pady=5)

        txt = Text(frame3)
        txt.pack(fill=BOTH, pady=5, padx=5, expand=True)
Exemplo n.º 3
0
class Login(Frame):
    """******** Funcion: __init__ **************
    Descripcion: Constructor de Login
    Parametros:
    self Login
    parent Tk
    Retorno: void
    *****************************************************"""
    def __init__(self, parent):
        Frame.__init__(self, parent)
        self.parent = parent
        self.initUI()


    """******** Funcion: initUI **************
    Descripcion: Inicia la interfaz grafica de un Login,
                para ello hace uso de Frames y Widgets.
    Parametros:
    self Login
    Retorno: void
    *****************************************************"""
    def initUI(self):
        self.parent.title("Pythagram: Login")
        self.style = Style()
        self.style.theme_use("default")

        self.frame = Frame(self, relief=RAISED)
        self.frame.pack(fill=BOTH, expand=1)
        self.instructions = Label(self.frame,text="A new Web Browser window will open, you must log-in and accept the permissions to use this app.\nThen you have to copy the code that appears and paste it on the next text box.")
        self.instructions.pack(fill=BOTH, padx=5,pady=5)
        self.codeLabel = Label(self.frame,text="Code:")
        self.codeLabel.pack(fill=BOTH, padx=5,pady=5)
        self.codeEntry = Entry(self.frame)
        self.codeEntry.pack(fill=BOTH, padx=5,pady=5)
        self.pack(fill=BOTH, expand=1)

        self.closeButton = Button(self, text="Cancel", command=self.quit)
        self.closeButton.pack(side=RIGHT, padx=5, pady=5)
        self.okButton = Button(self, text="OK", command=self.login)
        self.okButton.pack(side=RIGHT)

    """******** Funcion: login **************
    Descripcion: Luego que el usuario ingresa su codigo de acceso, hace
                la solicitud al servidor para cargar su cuenta en una
                ventana de tipo Profile
    Parametros:
    self
    Retorno: Retorna...
    *****************************************************"""
    def login(self):
        code = self.codeEntry.get()
        api = InstagramAPI(code)
        raw = api.call_resource('users', 'info', user_id='self')
        data = raw['data']
        self.newWindow = Toplevel(self.parent)
        global GlobalID
        GlobalID = data['id']
        p = Profile(self.newWindow,api,data['id'])
    def initUI(self):
        self.parent.title("Test the Gauss point")
        self.pack(fill=BOTH, expand=True)
        self.fields = \
                'bulk_modulus', \
                'scale_hardening', \
                'max_stress_in', \
                'increment_strain', \
                'Nloop', \
                'initial_confinement', \
                'reference_pressure', \
                'modulus_n', \
                'cohesion', \
                'RMC_shape_k', \
                'dilation_angle_eta', \
                'diletion_scale'

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

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

        # ==================
        # Raw Frame for plot
        self.canvasFrame = Frame(self)
        self.canvasFrame.pack(fill=BOTH, expand=True)
Exemplo n.º 5
0
    def initUI(self):

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

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

        lbl1 = Label(frame1, text="Title", width=6)
        lbl1.pack(side=LEFT, padx=5, pady=5)

        entry1 = Entry(frame1)
        entry1.pack(fill=X, padx=5, expand=True)
Exemplo n.º 6
0
 def initUI(self):
   
     self.parent.title("Review")
     self.pack(fill=BOTH, expand=True)
     
     frame1 = Frame(self)
     frame1.pack(fill=X)
     
     lbl1 = Label(frame1, text="Title", width=6)
     lbl1.pack(side=LEFT, padx=5, pady=5)           
    
     entry1 = Entry(frame1)
     entry1.pack(fill=X, padx=5, expand=True)
Exemplo n.º 7
0
def init_ui(root):
    root.geometry("500x500+500+500")

    f = Frame(root)
    f.pack(fill=BOTH, expand=True)

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

    lbl1 = Label(frame1, text="Enter url here", width=6)
    lbl1.pack(side=LEFT, padx=5, pady=5)

    entry1 = Entry(frame1)
    entry1.pack(fill=X, padx=5, expand=True)

    frame3 = Frame(f)
    frame3.pack(fill=X)

    lbl3 = Label(frame3, text="Keywords", width=6)
    lbl3.pack(side=LEFT, anchor=N, padx=5, pady=5)

    txt = Text(frame3)
    txt.pack(fill=BOTH, pady=5, padx=5, expand=True)

    def on_click():
        url = entry1.get()
        print url

        keywords = get_keywords(url)
        res = ", ".join(keywords)
        print res

        txt.delete("1.0", END)
        txt.insert("1.0", res)

    def on_click2():
        entry1.delete(0, END)

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

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

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

        # ==================
        # Raw Frame for plot
        self.canvasFrame = Frame(self)
        self.canvasFrame.pack(fill=BOTH, expand=True)
    def __init__(self, master, instrument):
        InstrumentFrame.__init__(self, master, instrument)

        scale_name = [s.__name__ for s in scales.SCALES]
        scale_name = [type(instrument.scale).__name__] + scale_name

        variable = StringVar(self)

        w = OptionMenu(self, variable, *scale_name, command=self.set_scale)
        w.grid(row=1, sticky="W", padx=3)

        freq_frame = Frame(self)
        freq_frame.grid(row=2, sticky="W", padx=3)
        Label(freq_frame, text="Base Frequency (Hz): ").pack(side="left")

        self.freq_var = StringVar(self)
        self.freq_var.set(str(instrument.scale.base_frequency))
        freq_entry = Entry(freq_frame, textvariable=self.freq_var, width=5)
        freq_entry.pack(side="left")

        freq_update = Button(freq_frame, text="Update", command=self.set_frequncy)
        freq_update.pack(side="left")
Exemplo n.º 10
0
def gameOver():
    count = 0
    global endTimer
    for button in buttons:
        if str(button['state']) == 'normal':
            count += 1
    if count == 10:

        popup = Toplevel()
        popup.title('Congratulations!')
        msg = Message(popup, text='You won! Enter your name:')
        msg.pack()
        entry = Entry(popup)
        entry.pack()
        button = Button(popup,
                        text='Submit',
                        command=lambda e=entry: saveScore(e))
        button.pack()
        popup.geometry('%dx%d+%d+%d' % (150, 100, 600, 300))
        endTimer = True
        return True
    return False
Exemplo n.º 11
0
class MyEntry:
#Класс для уменьшений объёма кода однотипных элементов для ввода параметров.
    def __init__(self, place_class, string_class, DefaultValue, choise_class = False, button_add = False):
#При создании принимается место прикрепления виджета и строковое значение для надписи.
# A string value to add a combobox or a button could be also inputed.

        def button_finfo():
            messagebox.showinfo(locale(u"ui_iftxt", Settingz["str_langu"]), button_add)
# Here it is a function to show information window.

        self.frame_class = Frame(place_class)
        self.frame_class.pack(side = TOP, fill = BOTH)
#Внутри – рамка для виджетов, растягивается по ширине окна.
        self.label_class = Label(self.frame_class, text = string_class)
        self.label_class.pack(side = LEFT)
#В ней – надписи для описания вводимых значений выровнены по левому краю.
        self.entry_class = Entry(self.frame_class, width = 15)
        self.entry_class.pack(side = RIGHT)
        self.entry_class.insert(0, DefaultValue)
#И элементы для ввода значений шириной в 15 знаков выровнены по правому краю.
        if choise_class:
            self.box_class = Combobox(self.frame_class, values = choise_class, width = 2)
            self.box_class.set(choise_class[0])
            self.box_class.pack(side = RIGHT)
        elif button_add:
            self.button_class = Button(self.frame_class, text = u"?", command = button_finfo, width = -1)
            self.button_class.pack(side = RIGHT)
# The combobox widget or the button will be created if it is set.

    def get(self):
        return(self.entry_class.get())
#Метод .get() передаётся от элемента для ввода объекту описываемого класса.
    def getbox(self):
        if self.box_class.get() in ["+", "~"]:
            return(True)
        else:
            return(False)
Exemplo n.º 12
0
    def __init__(self, master):
        tk.Frame.__init__(self, master)

        canvas = tk.Canvas(self,
                           height=self.master.winfo_screenheight(),
                           width=self.master.winfo_screenwidth())
        canvas.pack()

        frame = tk.Frame(canvas, bg="#282C34")
        frame.place(x=0, y=0, relwidth=1.0, relheight=1.0)

        instruction_label = tk.Label(frame,
                                     text="What would you like to do?",
                                     font=50)
        instruction_label.pack()

        tree_list = []
        # Create the treeview to display the data sets
        for data_set in settings.data_set:
            tree = ttk.Treeview(frame)

            # Set Vertical Scrollbar to the Trees
            tree_scrollbar_vertical = ttk.Scrollbar(tree,
                                                    orient='vertical',
                                                    command=tree.yview)
            tree_scrollbar_horizontal = ttk.Scrollbar(tree,
                                                      orient='horizontal',
                                                      command=tree.xview)
            tree_scrollbar_vertical.pack(side=RIGHT, fill=Y)
            tree_scrollbar_horizontal.pack(side=BOTTOM, fill=X)
            tree.configure(xscrollcommand=tree_scrollbar_horizontal.set,
                           yscrollcommand=tree_scrollbar_vertical.set)

            for i in range(0, len(data_set)):
                heading_list = []
                value_list = []

                for x in data_set[i]:
                    heading_list.append(x)
                    value_list.append(data_set[i].get(x))
                    value_list[-1] = value_list[-1].decode('utf-8', 'ignore')

                tree["columns"] = heading_list
                tree['show'] = 'headings'

                for x in range(0, len(heading_list)):
                    tree.heading(heading_list[x], text=heading_list[x])

                tree.insert("", 0, values=value_list)

            tree.pack(fill=BOTH, expand=True)

            # Fill the trees with data
            tree_list.append(tree)

            def treeview_sort_column(tv, col, reverse):
                l = [(tv.set(k, col), k) for k in tv.get_children('')]
                l.sort(reverse=reverse)

                # rearrange items in sorted positions
                for index, (val, k) in enumerate(l):
                    tv.move(k, '', index)

                # reverse sort next time
                tv.heading(
                    col,
                    command=lambda: treeview_sort_column(tv, col, not reverse))

            for col in heading_list:
                tree.heading(col,
                             text=col,
                             command=lambda _col=col: treeview_sort_column(
                                 tree, _col, False))
        """
        Bottom Frame - Seperator for Input Widgets
        """
        bottom_frame = Frame(frame, bg="#282C34")
        bottom_frame.pack(fill=BOTH, expand=True)

        ## Sub-Frame [1] for Input ##
        frame_Input_1 = Frame(bottom_frame, bg="#282C34")
        frame_Input_1.pack(expand=True)

        input_label_UEN = Label(frame_Input_1, text="UEN:", bg='gray65')
        input_label_UEN.pack(side=LEFT)

        input_Entry_1 = Entry(frame_Input_1)
        input_Entry_1.pack(side=LEFT)

        btn_get_company_by_uen = tk.Button(
            frame_Input_1,
            text="Search Company By UEN",
            command=lambda: self.get_company_by_uen(
                tree_list=tree_list, uen_number=input_Entry_1.get()))
        btn_get_company_by_uen.pack(side=LEFT, padx="10")

        input_label_keyword = Label(frame_Input_1,
                                    text="Keyword:",
                                    bg='gray65')
        input_label_keyword.pack(side=LEFT, padx="1")

        input_Entry_2 = Entry(frame_Input_1)
        input_Entry_2.pack(side=LEFT)

        btn_list_company_from_keyword = tk.Button(
            frame_Input_1,
            text="Search Company by Name",
            command=lambda: self.list_company_from_keyword(
                tree_list=tree_list, keyword=input_Entry_2.get()))
        btn_list_company_from_keyword.pack(side=LEFT, padx="10")

        input_label_filter_top = Label(frame_Input_1,
                                       text="No. of Contractors:",
                                       bg='gray65')
        input_label_filter_top.pack(side=LEFT, padx="1")

        input_Entry_4 = Entry(frame_Input_1)
        input_Entry_4.pack(side=LEFT, padx="1")

        btn_get_top_contractors = tk.Button(
            frame_Input_1,
            text="Get Top Contractors",
            command=lambda: self.get_top_contractors(
                frame, n=int(input_Entry_4.get())))
        btn_get_top_contractors.pack(side=LEFT, padx="10")

        ## Sub-Frame [2] for Input ##
        frame_Input_2 = Frame(bottom_frame, bg="#282C34")
        frame_Input_2.pack(expand=True)

        input_label_filter_qual = Label(frame_Input_2,
                                        text="Tender Amt:",
                                        bg='gray65')
        input_label_filter_qual.pack(side=LEFT, padx="1")

        input_Entry_5 = Entry(frame_Input_2)
        input_Entry_5.pack(side=LEFT, padx="1")

        btn_get_qualified_contractors = tk.Button(
            frame_Input_2,
            text="Get Qualified Contractors",
            command=lambda: self.get_qualified_contractors(
                input_Entry_5.get(), tree_list=tree_list))

        btn_get_qualified_contractors.pack(side=LEFT, padx="10")

        input_label_award_year = Label(frame_Input_2,
                                       text="Award Year:",
                                       bg='gray65')
        input_label_award_year.pack(side=LEFT, padx="1")

        input_Entry_6 = Entry(frame_Input_2)
        input_Entry_6.pack(side=LEFT, padx="1")

        btn_get_award_year = tk.Button(
            frame_Input_2,
            text="List Procurements during Award Year",
            command=lambda: self.get_award_year(
                tree_list=tree_list, _year=int(input_Entry_6.get())))

        btn_get_award_year.pack(side=LEFT, padx="10")

        ## Sub-Frame [1] for Buttons ##
        frame_button_1 = Frame(bottom_frame, bg="#282C34")
        frame_button_1.pack(side=TOP, expand=True)

        btn_get_procurement_by_category = tk.Button(
            frame_button_1,
            text="List Procurements by Category",
            command=lambda: self.get_procurement_by_cat(frame))

        btn_get_procurement_by_category.pack(side=LEFT, padx="10")

        btn_get_agency = tk.Button(frame_button_1,
                                   text="List of Agencies",
                                   command=lambda: self.get_agency(frame))
        btn_get_agency.pack(side=LEFT, padx="10")

        btn_get_awarded_contractors = tk.Button(
            frame_button_1,
            text="List of Awarded Contractors",
            command=lambda: self.get_awarded_contractors(tree_list=tree_list))

        btn_get_awarded_contractors.pack(side=LEFT, padx="10")

        btn_get_expired_contracts = tk.Button(
            frame_button_1,
            text="Get Expired Contracts",
            command=lambda tree_variable=tree: self.get_expiry_date(
                tree=tree_variable))

        btn_get_expired_contracts.pack(side=LEFT, padx="10")

        btn_sort_procure = tk.Button(
            frame_button_1,
            text="Sort by Procurement Amt",
            command=lambda: self.sort_col("awarded_amt",
                                          settings.data_set[0],
                                          False,
                                          tree_list=tree_list))

        btn_sort_procure.pack(side=LEFT, padx="10")

        ## Sub-Frame [2] for Buttons ##
        frame_button_2 = Frame(bottom_frame, bg="#282C34")
        frame_button_2.pack(expand=True)

        function4_button = tk.Button(
            frame_button_2,
            text="Export Agency Procurement to Text File",
            command=lambda: self.export_file())
        function4_button.pack(side=LEFT, expand=True, padx="10")

        back_button = tk.Button(
            frame_button_2,
            text="Return to start page",
            command=lambda: master.switch_frame(main.StartPage))
        back_button.pack(side=LEFT, expand=True, padx="1")
Exemplo n.º 13
0
        self.event_generate('<Expose>')

    def last_page(self):
        """Return the last page in the notebook."""
        return self.pages[self.tab(self.index('end') - 1)['text']]

if __name__ == '__main__':
    from Tkinter import Tk
    from Tkconstants import TOP, BOTH
    from ttk import Label, Entry, Button, Style
    # test dialog
    root=Tk()
    style = Style()
    style.configure('C.TLabel', padding=20)
    tabPage=TabbedPageSet(root, page_names=['Foobar','Baz'])
    tabPage.pack(side=TOP, expand=True, fill=BOTH)
    Label(tabPage.pages['Foobar'].frame, text='Foo', style='C.TLabel').pack()
    Label(tabPage.pages['Foobar'].frame, text='Bar', style='C.TLabel').pack()
    Label(tabPage.pages['Baz'].frame, text='Baz').pack()
    entryPgName=Entry(root)
    buttonAdd=Button(root, text='Add Page',
            command=lambda:tabPage.add_page(entryPgName.get()))
    buttonRemove=Button(root, text='Remove Page',
            command=lambda:tabPage.remove_page(entryPgName.get()))
    labelPgName=Label(root, text='name of page to add/remove:')
    buttonAdd.pack(padx=5, pady=5)
    buttonRemove.pack(padx=5, pady=5)
    labelPgName.pack(padx=5)
    entryPgName.pack(padx=5)
    root.mainloop()
Exemplo n.º 14
0
def display_reporting_procedure(*args):
    no_log_file = not _error_file_name
    path_name = os.path.join(user_directory, 'log', _error_file_name)
    size=500
    fr = Toplevel(height=size, width=size)
    fr.title(string='Diagnil Problem Reporting Procedure')
    Message(fr, aspect=300,
            text=display_messages['reporting_procedure']
            ).pack(padx=10, pady=10)

    def copy_entry_clipboard(ent):
        ent.selection_range(0, END)        # for Unix/Linux
        ent.clipboard_clear()
        ent.clipboard_append(ent.get())    # needed for Windows
    if using_ttk or using_tile:
        addr_ent = Entry(fr, background=text_bg_color, width=60)
    else:
        addr_ent = Entry(fr, background=text_bg_color, width=60, relief=SUNKEN)
    addr_ent.insert(END, email_addr)
    addr_ent.pack(padx=20, pady=5)
    fr_email = Frame(fr)
    Button(fr_email, text='Copy',
           command=EventHandler('Reporting proc',
                                lambda : copy_entry_clipboard(addr_ent))
           ).pack(side=LEFT, padx=5)
    Label(fr_email, text='E-mail Address to Clipboard').pack(side=LEFT, padx=5)
    fr_email.pack(pady=5)
    Frame(fr).pack(pady=5)
    
    if using_ttk or using_tile:
        file_ent = Entry(fr, background=text_bg_color, width=60)
    else:
        file_ent = Entry(fr, background=text_bg_color, width=60, relief=SUNKEN)
    file_ent.insert(END, path_name)
    file_ent.pack(padx=20, pady=5)
    fr_file = Frame(fr)
    copy_file_button = \
        Button(fr_file, text='Copy',
               command=EventHandler('Reporting proc',
                                    lambda : copy_entry_clipboard(file_ent)))
    copy_file_button.pack(side=LEFT, padx=5)
    Label(fr_file, text='File name to Clipboard').pack(side=LEFT, padx=5)
    fr_file.pack(pady=5)
    if no_log_file:
        file_ent['state'] = DISABLED
        copy_file_button['state'] = DISABLED
    Frame(fr).pack(pady=5)
    
    Message(fr, aspect=800,
            text=display_messages['privacy_notice']).pack(padx=10, pady=5)
    if using_ttk or using_tile:
        close_button = Button(fr, text=close_button_text, default=ACTIVE,
                              command=EventHandler('Reporting proc',
                                                   lambda : fr.destroy()))
    else:
        close_button = Button(fr, text=close_button_text, default=ACTIVE,
                              width=6,
                              command=EventHandler('Reporting proc',
                                                   lambda : fr.destroy()))
    close_button.pack(side=RIGHT, padx=30, pady=10)
    wrapped_bind(fr, '<Return>', lambda *ev: fr.destroy())
    rx,ry = root.winfo_rootx(), root.winfo_rooty()
    x = (root.winfo_width() - size) // 2
    y = (root.winfo_height() - size) // 2
    fr.geometry(newGeometry='+%d+%d'%(rx+x, ry+y))
Exemplo n.º 15
0
class Ex(Frame):
    def __init__(self,parent):
        Frame.__init__(self,parent)
        self.parent = parent
        self.x_before = 400
        self.x_current = 400
        self.y_before = 400
        self.y_current = 400
        self.FirstRun = True
        self.AddVal = ADDVAL
        self.AddVal_X = ADDVAL_X
        self.initUI()
        self.runRandWalk(STEPS)
        self.FirstRun = False
        self.Steps = STEPS
        self.newSteps = STEPS
        self.XStep = XSTEP

    def initUI(self):
        self.parent.title("Random Walk Lines 1")
        self.pack(fill=BOTH,expand=1)
        
        self.style = Style()
        self.style.theme_use("default")
        frame = Frame(self,relief=RAISED,borderwidth=2)
        frame.pack(fill=BOTH,expand=True)

        self.canvas = Canvas(frame)
        self.canvas.create_line(10,400,790,400,dash=(4,2), width=2)
        self.canvas.create_line(400,10,400,790,dash=(4,2), width=2)
        self.canvas.pack(fill=BOTH,expand=1)
        
        self.newWalkButton = Button(self,text="New Walk",
                                   command=self.newWalk)
        self.closeButton   = Button(self,text="Close",
                                    command=self.closeAll)
        self.stepsButton   = Button(self,text="Send Steps",
                                    command=self.sendSteps)
        self.xSizeButton   = Button(self,text="Set X Step",
                                    command=self.xSize)
        self.ySizeButton   = Button(self,text="Set Y Step",
                                    command=self.ySize)
        self.xSizeBox      = Entry(self,width=10)
        self.ySizeBox      = Entry(self,width=10)
        self.stepsBox      = Entry(self,width=10)
        

        # pack the buttons here
        self.closeButton.pack(side=RIGHT,padx=5,pady=5)
        self.newWalkButton.pack(side=RIGHT)
        self.stepsButton.pack(side=RIGHT)
        self.stepsBox.pack(side=RIGHT)
        self.xSizeButton.pack(side=RIGHT)
        self.xSizeBox.pack(side=RIGHT)
        self.ySizeButton.pack(side=RIGHT)
        self.ySizeBox.pack(side=RIGHT)
        
    def ySize(self):
        self.AddVal = int(self.ySizeBox.get())

    def xSize(self):
        self.AddVal_X = int(self.xSizeBox.get())

    def sendSteps(self):
        self.newSteps = int(self.stepsBox.get())
        
    def newWalk(self):
        for x in range(0,self.Steps):
            getTag = "step"+str(x)
            self.canvas.coords(getTag,(0,0,0,0))

        self.Steps = self.newSteps
        self.x_current = 400
        self.x_before  = 400
        self.y_current = 400
        self.y_before  = 400
        self.runRandWalk(self.Steps)
        
    def closeAll(self):
        Frame.quit(self)

    def RandWalk(self,whichStep):
        r = random.randint(0,1)
        rx = random.randint(0,1)
        addval = 0;
        addval_x = 0;
        toTag = "step"+str(whichStep)
        if r == 0:
            addval = (self.AddVal)
        else:
            addval = -(self.AddVal)

        if rx==0:
            addval_x = (self.AddVal_X)
        else:
            addval_x = -(self.AddVal_X)
            
        self.y_current = self.y_before + addval
        self.x_current = self.x_before + addval_x
                
        if self.y_current < 200:
            if self.y_before == 200:
                if self.FirstRun == True:
                    self.canvas.create_line(self.x_before,self.y_before,
                                            self.x_current,self.y_current,
                                            fill = "green", width = 5,
                                            tags=toTag)
                else:
                    self.canvas.coords(toTag,(self.x_before,self.y_before,
                                              self.x_current,self.y_current),)
                    self.canvas.itemconfig(toTag,fill="green")
            else:
                if self.FirstRun == True:
                    self.canvas.create_line(self.x_before,self.y_before,
                                            self.x_current,self.y_current,
                                            fill = "green", width = 5,
                                            tags=toTag)
                else:                    
                    self.canvas.coords(toTag,(self.x_before,self.y_before,
                                             self.x_current,self.y_current))
                    self.canvas.itemconfig(toTag,fill="green")
        else:
            if self.y_before<200:
                if self.FirstRun==True:
                    self.canvas.create_line(self.x_before,self.y_before,
                                            self.x_current,self.y_current,
                                            fill = "green", width = 5,
                                            tags=toTag)
                else:
                    self.canvas.coords(toTag,(self.x_before,self.y_before,
                                             self.x_current,self.y_current))
                    self.canvas.itemconfig(toTag,fill="green")
            else:
                if self.FirstRun==True:
                    self.canvas.create_line(self.x_before,self.y_before,
                                            self.x_current,self.y_current,
                                            fill = "red", width = 5,
                                            tags=toTag)
                else:
                    self.canvas.coords(toTag,(self.x_before,self.y_before,
                                             self.x_current,self.y_current))
                    self.canvas.itemconfig(toTag,fill="red")

                
        self.canvas.pack(fill=BOTH,expand=1)
        self.x_before = self.x_current
        self.y_before = self.y_current
                    

    def runRandWalk(self,steps):
        for x in range(0,steps):
            self.RandWalk(x)
Exemplo n.º 16
0
class Example(Frame):

    def __init__(self, parent):
        Frame.__init__(self)
        self.parent = parent
        self.processor = TextProcessor()

        self.initUI()



    def readCorpus(self, path):
        self.data = Corpus(path)
        self.processor.calculateConditionalFrequency(self.data, self.selCategory.get())
        #self.processor.calculateTotalTermFrequency(self.data)


        self.categoryOption['menu'].delete(0, 'end')
        for attr in self.data.attributes:
            self.categoryOption['menu'].add_command(label=attr, command=lambda v=attr: self.changeCategory(v) )

        self.curdoc=0

        self.txt1.delete('1.0', END)
        self.txt1.insert('1.0', self.data.docs[self.curdoc].text)

    def refreshTextInfo(self):

        if self.selCategory.get() != 'Categories':
            idcat = self.data.attributes.index(self.selCategory.get())
            self.entry1.delete(0, END)
            self.entry1.insert(0, self.data.getAttributeVal(self.curdoc,  self.selCategory.get() ))

        self.txt1.delete('1.0', END)
        self.txt1.insert('1.0', self.data.docs[self.curdoc].text)

        self.applyProcessing()

    def changeCategory(self, value):
        self.selCategory.set(value)
        self.entry1.delete(0, END)
        self.entry1.insert(0, self.data.getAttributeVal(self.curdoc, self.selCategory.get()))
        self.processor.calculateConditionalFrequency(self.data, self.selCategory.get())

    def prevDocument(self):
        if self.curdoc>0:
            self.curdoc-=1
            self.refreshTextInfo()

    def nextDocument(self):
        if self.curdoc<self.data.ndocs-1:
            self.curdoc+=1
            self.refreshTextInfo()

    def popup(self, event):
       print "hello "+str(event.widget)
       self.popupmenu.tk_popup(event.x_root, event.y_root, 0)
       print event.widget.index("@%s,%s" % (event.x, event.y))

    def applyProcessing(self):
        if self.selCategory.get() != 'Categories':
            indxCat = self.data.attributes.index( self.selCategory.get() )
            textResult = self.processor.process(self.data.docs[self.curdoc], indxCat)
        else:
            textResult = ""
        self.txt2.delete('1.0', END)
        self.txt2.insert('1.0', textResult)

    def loadCorpus(self):
	path = tkFileDialog.askdirectory()
        self.readCorpus(path)
	self.refreshTextInfo()

    def hello(self):
        print "Hello"

    def initUI(self):


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

        sw = self.parent.winfo_screenwidth()
        sh = self.parent.winfo_screenheight()

        frame1 = Frame(self, relief=RAISED, borderwidth=1)
        frame1.pack(fill=X)

        button1 = Button(frame1, text=u"<", command=self.prevDocument)
        button1.pack(side=LEFT, padx=5, pady=5)

        button2 = Button(frame1, text=u">", command=self.nextDocument)
        button2.pack(side=LEFT, padx=5, pady=5)


        self.selCategory = StringVar(self)
        self.categoryOption = OptionMenu(frame1, self.selCategory, *["Categories"], command=self.changeCategory)
        self.categoryOption.pack(side=LEFT, padx=5, pady=5)

        self.entry1 = Entry(frame1)
        self.entry1.pack(side=LEFT, padx=5, pady=5)

        self.ignoreActualDocVar = IntVar(self)

        checkButton1 = Checkbutton(frame1, text="Ignored", variable=self.ignoreActualDocVar)
        checkButton1.pack(side=LEFT, padx=5, pady=5)

        button3 = Button(frame1, text=u"Save document", command=self.prevDocument)
        button3.pack(side=LEFT, padx=5, pady=5)

        #entry1 = Entry(frame1)
        #entry1.pack(fill=X, padx=5, expand=True)




        frame2 = PanedWindow(self, orient=HORIZONTAL)
        frame2.pack(fill=BOTH, expand=1)

        self.txt1 = Text(frame2, width=sw/22)
        frame2.add(self.txt1)

        self.txt2 = Text(frame2)
        self.txt2.bind("<Button-3>", self.popup)      
        frame2.add(self.txt2)






        frame3 = Frame(self, relief=RAISED, borderwidth=1)
        frame3.pack(fill=X)

        #lbl3 = Label(frame3, text="Author", width=6)
        #lbl3.pack(side=LEFT, padx=5, pady=5)

        #entry3 = Entry(frame3)
        #entry3.pack(fill=X, padx=5, expand=True)

        self.swVar = IntVar(self)
        checkButton1 = Checkbutton(frame3, text="Remove stop words", variable=self.swVar)
        checkButton1.pack(side=LEFT, padx=5, pady=5)

        self.lowerVar = IntVar(self)
        checkButton1 = Checkbutton(frame3, text="Convert to lower case", variable=self.lowerVar)
        checkButton1.pack(side=LEFT, padx=5, pady=5)

        button3 = Button(frame3, text=u"Apply", command=self.applyProcessing)
        button3.pack(side=LEFT, padx=5, pady=5)

        #self.readCorpus()
        


	# create a toplevel menu
	menubar = Menu(self)


        filemenu = Menu(menubar, tearoff=0)
        filemenu.add_command(label="Quit", command=self.parent.quit)
        filemenu.add_command(label="Open corpus", command=self.loadCorpus)
        menubar.add_cascade(label="Project", menu=filemenu)
	#menubar.add_command(label="Quit!")  # , command=root.quit

	# display the menu
	self.parent.config(menu=menubar)

	self.popupmenu = Menu(self.parent, tearoff=0)
	self.popupmenu.add_command(label="Undo", command=self.hello)
	self.popupmenu.add_command(label="Redo", command=self.hello)


    def centerWindow(self):

        sw = self.parent.winfo_screenwidth()
        sh = self.parent.winfo_screenheight()

        w = sw/1.5
        h = sh/1.5

        x = (sw - w) / 2
        y = (sh - h) / 2
        self.parent.geometry('%dx%d+%d+%d' % (w, h, x, y))
Exemplo n.º 17
0
    def initUI(self):

        self.parent.title("Emammal Legacy Data Converter")
        self.style = Style()
        self.style.theme_use("default")
        self.pack(fill=BOTH, expand=True)

        self.root_directory = StringVar(self.parent)
        self.output_directory = StringVar(self.parent)
        self.results = StringVar()
        self.radio_type = IntVar()
        self.radio_type = 0

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

        lbl1 = Label(frame1, text="Input Directory", width=15)
        lbl1.pack(side=LEFT, padx=5, pady=5)

        select_dir = Button(frame1,
                            text='Choose Directory',
                            command=self.input_askdirectory)
        select_dir.pack(side=LEFT, padx=5, pady=5)

        entry1 = Entry(frame1, textvariable=self.root_directory)
        entry1.pack(fill=X, padx=5, expand=True)

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

        lbl2 = Label(frame2, text="Output Directory", width=15)
        lbl2.pack(side=LEFT, padx=5, pady=5)

        output_dir = Button(frame2,
                            text='Choose Directory',
                            command=self.output_askdirectory)
        output_dir.pack(side=LEFT, padx=5, pady=5)

        entry2 = Entry(frame2, textvariable=self.output_directory)
        entry2.pack(fill=X, padx=5, expand=True)

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

        lbl2 = Label(frameRadio, text="Manifest Type", width=15)
        lbl2.pack(side=LEFT, padx=5, pady=5)

        radio_emammal = Radiobutton(frameRadio,
                                    text="eMammal xmlVerifier-1.0.2",
                                    variable=self.radio_type,
                                    value=1,
                                    command=self.update_type_value)
        radio_emammal.pack(side=LEFT, padx=5, pady=5)

        radio_classic = Radiobutton(frameRadio,
                                    text="WSC eMammal Classic",
                                    variable=self.radio_type,
                                    value=0,
                                    command=self.update_type_value)
        radio_classic.pack(side=LEFT, padx=5, pady=5)

        radio_classic.select()

        frame3 = Frame(self)
        frame3.pack(fill=BOTH, expand=True)

        lbl3 = Label(frame3, text="Results", width=15)
        lbl3.pack(side=LEFT, anchor=N, padx=5, pady=5)

        self.results = Text(frame3)
        self.results.pack(fill=BOTH, pady=5, padx=5, expand=True)

        closeButton = Button(self, text="Close", command=self.quit)
        closeButton.pack(side=RIGHT, padx=5, pady=5)

        okButton = Button(self, text="Run", command=self.run_process)
        okButton.pack(side=RIGHT)
Exemplo n.º 18
0
    def show_sell_bills(master):
        """Заполняет верхний фрейм продаж блокнотом со счетами и
        сответствующими элементами управления."""

        sellTopFrame = Frame(master, relief=GROOVE)
        sellTopFrame.pack(side=TOP, fill=X, padx=10, pady=5)

        #------------------------------------------------------------
        def b_add():
            """Срабатывает при нажатии кнопки "Добавить счет", добавляет таб в
            блокноте со счетами"""

            bill = Bill(note)
            bills.append(bill)
            tab = bill.frame
            note.add(tab, text = show_sell_bills.entry.get())
            button_del_bill.configure(state=NORMAL)

        button_add_bill = Button(sellTopFrame,text=u'Добавить\nсчет',
                        style='Little.TButton', command=b_add)
        button_add_bill.pack(side=LEFT, padx=10, pady=10, fill=X)

        #------------------------------------------------------------
        """Хоть и без отдельной функции, но комментарий расширенный стоит дать.
        Это окошко ввода названия для создаваемого счета"""

        show_sell_bills.entry = StringVar()
        show_sell_bills.entry.set(u'Стол ')
        entry = Entry(sellTopFrame, textvariable=show_sell_bills.entry,
                        font=('verdana', FONT_SIZE))
        entry.pack(side=LEFT, padx=10, pady=10)

        #------------------------------------------------------------
        def b_left():
            """Срабатывает при нажатии кнопки "влево", сдвигается влево на
            один таб в блокноте со счетами"""

            w_name = note.select()
            window_names = note.tabs()
            if window_names:
                index = window_names.index(w_name) - 1
                note.select(window_names[index])

        button_left = Button(sellTopFrame, image=data.IMG_INTERFACE[3],
                                command=b_left)
        button_left.pack(side=LEFT, padx=5, pady=5)

        #------------------------------------------------------------
        def b_right():
            """Срабатывает при нажатии кнопки "вправо", сдвигается вправо на
            один таб в блокноте со счетами"""

            w_name = note.select()
            window_names = note.tabs()
            if window_names:
                index = window_names.index(w_name) + 1
                if index == len(window_names):
                    index = 0
                note.select(window_names[index])

        button_right = Button(sellTopFrame, image=data.IMG_INTERFACE[4],
                                command=b_right)
        button_right.pack(side=LEFT, padx=5, pady=5)

        #------------------------------------------------------------
        def b_del():
            """Срабатывает при нажатии кнопки "удалить счет", удаляет таб в
            блокноте со счетами"""

            w_name = note.select()
            window_names = note.tabs()
            if not window_names:
                button_del_bill.configure(state=DISABLED)
            else:
                index = window_names.index(w_name)
                if not bills[index].bill:
                    note.forget(note.select())
                    del(bills[index])
                    if not note.tabs():
                        button_del_bill.configure(state=DISABLED)
                else:
                    if tkMessageBox.askokcancel('Внимание!',
                                   'Вы уверены, что хотите удалить этот счет?'):
                        note.forget(note.select())
                        del(bills[index])
                        if not note.tabs():
                            button_del_bill.configure(state=DISABLED)

        button_del_bill = Button(sellTopFrame,text=u'Удалить\nсчет',
                        style='Little.TButton', command=b_del)
        button_del_bill.pack(side=LEFT, padx=10, pady=10, fill=X)


        #----- ОСТАВШИЕСЯ ЭЛЕМЕНТЫ - БЛОКНОТ, СЧЕТЧИК ПРОДАЖ, КАЛЬКУЛЯТОР ------

        label = Label(sellTopFrame, text='', bg='white',
                                            font=('Lucida Console', FONT_SIZE))
        label.pack(side=RIGHT, padx=10, pady=5)

        def label_renew():
            """Обновляет счетчик продаж в верхнем правом углу экрана"""
            sold = '%6.2f' % round(queries.sell_in_day(),2) + ' грн.'
            label.configure(text='СЕГОДНЯ ПРОДАНО\n на ' + sold)

        label_renew()
        show_sell_bills.label_renew = label_renew

        #-----------
        button_calc = Button(sellTopFrame, image=data.IMG_INTERFACE[8],
                        command=calculator_press)
        button_calc.pack(side=RIGHT, padx=5, pady=5)

        button_paid = Button(sellTopFrame, image=data.IMG_INTERFACE[10], width=8,
                                     compound=LEFT, text=u'Блокнот\nрасходов',
                                     command=lambda: calc_pad(data))
        button_paid.pack(side=RIGHT, padx=5, pady=5)

        #-----------
        note = Notebook(master, style='Custom.TNotebook')
        bills = []
        note.pack(side=TOP, padx=BILL_PAD_X, pady=BILL_PAD_Y)

        #----------- Один пустой столик ставим по умолчанию ----------
        bill = Bill(note)
        bills.append(bill)
        tab = bill.frame
        note.add(tab, text = u' Стол 1 ')
        #-------------------------------------------------------------

        #--------Автоподъем высоты ------------
        sellTopFrame.update()
        y1 = sellTopFrame.winfo_height()
        y2 = note.winfo_height()
        master.configure(height = y1 + y2 + 40)
        master.pack_propagate(False)
        #---------------------------------------

        calculator_press.window_calc = False

        return bills, note
Exemplo n.º 19
0
class topFrame(Frame):
    def __init__(self, parent):
        Frame.__init__(self, parent)
        self.parent = parent
        self.setUI()

    def setUI(self):
        self.parent.title("ServoGui")
        self.pack(fill=BOTH, expand=1)
        self.comPort = StringVar(self)
        self.laststrm = StringVar(self)

        settingFrame = Frame(self, borderwidth=1, relief=RAISED)
        settingFrame.pack(fill=Y, side=LEFT)

        Label(settingFrame, width=50, text="Port Settings", bg="green", fg="black").pack(fill=X)

        ports = self.getComPorts()
        w = apply(OptionMenu, (settingFrame, self.comPort) + tuple(ports))
        w.pack(fill=X)

        BaudFrame = Frame(settingFrame)
        BaudFrame.pack(fill=X)
        Label(BaudFrame, text="Baud:").pack(side=LEFT)
        self.baud_entry = Entry(BaudFrame,
                                width=15,
                                validate="focusout",
                                validatecommand=self.baudValidate)
        self.baud_entry.pack(side=LEFT, expand = True)
        self.baud_entry.insert(0,"115200")

        Button(settingFrame, text="Open Port", command=self.openPort). pack(fill=X)
        Button(settingFrame, text="Close Port", command=self.closePort). pack(fill=X)

        StreamFrame = Frame(settingFrame)
        StreamFrame.pack()
        self.btnStartStream = Button(StreamFrame,
                                text="Start Stream",
                                command=self.startStream,
                                state=DISABLED)
        self.btnStopStream = Button(StreamFrame,
                                text="Stop Stream",
                                command=self.stopStream,
                                state=DISABLED)
        self.btnGetConfig = Button(StreamFrame,
                                text="Get Config",
                                command=self.getConfig,
                                state=DISABLED)
        self.btnStartStream.pack(side=LEFT)
        self.btnStopStream.pack(side=LEFT)
        self.btnGetConfig.pack(side=LEFT)
        self.queue = Queue.Queue()
        self.writequeue = Queue.Queue()

        Label(settingFrame, width=50, text="Drive Settings", bg="green", fg="black").pack(fill=X)
        DriveSettingsFrame = Frame(settingFrame, relief=SUNKEN)
        DriveSettingsFrame.pack(fill=X)

        driveSettingsFrames = []
        self.driveSettingsEntries = []
        for drivesetting in drivesettings:
            driveSettingsFrames.append(Frame(DriveSettingsFrame))
            driveSettingsFrames[-1].pack(fill=X)
            Label(driveSettingsFrames[-1], text=drivesetting).pack(side=LEFT)
            self.driveSettingsEntries.append(Entry(driveSettingsFrames[-1]))
            self.driveSettingsEntries[-1].pack(side=RIGHT)
        Button(DriveSettingsFrame, text="Send to drive", command=self.sendConfig).pack(fill=X)
        Button(DriveSettingsFrame, text="Save config in drive", command=self.saveConfig).pack(fill=X)

        Label(settingFrame, width=50, textvariable=self.laststrm, bg="green", fg="black").pack(fill=X)

        #MatplotLib stuff

        f = Figure(figsize=(5, 4), dpi=100)
        self.a = f.add_subplot(311)
        self.a.set_title("Requested and actual position")
        self.b = f.add_subplot(312)
        self.b.set_title("Error")
        self.c = f.add_subplot(313)
        self.c.set_title("Current meas ADC value")

        self.canvas = FigureCanvasTkAgg(f, master=self)
        self.canvas.show()
        self.canvas.get_tk_widget().pack(side=TOP, fill=BOTH, expand=1)

        toolbar = NavigationToolbar2TkAgg(self.canvas, self)
        toolbar.update()
        self.canvas._tkcanvas.pack(side=TOP, fill=BOTH, expand=1)

        self.hall=[]
        self.encoder_count=[]
        self.pos_error=[]
        self.requested_position=[]
        self.requested_delta=[]
        self.adc_value=[]
        self.pid_output=[]
        self.a.set_autoscaley_on(True)


        self.encoder_line, = self.a.plot([],[])
        self.error_line, = self.b.plot([],[])
        self.reqpos_line, = self.a.plot([],[])
        self.ADC_line, = self.c.plot([],[])
        self.updateCanvas()


    def baudValidate(self):
        sVal = self.baud_entry.get()
        try:
            iVal = int(sVal)
        except ValueError:
            print "Illegal baud value"
            self.baud_entry.delete(0, END)
            self.baud_entry.insert(0, "115200")
            return False
        return True

    def openPort(self):
        try:
            self.ser = serial.Serial(self.comPort.get(), int(self.baud_entry.get()), timeout=0)
        except serial.SerialException:
            print "unable to open"
            return
        self.btnStartStream['state'] = NORMAL
        self.btnStopStream['state'] = NORMAL
        self.btnGetConfig['state'] = NORMAL

        self.thread = SerialThread(self.queue, self.writequeue, self.ser)
        self.thread.daemon = True
        self.thread.start()
        self.process_serial()

    def closePort(self):
        self.thread.stop()
        self.thread.join()
        self.ser.closePort()

        self.btnStartStream['state'] = DISABLED
        self.btnStopStream['state'] = DISABLED
        self.btnGetConfig['state'] = DISABLED

    def process_serial(self):
        while self.queue.qsize():
            try:
                line = self.queue.get()
                self.handleLine(line)
            except Queue.Empty:
                pass
        self.after(100, self.process_serial)

    def startStream(self):
        self.writequeue.put(b"STREAM START \r")

    def stopStream(self):
        self.writequeue.put(b"STREAM DIE \r")
    def getConfig(self):
        self.writequeue.put(b"GET\r")
    def saveConfig(self):
        self.writequeue.put(b"SAVE \r")
    def sendConfig(self):
        for setting in drivesettings:
            dataToSend = b"SET "+setting+" "+self.driveSettingsEntries[drivesettings.index(setting)].get()+"\r"
            print dataToSend
            self.writequeue.put(dataToSend)
            time.sleep(0.2)


    def getComPorts(self):
        ports = serial.tools.list_ports.comports()
        portNames = []
        for port in ports:
            portNames.append(port[0])
        return portNames
    def handleLine(self,line):
        line = line.replace(" ", "")
        line = line.replace("/n", "")
        line = line.replace("/r", "")
        parts = line.split(":")
        if len(parts)>1:
            if parts[0] == "STR":
                self.handleStr(parts[1])
                return
            if parts[0] in drivesettings:
                self.driveSettingsEntries[drivesettings.index(parts[0])].delete(0, END)
                self.driveSettingsEntries[drivesettings.index(parts[0])].insert(0, parts[1])
    def handleStr(self,strm):
        #format of the stream line: STR:hall;count;requestedPosition;requestedDelta;error
        parts = strm.split(";")

        self.laststrm.set(strm)
        self.hall.append(int(parts[0]))
        if len(self.hall) > 5000:
            self.hall.pop(0)

        self.encoder_count.append(parts[1])
        if len(self.encoder_count) > 5000:
            self.encoder_count.pop(0)

        self.requested_position.append(parts[2])
        if len(self.requested_position) > 5000:
            self.requested_position.pop(0)

        self.requested_delta.append(parts[3])
        if len(self.requested_delta) > 5000:
            self.requested_delta.pop(0)

        self.pos_error.append(parts[4])
        if len(self.pos_error) > 5000:
            self.pos_error.pop(0)

        self.adc_value.append(parts[5])
        if len(self.adc_value) > 5000:
            self.adc_value.pop(0)

        self.pid_output.append(parts[5])
        if len(self.pid_output) > 5000:
            self.pid_output.pop(0)

    def updateCanvas(self):

        self.encoder_line.set_xdata(range(len(self.encoder_count)))
        self.encoder_line.set_ydata(self.encoder_count)
        self.error_line.set_xdata(range(len(self.pos_error)))
        self.error_line.set_ydata(self.pos_error)
        self.reqpos_line.set_xdata(range(len(self.requested_position)))
        self.reqpos_line.set_ydata(self.requested_position)
        self.ADC_line.set_xdata(range(len(self.adc_value)))
        self.ADC_line.set_ydata(self.adc_value)
        self.a.relim()
        self.a.autoscale_view()
        self.b.relim()
        self.b.autoscale_view()
        self.c.relim()
        self.c.autoscale_view()
        self.canvas.draw()
        self.after(100, self.updateCanvas)
Exemplo n.º 20
0
class ChooseType(Frame):

    def __init__(self, parent, controller):
        Frame.__init__(self, parent)
        self.controller = controller
        ChooseType.socket = None
        ChooseType.create_player = None
        
        self.plx_name = "PLAYER"
        ChooseType.plx_type = "SPECTATOR"
        ChooseType.start_game = None
        label_1 = Label(self, text="Create character", font=TITLE_FONT, justify=CENTER, anchor=CENTER)
        label_2 = Label(self, text="Name: ")
        self.entry_1 = Entry(self)
        self.entry_1.insert(0, 'Player_')

        label_3 = Label(self, text="Join as: ")
        button1 = Button(self, text="FROG", command=self.callback_frog)
        button2 = Button(self, text="FLY", command=self.callback_fly)
        button3 = Button(self, text="SPECTATOR", command=self.callback_spec)
        ChooseType.button4 = Button(self, text="Back", command=lambda: controller.show_frame("StartPage"))

        label_1.pack(side="top", fill="x", pady=10)
        label_2.pack()       
        self.entry_1.pack()
        label_3.pack()
        button1.pack()
        button2.pack()
        button3.pack()
        ChooseType.button4.pack(pady=20)
    
    def check_name(self,s):
        temp = False
        try:
            s.decode('ascii')
        except UnicodeEncodeError:
            print "it was not a ascii-encoded unicode string"
            tkMessageBox.showwarning("Error message", "Invalid player name")
        except UnicodeDecodeError:
            print "it was not a ascii-encoded unicode string"
            tkMessageBox.showwarning("Error message", "Invalid player name")
        else:
            if len(s) < 10 and len(s) >= 1:
                temp = True
            else:
                tkMessageBox.showwarning("Error message", "String lenght must be 1-10 characters")
        return temp
    
    # this frame works on callbacks so each button is processed separately
    # 1. get name
    # 2. check if the name is valid
    # 3. set player type
    # 4. **create server localy if the user comes from create server frame
    # 5. add player to the game (parameters: name, type)
    def callback_frog(self):
        self.plx_name = self.entry_1.get()
        if self.check_name(self.plx_name):
            ChooseType.plx_type = "FROG"
            self.create_server(CreateServer.plx_name,CreateServer.game_dim)
            self.callback_add_player()

    def callback_fly(self):
        self.plx_name = self.entry_1.get()
        if self.check_name(self.plx_name):
            ChooseType.plx_type = "FLY"
            self.create_server(CreateServer.plx_name,CreateServer.game_dim)
            self.callback_add_player()

    def callback_spec(self):
        self.plx_name = self.entry_1.get()
        if self.check_name(self.plx_name):
            ChooseType.plx_type = "SPECTATOR"
            self.create_server(CreateServer.plx_name,CreateServer.game_dim)
            self.callback_add_player()
        
    
    # join the game
    def callback_add_player(self):
        set_shut_down_level(1)
        data = "JOIN;"+ChooseType.plx_type
        if global_state==1:
            # directly (locally) access the game engine
            ChooseType.create_player = CreateServer.local_world.add_player(self.plx_name)
            CLIENTS.append((ChooseType.create_player, 'Local Player'))
            CreateServer.local_world.set_player_attr(ChooseType.create_player, 1, 'character', data)
            ChooseType.start_game = True
        else:
            GameWindow.vSer.set(globvar[0]) 
            host,_ = globvar[1]
            try:
                ChooseType.socket = s = socket.socket(AF_INET,SOCK_STREAM)
                s.connect((host,QUAD_AXE))
                # ping-pong communication:  
                # 1. client: ADD_ME;Player1 -> server: ADDED -> client
                # 2. client: JOIN;FROG -> server
                data2 = 'ADD_ME;'+self.plx_name
                self.socket.send(data2.encode())
                buf = ChooseType.socket.recv(100)
                message = buf.decode('utf-8')
                if message == "ADDED":
                    print 'Added player!'
                    ChooseType.start_game = True
                    ChooseType.socket.send(data.encode())
            except Exception as e:
                print e
                ChooseType.start_game = False
                print 'Cannot connect to server!'
        self.controller.show_frame("GameWindow")
    
    # this is the function that initiates: engine, server and broadcast
    def create_server(self,s_name,field_xy):
        if global_state == 0 or shut_down_level != 0:
            return
        ChooseType.button4.config(state="disabled")
        # addition game field size check
        GameWindow.vSer.set(s_name)
        m_split=field_xy.split('X')
        try:
            x_size = int(m_split[0])
        except:
            x_size = 10  
        try:
            y_size = int(m_split[1])
        except:
            y_size = 10                    
        if (x_size < 2 or x_size > MAX_GF_SIZE):
            print 'The gamefield\'s dimensions size should be between 3 and '+str(MAX_GF_SIZE)+' !'
            x_size = 10             
        if (y_size < 2 or y_size > MAX_GF_SIZE):
            print 'The gamefield\'s dimensions size should be between 3 and '+str(MAX_GF_SIZE)+' !'
            y_size = 10
        # Start the world
        CreateServer.local_world = engine.World(x_size,y_size)
        et = engine.engine_thread(ENGINE_SLEEP, CreateServer.local_world)
        et.start()
        THREADS.append(et)       
        # Initialize the server
        server_sock = server.init_server()
        set_globvar(server_sock.getsockname())
        st = server.server_thread(s_name, server_sock, CreateServer.local_world)        
        st.start() # Start the server thread
        THREADS.append(st)     
        # Initialize the broadcaster
        bc_sock = server.init_broadcaster()
        # Start broadcasting thread
        bt = server.announce_bc_thread(bc_sock, BROADCASTING_PORT, s_name, CreateServer.local_world)
        bt.start()
        THREADS.append(bt)
Exemplo n.º 21
0
class Example(Frame):
    def __init__(self, parent):
        Frame.__init__(self, parent)

        self.parent = parent

        self.initUI()

    def initUI(self):

        self.parent.title("Review")
        self.pack(fill=BOTH, expand=True)
        labelfont20 = ('Roboto', 20, 'bold')
        labelfont12 = ('Roboto', 12, 'bold')

        frame0 = Frame(self)
        frame0.pack()

        lbl0 = Label(frame0, text="Hi USER")
        lbl0.config(font=labelfont20)
        lbl0.pack(padx=5, pady=5)
        lbl00 = Label(frame0, text="Fill the data here")
        lbl00.config(font=labelfont12)
        lbl00.pack(padx=5, pady=5)

        frame1 = Frame(self)
        frame1.pack()

        lbl1 = Label(frame1, text="Name", width=15)
        lbl1.pack(side=LEFT, padx=7, pady=5)

        self.entry1 = Entry(frame1, width=20)
        self.entry1.pack(padx=5, expand=True)

        frame2 = Frame(self)
        frame2.pack()

        lbl2 = Label(frame2, text="Branch", width=15)
        lbl2.pack(side=LEFT, padx=7, pady=5)

        self.entry2 = Entry(frame2)
        self.entry2.pack(fill=X, padx=5, expand=True)

        frame3 = Frame(self)
        frame3.pack()

        lbl3 = Label(frame3, text="Percent", width=15)
        lbl3.pack(side=LEFT, padx=7, pady=5)

        self.entry3 = Entry(frame3)
        self.entry3.pack(fill=X, padx=5, expand=True)

        frame4 = Frame(self)
        frame4.pack()

        lbl4 = Label(frame4, text="Placed(Yes/No)", width=15)
        lbl4.pack(side=LEFT, padx=7, pady=5)

        self.entry4 = Entry(frame4)
        self.entry4.pack(fill=X, padx=5, expand=True)

        frame5 = Frame(self)
        frame5.pack()

        lbl5 = Label(frame5, text="Resume_File", width=15)
        lbl5.pack(side=LEFT, padx=7, pady=5)

        self.entry5 = Entry(frame5)
        self.entry5.pack(fill=X, padx=5, expand=True)

        frame6 = Frame(self)
        frame6.pack()
        closeButton = Button(frame6,
                             text="SUBMIT",
                             width=15,
                             command=self.getDate)
        closeButton.pack(padx=5, pady=5)

        frame000 = Frame(self)
        frame000.pack()

        self.lbl000 = Label(frame000, text="Enter the data and click SUBMIT")
        self.lbl000.config(font=labelfont12)
        self.lbl000.pack(padx=5, pady=5)

    def getDate(self):
        x1 = self.entry1.get()
        x2 = self.entry2.get()
        x3 = self.entry3.get()
        x4 = self.entry4.get()
        x5 = self.entry5.get()

        list1 = [x1, x2, x3, x4, "=HYPERLINK(" + "\"" + x5 + "\"" + ")"]
        self.entry1.delete(0, 'end')
        self.entry2.delete(0, 'end')
        self.entry3.delete(0, 'end')
        self.entry4.delete(0, 'end')
        self.entry5.delete(0, 'end')
        self.lbl000.config(text="YO")

        with open("test.csv", "ab") as fp:
            wr = csv.writer(fp, dialect='excel')
            wr.writerow(list1)
        fp.close()
Exemplo n.º 22
0
class Example(Frame):
  
    def __init__(self, parent):
        Frame.__init__(self, parent)   
         
        self.parent = parent
        
        self.initUI()
        
        
    def initUI(self):
   
      
        self.parent.title("Append Data")
        self.pack(fill=BOTH, expand=True)
        labelfont20 = ('Roboto', 15, 'bold')
        labelfont10 = ('Roboto', 10, 'bold')
        labelfont8 = ('Roboto', 8, 'bold')
        
        frame0 = Frame(self)
        frame0.pack()
        
        lbl0 = Label(frame0, text="Hi Nakul")
        lbl0.config(font=labelfont20)    
        lbl0.pack( padx=5, pady=5)
        lbl00 = Label(frame0, text="Fill the data here")
        lbl00.config(font=labelfont10)
        lbl00.pack( padx=5, pady=5)
        
        ####################################
        frame1 = Frame(self)
        frame1.pack()
        frame1.place(x=50, y=100)        
        
        lbl1 = Label(frame1, text="Name", width=15)
        lbl1.pack(side=LEFT,padx=7, pady=5) 
             
        self.entry1 = Entry(frame1,width=20)
        self.entry1.pack(padx=5, expand=True)
    
        ####################################
        frame2 = Frame(self)
        frame2.pack()
        frame2.place(x=50, y=130)
        
        lbl2 = Label(frame2, text="F Name", width=15)
        lbl2.pack(side=LEFT, padx=7, pady=5)

        self.entry2 = Entry(frame2)
        self.entry2.pack(fill=X, padx=5, expand=True)
        
        ######################################
        frame3 = Frame(self)
        frame3.pack()
        frame3.place(x=50, y=160)
        
        lbl3 = Label(frame3, text="DOB(D/M/Y)", width=15)
        lbl3.pack(side=LEFT, padx=7, pady=5)        

        self.entry3 = Entry(frame3)
        self.entry3.pack(fill=X, padx=5, expand=True) 
        
        #######################################
        frame4 = Frame(self)
        frame4.pack()
        frame4.place(x=50, y=190)
        
        lbl4 = Label(frame4, text="Medium(H/E)", width=15)
        lbl4.pack(side=LEFT, padx=7, pady=5)        

        self.entry4 = Entry(frame4)
        self.entry4.pack(fill=X, padx=5, expand=True)
        
        ##########################################
        frame5 = Frame(self)
        frame5.pack()
        frame5.place(x=50, y=225)  
        MODES = [
            ("M", "Male"),
            ("F", "Female"),
            ]
        lbl5 = Label(frame5, text="Gender", width=15)
        lbl5.pack(side=LEFT, padx=7, pady=5)

        global v
        v = StringVar()
        v.set("Male") # initialize

        for text, mode in MODES:
            b = Radiobutton(frame5, text=text,variable=v, value=mode)
            b.pack(side=LEFT,padx=10)
        
        ############################################
        #####printing line
        lbl5a = Label(text="___________________________________________________")
        lbl5a.pack()
        lbl5a.place(x=45, y=255)  
        
        ############################################
        frame6 = Frame(self)
        frame6.pack()
        frame6.place(x=50, y=290)
        
        lbl6 = Label(frame6, text="Phone No:", width=15)
        lbl6.pack(side=LEFT, padx=7, pady=5)        

        self.entry6 = Entry(frame6)
        self.entry6.pack(fill=X, padx=5, expand=True)
        
        ################################################
        
        frame7 = Frame(self)
        frame7.pack()
        frame7.place(x=50, y=320)
        
        lbl7 = Label(frame7, text="Landline No:", width=15)
        lbl7.pack(side=LEFT, padx=7, pady=5)        

        self.entry7 = Entry(frame7)
        self.entry7.pack(fill=X, padx=5, expand=True)
        
        ###############################################
        frame8 = Frame(self)
        frame8.pack()
        frame8.place(x=50, y=350)
        
        lbl8 = Label(frame8, text="Email:", width=15)
        lbl8.pack(side=LEFT, padx=7, pady=5)        

        self.entry8 = Entry(frame8)
        self.entry8.pack(fill=X, padx=5, expand=True)
        
        #############################################
        frame9 = Frame(self)
        frame9.pack()
        frame9.place(x=50, y=380)
        
        lbl9 = Label(frame9, text="HomeTown:", width=15)
        lbl9.pack(side=LEFT, padx=7, pady=5)        

        self.entry9 = Entry(frame9)
        self.entry9.pack(fill=X, padx=5, expand=True)
        
        ###############################################
        frame10 = Frame(self)
        frame10.pack()
        frame10.place(x=60, y=415)
        
        lbl10 = Label(frame10, text="Address:")
        lbl10.pack( padx=5, pady=5)        

        self.entry10 = Text(frame10,height=5, width=28)
        self.entry10.pack(padx=5, expand=True)
        
        ##############################################
        
        #############################################
        
        frame11 = Frame(self)
        frame11.pack()
        frame11.place(x=350, y=100)
        
        lbl11x = Label(frame11,text="_______Class 10th Data_______")
        lbl11x.pack(padx=0, pady=0)
        
        lbl11 = Label(text="%",width=15)
        lbl11.pack(side=LEFT,padx=0, pady=0)
        lbl11.place(x=350, y=130)        

        self.entry11 = Entry(width=12)
        self.entry11.pack(padx=1, expand=True)
        self.entry11.place(x=420, y=130) 
        
        lbl11a = Label(text="Passing Year",width=15)
        lbl11a.pack(padx=0, pady=2)   
        lbl11a.place(x=350, y=160)   

        self.entry11a = Entry(width=12)
        self.entry11a.pack(padx=1, expand=True)
        self.entry11a.place(x=420, y=160) 
        
        lbl11b = Label(text="Board Name",width=15)
        lbl11b.pack(padx=0, pady=2)   
        lbl11b.place(x=350, y=190)   

        self.entry11b = Entry(width=12)
        self.entry11b.pack(padx=1, expand=True)
        self.entry11b.place(x=420, y=190)
        
        
        ####################################################
        frame12 = Frame(self)
        frame12.pack()
        frame12.place(x=510, y=100)
        
        lbl12x = Label(frame12,text="_______Class 12th Data_______")
        lbl12x.pack(padx=0, pady=0)
        
        lbl12 = Label(text="%",width=15)
        lbl12.pack(side=LEFT,padx=0, pady=0)
        lbl12.place(x=510, y=130)        

        self.entry12 = Entry(width=12)
        self.entry12.pack(padx=1, expand=True)
        self.entry12.place(x=580, y=130) 
        
        lbl12a = Label(text="Passing Year",width=15)
        lbl12a.pack(padx=0, pady=2)   
        lbl12a.place(x=510, y=160)   

        self.entry12a = Entry(width=12)
        self.entry12a.pack(padx=1, expand=True)
        self.entry12a.place(x=580, y=160) 
        
        lbl12b = Label(text="Board Name",width=15)
        lbl12b.pack(padx=0, pady=2)   
        lbl12b.place(x=510, y=190)   

        self.entry12b = Entry(width=12)
        self.entry12b.pack(padx=1, expand=True)
        self.entry12b.place(x=580, y=190)

        #####################################################
        frame13 = Frame(self)
        frame13.pack()
        frame13.place(x=670, y=100)
        
        lbl13x = Label(frame13,text="________B.Tech Data_________")
        lbl13x.pack(padx=0, pady=0)
        
        lbl13 = Label(text="%",width=15)
        lbl13.pack(side=LEFT,padx=0, pady=0)
        lbl13.place(x=670, y=130)        

        self.entry13 = Entry(width=12)
        self.entry13.pack(padx=1, expand=True)
        self.entry13.place(x=740, y=130) 
        
        lbl13a = Label(text="Passing Year",width=15)
        lbl13a.pack(padx=0, pady=2)   
        lbl13a.place(x=670, y=160)   

        self.entry13a = Entry(width=12)
        self.entry13a.pack(padx=1, expand=True)
        self.entry13a.place(x=740, y=160) 
        
        lbl13b = Label(text="College",width=15)
        lbl13b.pack(padx=0, pady=2)   
        lbl13b.place(x=670, y=190)   

        self.entry13b = Entry(width=12)
        self.entry13b.pack(padx=1, expand=True)
        self.entry13b.place(x=740, y=190)
        
        ####################################################
        
        frame14 = Frame(self)
        frame14.pack()
        frame14.place(x=380, y=255)
        
        lbl14 = Label(frame14, text="Any Other Info:")
        lbl14.pack( padx=5, pady=5)        

        self.entry14 = Text(frame14,height=5, width=28)
        self.entry14.pack(padx=5, expand=True)
             
         
        
        frame15 = Frame(self)
        frame15.pack()
        frame15.place(x=650, y=290)
        
        openButton = Button(frame15, text="Attatch Resume",width=15,command=self.openResume)
        openButton.pack(padx=5, pady=5)
        self.entry15 = Entry(frame15)
        self.entry15.pack(fill=X, padx=4, expand=True)
        #############################################################
        frame16 = Frame(self)
        frame16.pack()
        frame16.place(x=450, y=500)
        
        closeButton = Button(frame16, text="SUBMIT",width=35,command=self.getDatax)
        closeButton.pack(padx=5, pady=5)
        
        #######################################
        framexxx = Frame(self)
        framexxx.pack()
        framexxx.place(x=700, y=600)
        self.xxx = Label(framexxx,text="Recent Changes Will Appear Here")
        self.xxx.config(font=labelfont8) 
        self.xxx.pack()
        
        #######################################
        
        frame000 = Frame(self)
        frame000.pack()
        frame000.place(x=50, y=600)
        
        self.lbl000= Label(frame000, text="Beta/Sample2.0 | (c) Nakul Rathore")
        self.lbl000.config(font=labelfont8)    
        self.lbl000.pack( padx=5, pady=5)
        
        
           

    def openResume(self):
        ftypes = [('All files', '*')]
        dlg = tkFileDialog.Open(self, filetypes = ftypes,initialdir='C:/Users/')
        global x15
        fl = dlg.show()
        #file name
        x15 = fl
        temp1 = os.path.basename(fl)
        global temp2
        temp2 = os.path.splitext(temp1)[0]
        
        self.entry15.delete(0, 'end')
        self.entry15.insert(0,temp2)
        
      
        
        
        
        #####################
        
        
        
        
        
    def getDatax(self):
        x1 = self.entry1.get()
        x2 = self.entry2.get()
        x3 = self.entry3.get()
        x4 = self.entry4.get()
        
        x5 = v.get()
        
        x6 = int(self.entry6.get())
        x7 = int(self.entry7.get())
        x8 = self.entry8.get()
        x9 = self.entry9.get()
        
        x10 = self.entry10.get('1.0', 'end')
        
        x11 = int(self.entry11.get())
        x11a = int(self.entry11a.get())
        x11b = self.entry11b.get()
        
        x12 = int(self.entry12.get())
        x12a = int(self.entry12a.get())
        x12b = self.entry12b.get()
        
        x13 = int(self.entry13.get())
        x13a = int(self.entry13a.get())
        x13b = self.entry13b.get()
        
        x14 = self.entry14.get('1.0', 'end')
        
        
        
        
        
        list1=[x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x11a,x11b,x12,x12a,x12b,x13,x13a,x13b,x14,"=HYPERLINK("+"\""+x15+"\""+","+"\""+temp2+"\""+")"]
        
        
        wb = openpyxl.load_workbook('..\database\database.xlsx')
        ws = wb.active
        print(wb.get_sheet_names())
        max_row = ws.get_highest_row()
        #max_col = ws.get_highest_column()
        max_col = 21
        print max_row
        
        for i in xrange(1,max_col+1):
            #print list1[i]
            ws.cell(row = max_row+1, column = i).value = list1[i-1]
        ws.cell(row = max_row+1, column = max_col).font = Font(color="0000FF", underline='single')
        ws.cell(row = max_row+1, column = max_col).alignment = Alignment(horizontal='center')
        wb.save('..\database\database.xlsx')
        
        
        self.entry1.delete(0, 'end')
        self.entry2.delete(0, 'end')
        self.entry3.delete(0, 'end')
        self.entry4.delete(0, 'end')
        
        self.entry6.delete(0, 'end')
        self.entry7.delete(0, 'end')
        self.entry8.delete(0, 'end')
        self.entry9.delete(0, 'end')
        self.entry10.delete('1.0', '2.0')
        self.entry11.delete(0, 'end')
        self.entry11a.delete(0, 'end')
        self.entry11b.delete(0, 'end')
        self.entry12.delete(0, 'end')
        self.entry12a.delete(0, 'end')
        self.entry12b.delete(0, 'end')
        self.entry13.delete(0, 'end')
        self.entry13a.delete(0, 'end')
        self.entry13b.delete(0, 'end')
        
        self.entry14.delete('1.0', '2.0')
        
        
        self.xxx.config(text="Recent Changes Made For : "+x1)
Exemplo n.º 23
0
class Example(Frame):
  
    def __init__(self, parent):
        Frame.__init__(self, parent)   
         
        self.parent = parent
        
        self.initUI()
        
        
    def initUI(self):
      
        self.parent.title("Review")
        self.pack(fill=BOTH, expand=True)
        labelfont20 = ('Roboto', 20, 'bold')
        labelfont12 = ('Roboto', 12, 'bold')
        
        frame0 = Frame(self)
        frame0.pack()
        
        lbl0 = Label(frame0, text="Hi USER")
        lbl0.config(font=labelfont20)    
        lbl0.pack( padx=5, pady=5)
        lbl00 = Label(frame0, text="Search here")
        lbl00.config(font=labelfont12)
        lbl00.pack( padx=5, pady=5)
        
        
        frame1 = Frame(self)
        frame1.pack()
        
        lbl1 = Label(frame1, text="min %", width=9)
        lbl1.pack(side=LEFT, padx=7, pady=5)           
       
        self.entry1 = Entry(frame1,width=20)
        self.entry1.pack(padx=5, expand=True)
        
        
        
        
        
        frame6 = Frame(self)
        frame6.pack()
        closeButton = Button(frame6, text="Get Names",width=12,command=self.getDate)
        closeButton.pack(padx=5, pady=5)
        
        frame7 = Frame(self)
        frame7.pack()
        closeButton1 = Button(frame7, text="Open in excel",width=15,command=self.openDate)
        closeButton1.pack(padx=5, pady=5)
        
        
        
        frame000 = Frame(self)
        frame000.pack()
        self.lbl000= Label(frame000, text=" ")
        self.lbl000.config(font=labelfont12)    
        self.lbl000.pack( padx=5, pady=5)
        
        frame00a = Frame(self)
        frame00a.pack()
        self.lbl00a= Label(frame000, text=" ")
        self.lbl00a.pack( padx=5, pady=5)
        
        
        
        
    def getDate(self):
        x1 = self.entry1.get()
        nx = ""
        
        
        self.entry1.delete(0, 'end')
        
        self.lbl000.config(text="Names Are:")
        

        
        
        #read csv, and split on "," the line
        csv_file = csv.reader(open('test.csv', "rb"), delimiter=",")
        #loop through csv list
        for row in csv_file:
            if row[2] >= x1:
                nx+=str(row[0]+", ")
                with open("output5.csv", "ab") as fp:
                    wr = csv.writer(fp, dialect='excel')
                    wr.writerow(row)
                fp.close()
        self.lbl00a.config(text=nx)
        
    def openDate(self):
        os.system("start "+'output5.csv')
Exemplo n.º 24
0
class AvionicsLogger(KRCCModule):
    def __init__(self, root):
        super().__init__()
        self.root = root
        self.exception = None

        self.list_string = StringVar()
        self.listbox = Listbox(root,
                               listvariable=self.list_string,
                               font='TkFixedFont',
                               width=30)

        self.write_cache = ''
        self.logfile = None
        self.enable_logging = BooleanVar()
        self.enable_logging_checkbox = Checkbutton(
            root,
            var=self.enable_logging,
            text='Enable logging',
            command=self.enable_logging_changed)

        self.logfile_label = Label(root, text='Logfile name:')
        self.logfile_name = StringVar()
        self.logfile_name_entry = Entry(root, textvar=self.logfile_name)

        self.load()

    def write(self, string):
        if self.enable_logging.get() and self.logfile is None:
            if self.logfile_name.get() == '':
                self.logfile_name.set('logs/{}.log'.format(time.time()))
            self.logfile = io.open(self.logfile_name.get(), 'a')
            self.logfile.write(self.write_cache)
            self.write_cache = ''
        self.logfile.write(string)

    def cache(self, string):
        self.write_cache += string

    def enable_logging_changed(self):
        if not self.enable_logging.get():
            self.logfile_name_entry.configure(state=NORMAL)
            if self.logfile is not None:
                self.logfile.close()
                self.logfile = None
                self.logfile_name.set('')
        else:
            self.logfile_name_entry.configure(state=DISABLED)

    def establish_connection_and_run(self):
        error = None
        dots = 0
        connection = None
        while not self.terminate:
            try:
                if connection is None:
                    connection = krpc.connect(name=self.name)
                self.run_with_connection(connection)
                error = None
                dots = 0
            except Exception as e:
                if error != e.args[0]:
                    error = e.args[0]
                    print('\n')
                    print(traceback.format_exc())
                    sys.stdout.write('Retrying')
                if dots > 80:
                    dots = 0
                    sys.stdout.write('\n')
                sys.stdout.write('.')
                dots += 1
                sys.stdout.flush()
                time.sleep(1)
        if connection is not None:
            connection.close()

    def run_with_connection(self, connection):
        logging.debug('KRPC connection established')
        vessel = connection.space_center.active_vessel
        ref = vessel.orbit.body.reference_frame
        flight = connection.add_stream(vessel.flight, ref)
        floats = [
            'mean_altitude',
            'atmosphere_density',
            'ballistic_coefficient',
            'drag_coefficient',
        ]
        vectors = [
            'velocity',
        ]
        colon_pos_float = max([len(v) for v in floats])
        colon_pos_vec = max([len(v) + 3 for v in vectors])
        self.listbox.configure(width=max(colon_pos_float, colon_pos_vec) + 11)

        # Write the log file header.
        self.cache('time\t' + '\t'.join(floats) + '\t')
        s = '{}\t' + '\t'.join('{{}}[{}]'.format(x) for x in [0, 1, 2])
        self.cache('\t'.join(
            s.format(*(v for _ in [0, 1, 2, 3])) for v in vectors))
        self.cache('\n')
        log_sample_interval = 0.01
        next_log_sample = time.time()
        while not self.terminate:
            values = [time.time()]
            strings = []
            for name in floats:
                value = flight().__getattribute__(name)
                values.append(value)
                padding = colon_pos_float - len(name) + 9
                format_string = '{{}}: {{:>{}.3f}}'.format(padding)
                strings.append(format_string.format(name, value))
            for name in vectors:
                value = flight().__getattribute__(name)
                magnitude = value[0]
                padding = colon_pos_float - len(name) + 9
                format_string = '{{}}: {{:>{}.3f}}'.format(padding)
                strings.append(format_string.format(name, magnitude))
                values.append(magnitude)
                padding = colon_pos_vec - len(name) + 2
                format_string = '{{}}[{{}}]: {{:>{}.3f}}'.format(padding)
                for i in [0, 1, 2]:
                    values.append(value[i])
                    strings.append(format_string.format(name, i, value[i]))
            if self.enable_logging.get() and time.time() > next_log_sample:
                self.write('\t'.join(['{}'.format(v) for v in values]) + '\n')
                next_log_sample = time.time() + log_sample_interval
            self.list_string.set(tuple(strings))

    def run(self):
        try:
            self.establish_connection_and_run()
            self.logfile_name_entry.destroy()
            self.logfile_label.destroy()
            self.enable_logging_checkbox.destroy()
            self.listbox.destroy()
        except RuntimeError:
            # Should only happen when KeyboardInterrupt is thrown in the MainThread.
            pass
        if self.logfile is not None:
            self.logfile.close()

    @property
    def name(self):
        return 'Avionics Logger'

    def load(self):
        self.listbox.pack(side=LEFT, fill=BOTH)
        self.logfile_label.pack(side=LEFT, anchor=NW)
        self.logfile_name_entry.pack(side=LEFT, anchor=NE, fill=X, expand=True)
        self.enable_logging_checkbox.pack(side=LEFT, anchor=NW)
Exemplo n.º 25
0
class Example(Frame):
  
    def __init__(self, parent):
        Frame.__init__(self, parent)   
         
        self.parent = parent
        
        self.initUI()
        
        
    def initUI(self):
        self.parent.title("Filter Data")
        self.pack(fill=BOTH, expand=True)
        labelfont20 = ('Roboto', 15, 'bold')
        labelfont10 = ('Roboto', 10, 'bold')
        labelfont8 = ('Roboto', 8, 'bold')
        
        frame0 = Frame(self)
        frame0.pack()
        
        lbl0 = Label(frame0, text="Hi Nakul")
        lbl0.config(font=labelfont20)    
        lbl0.pack( padx=5, pady=5)
        lbl00 = Label(frame0, text="Filter Data")
        lbl00.config(font=labelfont10)
        lbl00.pack( padx=5, pady=5)
        
        ####################################
        
        
        ##########################################
        
        
        ############################################
        #####printing line
        
        lbl5a = Label(text="__________________________________")
        lbl5a.pack()
        lbl5a.place(x=170, y=300)
        
        lbl5b = Label(text="__________________________________")
        lbl5b.pack()
        lbl5b.place(x=480, y=300)
        
        self.lbl5c = Label(text="Search Result Will Appear Here")
        self.lbl5c.pack()
        self.lbl5c.place(x=170, y=320)
        
        self.lbl5d = Label(text="File Name Will Appear Here")
        self.lbl5d.pack()
        self.lbl5d.place(x=480, y=320)
        
        ############################################
        
        
        #############################################
        
        ###############################################
        
        
        ##############################################
        
        #############################################
        
        frame11 = Frame(self)
        frame11.pack()
        frame11.place(x=200, y=100)
        
        lbl11x = Label(frame11,text="Class 10th %")
        lbl11x.pack(padx=0, pady=0)
        
               

        self.entry11 = Entry(width=12)
        self.entry11.pack(padx=1, expand=True)
        self.entry11.place(x=200, y=120) 
        
        
        
        
        ####################################################
        frame12 = Frame(self)
        frame12.pack()
        frame12.place(x=380, y=100)
        
        lbl12x = Label(frame12,text="Class 12th %")
        lbl12x.pack(padx=0, pady=0)
        
               

        self.entry12 = Entry(width=12)
        self.entry12.pack(padx=1, expand=True)
        self.entry12.place(x=380, y=120) 
        
        

        #####################################################
        frame13 = Frame(self)
        frame13.pack()
        frame13.place(x=550, y=100)
        
        lbl13x = Label(frame13,text="B.Tech %")
        lbl13x.pack(padx=0, pady=0)
        
               

        self.entry13 = Entry(width=12)
        self.entry13.pack(padx=1, expand=True)
        self.entry13.place(x=550, y=120) 
        
        
        
        ####################################################
        frame9 = Frame(self)
        frame9.pack()
        frame9.place(x=350, y=160)
        
        lbl9 = Label(frame9, text="HomeTown:")
        lbl9.pack()        

        self.entry9 = Entry(frame9)
        self.entry9.pack(fill=X, padx=5, expand=True)
        
        
             
         
        
        
        #############################################################
        frame16 = Frame(self)
        frame16.pack()
        frame16.place(x=190, y=250)
        closeButton = Button(frame16, text="Filter",width=20,command=self.getDatax2)
        closeButton.pack(padx=5, pady=5)
        
        #######################################
        frame17 = Frame(self)
        frame17.pack()
        frame17.place(x=500, y=250)
        closeButton = Button(frame17, text="Save & Open",width=20,command=self.getDatax3)
        closeButton.pack(padx=5, pady=5)
        
        #######################################
        
        frame000 = Frame(self)
        frame000.pack()
        frame000.place(x=50, y=600)
        
        self.lbl000= Label(frame000, text="Beta/Sample2.0 | (c) Nakul Rathore")
        self.lbl000.config(font=labelfont8)    
        self.lbl000.pack( padx=5, pady=5)
        
        
        
    def getDatax2(self):
        x1 = self.entry11.get()
        if x1 != "":
            x1 = int(x1)
        
        x2 = self.entry12.get()
        if x2 != "":
            x2 = int(x2)
        x3 = self.entry13.get()
        if x3 != "":
            x3 = int(x3)
        x4 = self.entry9.get()
        list1=[x1,x2,x3,x4]
        
        wb = openpyxl.load_workbook('..\database\database.xlsx')
        ws = wb.active
        print(wb.get_sheet_names())
        max_row = ws.get_highest_row()
        max_col = ws.get_highest_column()
        global temp
        global tempx
        temp = []
        tempx = []
        for i in xrange(2,max_row+1):
            temp.append(i)
        #print temp
        
        if isinstance(x1, int):
            for i in temp:
                if ws.cell(row = i, column = 11).value >= x1:
                    tempx.append(i)
            temp = tempx
            tempx = []
            print temp
            
        if isinstance(x2, int):
            for i in temp:
                if ws.cell(row = i, column = 14).value >= x2:
                    tempx.append(i)
            temp = tempx
            tempx = []
            print temp
        if isinstance(x3, int):
            for i in temp:
                if ws.cell(row = i, column = 17).value >= x3:
                    tempx.append(i)
            temp = tempx
            tempx = []
            print temp
            
        if isinstance(x3, str) and x3 != "":
            for i in temp:
                if ws.cell(row = i, column = 9).value == x4:
                    tempx.append(i)
            temp = tempx
            tempx = []
            print temp
        self.lbl5c.config(text=""+str(len(temp))+" result(s) found")
            
    def getDatax3(self):
        import datetime
        now = datetime.datetime.now()
        now = now.replace(microsecond=0,second = 0)
        now = now.strftime("%d_%B_%y,%I-%M_%p")
        now = now+".xlsx"
        
       
        
        
        if len(temp) != 0:
            wb1 = openpyxl.load_workbook('..\database\database.xlsx')
            ws1 = wb1.active
            wb2 = openpyxl.load_workbook('..\_frame\_frame.xlsx')
            ws2 = wb2.active
        
            for i in xrange(2,len(temp)+2):
                for j in xrange(1,22):
                    ws2.cell(row = i, column = j).value = ws1.cell(row = temp[i-2], column = j).value
        
        wb2.save('..\Result\\'+now)
        tempstart = '..\Result\\'+now
        self.lbl5d.config(text="File is :: "+"\""+now+"\"")
        os.system("start "+tempstart)
        
        self.entry11.delete(0, 'end')
        self.entry12.delete(0, 'end')
        self.entry13.delete(0, 'end')
        self.entry9.delete(0, 'end')
Exemplo n.º 26
0
def show_report(master, data):
    """Выводит панель генерации отчетов."""


    def choose_assortiment(event):
        """Функция, срабатывающая при выборе товара из списка товаров."""

        select = listbox_goods.curselection()
        if select:
            index = int(select[0])
            if assortiment[index]:
                show_report.goods = assortiment[index]
                title.configure(text=assortiment[index].name)
            else:
                show_report.goods = None
                title.configure(text=u'Товары:')
        checks_fill()

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

    def assortiment_fill():
        """Функция заполнения списков товаров/ингредиентов"""

        for q in range(len(assortiment)):       # Очищаем список товаров
            del(assortiment[0])
        listbox_goods.delete(0, END)

        for cath in queries.cathegories():
            assortiment.append(None)
            listbox_goods.insert(END, '')
            assortiment.append(None)
            head = '-' * (REPORT_WIDTH - len(cath.name) -1) + cath.name + u'-'
            listbox_goods.insert(END, head)

            for item in queries.items_in_cathegory(cath):
                assortiment.append(item)
                listbox_goods.insert(END, ' ' + item.name)
                if not item.show:
                    listbox_goods.itemconfig(END, {'fg':'grey'})

        assortiment.append(None)
        listbox_goods.insert(END, '')
        assortiment.append(None)
        head = '-' * (REPORT_WIDTH - len(u'Ингредиенты') -1) + u'Ингредиенты-'
        listbox_goods.insert(END, head)

        for item in queries.items_in_cathegory(None):
            assortiment.append(item)
            listbox_goods.insert(END, ' ' + item.name)
            if not item.show:
                listbox_goods.itemconfig(END, {'fg':'grey'})

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

    def checks_fill(event=None):
        """Функция заполнения списка параметров для отчета"""

        listbox_checks.delete(0, END)
        reporing = radioVar.get()
        listbox_checks.insert(END, reporing + ':')

        if varGoods.get():
            listbox_checks.insert(END, u'- товар' )
            if reporing == u'Расходы':
                listbox_checks.itemconfig(END, {'fg':'grey'})
            elif not show_report.goods:
                listbox_checks.itemconfig(END, {'fg':'red'})

        if varDate.get():
            listbox_checks.insert(END, u'- дата' )
            if reporing == u'Остатки':
                listbox_checks.itemconfig(END, {'fg':'grey'})
            elif not (cal_from.selection or cal_to.selection):
                listbox_checks.itemconfig(END, {'fg':'red'})

            elif (cal_from.selection and cal_to.selection) and (
                  cal_from.selection > cal_to.selection):
                listbox_checks.itemconfig(END, {'fg':'red'})

        if varCath.get():
            listbox_checks.insert(END, u'- категория' )
            if reporing == u'Расходы':
                listbox_checks.itemconfig(END, {'fg':'grey'})

        if varCheck.get():
            listbox_checks.insert(END, u'- чек' )
            if reporing <> u'Продажи':
                listbox_checks.itemconfig(END, {'fg':'grey'})
            else:
                try:
                    check1 = int(chekVar1.get())
                    check2 = int(chekVar2.get())
                except:
                    listbox_checks.itemconfig(END, {'fg':'red'})
                else:
                    if check1 > check2:
                        listbox_checks.itemconfig(END, {'fg':'red'})

        if varLost.get():
            listbox_checks.insert(END, u'- причина' )
            if reporing <> u'Списания':
                listbox_checks.itemconfig(END, {'fg':'grey'})

        if radioVar2.get() <> u'Не учитывать':
            listbox_checks.insert(END, u'- скидка' )
            if reporing <> u'Продажи':
                listbox_checks.itemconfig(END, {'fg':'grey'})


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

    class Calendar2(Calendar):
        """Класс с переопределенным (дополненным) методом клика по календарю."""

        def _pressed(self, evt):
            """Clicked somewhere in the calendar."""

            Calendar._pressed(self, evt)
            checks_fill()

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

    def apply():
        """Открывает окно с выбранным отчетом на основании выбранных фильтров"""

        args = {}

        if varGoods.get() and radioVar.get() <> u'Расходы':
            if show_report.goods:
                args['item'] = show_report.goods
            else:
                tkMessageBox.showinfo(u'Внимание!',
                          u'Товар не был выбран, так что учитываться не будет!')

        if varDate.get() and radioVar.get() <> u'Остатки':
            if cal_from.selection or cal_to.selection:
                if (cal_from.selection > cal_to.selection):
                    tkMessageBox.showinfo(u'Ошибка!',
              u'Начальный день акции больше конечного!\nФильтр не учитывается.')
                else:
                    if cal_from.selection:
                        args['from_date'] = cal_from.selection
                    if cal_to.selection:
                        args['to_date'] = cal_to.selection
            else:
                tkMessageBox.showinfo(u'Внимание!',
                         u'Даты не были выбраны, так что учитываться не будут!')

        if varCath.get():
            if radioVar.get() <> u'Расходы':
                args['cathegory'] = show_report.cathegory

        if varCheck.get():
            if radioVar.get() == u'Продажи':
                try:
                    check1 = int(chekVar1.get())
                    check2 = int(chekVar2.get())
                except:
                    tkMessageBox.showinfo(u'Ошибка!',
            u'Проверьте содержимое числовых полей чека!\nФильтр не учитвается.')
                else:
                    if check1 > check2:
                        tkMessageBox.showinfo(u'Ошибка!',
              u'Начальный номер чека больше конечного!\nФильтр не учитывается.')
                    else:
                        args['from_check'] = check1
                        args['to_check'] = check2

        if varLost.get():
            if radioVar.get() == u'Списания':
                args['reason'] = show_report.lost


        if radioVar2.get() <> u'Не учитывать':
            if radioVar.get() == u'Продажи':
                if radioVar2.get() == u'Со скидкой':
                    args['discount'] = True
                else:
                    args['discount'] = False


        if radioVar.get() == u'Продажи':
            report_sell(master, **args)
        elif radioVar.get() == u'Списания':
            report_lost(master, **args)
        elif radioVar.get() == u'Остатки':
            report_storage(master, **args)
        elif radioVar.get() == u'Приход':
            report_incoming(master, **args)
        elif radioVar.get() == u'Расходы':
            report_cash(master, **args)

    #=========================== СОЗДАНИЕ ИНТЕРФЕЙСА ===========================

    frame = Canvas(master, relief=GROOVE, highlightthickness=0)
    frame.pack(side=TOP, fill=BOTH, expand=YES)
    if USE_BACKGROUND:
        frame.create_image(0,0, anchor='nw', image=data.photo)

    #------------------------------ ЛЕВЫЙ ФРЕЙМ --------------------------------

    leftFrame = Frame(frame, relief=GROOVE)
    leftFrame.pack(side=LEFT, fill=Y, pady=CONTROL_PAD, padx=CONTROL_PAD/2)

    title = Label(leftFrame, text=u'Товары:',
                                        font=('Lucida Console', FONT_SIZE_BIG))
    title.pack(pady=5)

    varGoods = IntVar(leftFrame)
    chb_goods = Checkbutton(leftFrame, text=u'Фильтр по товару',
                                         variable=varGoods, command=checks_fill)
    chb_goods.pack(side=BOTTOM)

    assortiment = []
    show_report.goods = None

    scrollbar_goods = Scrollbar(leftFrame)
    listbox_goods = Listbox(leftFrame,
                       yscrollcommand=scrollbar_goods.set,
                       width = REPORT_WIDTH,
                       activestyle='dotbox',
                       font=('Lucida Console', BILL_FONT_SIZE))
    listbox_goods.pack(side=LEFT, fill=BOTH)
    scrollbar_goods.config(command=listbox_goods.yview)
    scrollbar_goods.pack(side=LEFT, fill=Y)

    listbox_goods.bind('<<ListboxSelect>>', choose_assortiment)

    #------------------------------ СРЕДНИЙ ФРЕЙМ ------------------------------

    middleFrame = Frame(frame, relief=GROOVE)
    middleFrame.pack(side=TOP, pady=CONTROL_PAD, padx=CONTROL_PAD, anchor='w',
                                       ipadx=CONTROL_PAD/3, ipady=CONTROL_PAD/3)

    radioVar = StringVar(middleFrame)
    radioVar.set("Продажи")

    variants = ("Продажи", "Остатки", "Приход", "Списания", "Расходы")

    listbox_checks = Listbox(middleFrame, width = 12, height=6,
                  activestyle='dotbox', font=('Lucida Console', BILL_FONT_SIZE))
    listbox_checks.pack(side=RIGHT, fill=Y, padx=CONTROL_PAD/2,
                                                             pady=CONTROL_PAD/2)

    Button(middleFrame, text='СФОРМИРОВАТЬ\nОТЧЕТ', style='Chosen.TButton',
                             command=apply).pack(side=RIGHT, padx = CONTROL_PAD,
                                         pady = CONTROL_PAD, ipadx=10, ipady=10)

    for txt in variants:
        Radiobutton(middleFrame, text=txt,indicatoron = 0, width = 10,
                         variable=radioVar, command=checks_fill, value=txt,
                         font=('Verdana', FONT_SIZE)).pack(padx = CONTROL_PAD,
                                                   pady=CONTROL_PAD/3, anchor=W)

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

    middleFrame2 = Frame(frame, relief=GROOVE)
    middleFrame2.pack(padx=CONTROL_PAD, pady=CONTROL_PAD, anchor='w')


    date_from = Label(middleFrame2, text=u'Начальная дата:',
                                                  font = ('Verdana', FONT_SIZE))
    date_from.grid(column=0, row=0)
    cal_from = Calendar2(middleFrame2, firstweekday=0)
    cal_from.grid(column=0, row=1, pady=CONTROL_PAD, padx=CONTROL_PAD)

    date_to = Label(middleFrame2, text=u'Конечная дата\n(включительно):',
                                                  font = ('Verdana', FONT_SIZE))
    date_to.grid(column=1, row=0)
    cal_to = Calendar2(middleFrame2, firstweekday=0)
    cal_to.grid(column=1, row=1, pady=CONTROL_PAD, padx=CONTROL_PAD)

    varDate = IntVar(leftFrame)
    chb_date = Checkbutton(middleFrame2, text=u'Фильтр по датам',
                                          variable=varDate, command=checks_fill)
    chb_date.grid(column=0, row=2, columnspan=2, pady=CONTROL_PAD/3)


    #---------------------- Меню выбора категории --------------

    middleFrame3 = Frame(frame, relief=GROOVE)
    middleFrame3.pack(padx=CONTROL_PAD, pady=CONTROL_PAD, anchor='w')


    def menu_change(key):
        """Меняет текущую категорию."""
        if key:
            cathMenu.configure(text=key.name)
        else:
            cathMenu.configure(text=u'-Отсутствует-')
        show_report.cathegory = key


    def menu_update():
        """Обновляет меню выбора категорий."""

        menu  =  Menu(cathMenu, tearoff=0)
        cathMenu['menu'] = menu

        for cath in queries.cathegories():
            menu.add_command(label=cath.name, font=('Verdana', FONT_SIZE_BIG),
                                      command=lambda key=cath: menu_change(key))
        menu.add_command(label=u'-Отсутствует-', font=('Verdana',FONT_SIZE_BIG),
                                    command=lambda: menu_change(None))


    Style().configure('TMenubutton', font=('lucida console', FONT_SIZE_BIG),
                                                                justify='left')
    show_report.cathegory = None

    varCath = IntVar(middleFrame3)
    chb_cath = Checkbutton(middleFrame3, text=u'Фильтр по категории',
                                          variable=varCath, command=checks_fill)
    chb_cath.grid(column=0, row=1, columnspan=2,
                                              pady=(0, CONTROL_PAD))

    Label(middleFrame3, text='Категория:', font=('Verdana', FONT_SIZE_BIG)
                       ).grid(column=0, row=0, pady=CONTROL_PAD/3)

    smallFrame = Frame(middleFrame3, relief=GROOVE)
    smallFrame.grid(column=1, row=0, pady=CONTROL_PAD/3)


    cathMenu = Menubutton(smallFrame, text=u'-Отсутствует-', width=15,
                                                            style='TMenubutton')
    cathMenu.pack(fill=BOTH, pady=5, padx=5)
    menu_update()

    #----------------------------- ЧЕКИ ----------------------------

    check_frame = TkFrame(middleFrame3, relief=GROOVE, bg='#' + REPORT_COLOR)
    check_frame.grid(column=0, row=2, columnspan=2, pady=(CONTROL_PAD/3, 0),
                                                                  sticky='nwes')
    varCheck = IntVar(middleFrame3)
    chb_check = Checkbutton(middleFrame3, text=u'Фильтр по номеру чека',
                variable=varCheck, command=checks_fill, activebackground='#' +
                                     REPORT_COLOR, bg='#' + REPORT_COLOR)
    chb_check.grid(column=0, row=3, columnspan=2, pady=(0, CONTROL_PAD),
                                                                  sticky='nwes')

    chekVar1 = StringVar(check_frame, value=u'')
    ent1 = Entry(check_frame, textvariable=chekVar1, width=7,font=('Verdana',
       FONT_SIZE_BIG))
    ent1.pack(side=LEFT, pady=CONTROL_PAD/3, padx=CONTROL_PAD)
    ent1.bind("<KeyRelease>", checks_fill)

    Label(check_frame, text=u'<= номера чеков <=', bg='#' + REPORT_COLOR,
                                font = ('Verdana', FONT_SIZE)).pack(side=LEFT,
                                           pady=CONTROL_PAD/3, padx=CONTROL_PAD)
    chekVar2 = StringVar(check_frame, value=u'')
    ent2 = Entry(check_frame, textvariable=chekVar2, width=7,font=('Verdana',
       FONT_SIZE_BIG))
    ent2.pack(side=LEFT, pady=CONTROL_PAD/3, padx=CONTROL_PAD)
    ent2.bind("<KeyRelease>", checks_fill)

    #---------------------- Меню выбора причины списания --------------

    def menu_change_lost(key):
        """Меняет текущую причину списания."""
        if key:
            lostMenu.configure(text=key.reason)
        show_report.lost = key


    def menu_update_lost():
        """Обновляет меню выбора причин списания."""

        menu  =  Menu(cathMenu, tearoff=0)
        lostMenu['menu'] = menu

        for lost in queries.full_lost_reasons_list():
            menu.add_command(label=lost.reason, font=('Verdana', FONT_SIZE_BIG),
                                 command=lambda key=lost: menu_change_lost(key))


    Style().configure('TMenubutton', font=('lucida console', FONT_SIZE_BIG),
                                                                justify='left')
    lost_reasons_list = queries.lost_reasons_list()
    show_report.lost = lost_reasons_list[0] if lost_reasons_list else None

    varLost = IntVar(middleFrame)
    chb_lost = Checkbutton(middleFrame3, text=u'Фильтр по причине списания',
                                          variable=varLost, command=checks_fill)
    chb_lost.grid(column=0, row=5, columnspan=2, pady=(0, CONTROL_PAD))

    Label(middleFrame3, text='Причина списания:', font=('Verdana', FONT_SIZE_BIG)
                 ).grid(column=0, row=4, pady=CONTROL_PAD/3, padx=CONTROL_PAD/3)

    smallFrame2 = Frame(middleFrame3, relief=GROOVE)
    smallFrame2.grid(column=1, row=4, pady=CONTROL_PAD/3)

    lostMenu = Menubutton(smallFrame2, text=u'брак', width=19,
                                                            style='TMenubutton')
    lostMenu.pack(fill=BOTH, pady=5, padx=5)
    menu_update_lost()

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

    Label(middleFrame3, text='Фильтр по скидке.', font=('Verdana', FONT_SIZE),
            bg='#' + REPORT_COLOR).grid(column=0, row=7, sticky='nwes',
                                                                   columnspan=2)

    discFrame = TkFrame(middleFrame3, relief=GROOVE, bg='#' + REPORT_COLOR)
    discFrame.grid(column=0, row=6, columnspan=2, ipady=(CONTROL_PAD),
                                                                  sticky='nwes')
    radioVar2 = StringVar(middleFrame)
    radioVar2.set(u'Не учитывать')

    variants = (u'Не учитывать', u'Со скидкой', u'Без скидки')

    for txt in variants:
        Radiobutton(discFrame, text=txt,indicatoron = 0, width = 13,
            variable=radioVar2, command=checks_fill, value=txt,
            font=('Verdana', FONT_SIZE)).pack(side=LEFT, padx = CONTROL_PAD/2,
                                                  pady=CONTROL_PAD/3, anchor=W)

    #--------------------------------первый запуск-----------------------------

    assortiment_fill()
    checks_fill()
Exemplo n.º 27
0
class Example(Frame):
#Initialise values
    ctrlpt1=[55,55]
    ctrlpt2=[150,120]
    ctrlpt3=[55,215]
    pt1=[50,50]
    pt2=[100,100]
    clickno=2
    toggle = 1
    div_num = 10

#initilise Frame then initialise this Example class using initUI() 
    def __init__(self, parent):
        Frame.__init__(self, parent)   
        
        self.parent = parent
        self.initUI()
        

        
    def initUI(self):
      
        self.parent.title("Grass")
#Configure parent for column layout       
        Style().configure("TButton", padding=(0, 5, 0, 5), 
            font='serif 10')
        
        self.columnconfigure(0, pad=3)
        self.columnconfigure(1, pad=3)
        self.columnconfigure(2, pad=3)
        self.columnconfigure(3, pad=3)
        
        self.rowconfigure(0, pad=3)
        self.rowconfigure(1, pad=3)
        self.rowconfigure(2, pad=3)
        self.rowconfigure(3, pad=3)
        self.rowconfigure(4, pad=3)
        self.rowconfigure(5, pad=3)
        self.rowconfigure(6, pad=3)
        self.rowconfigure(7, pad=3)
        self.rowconfigure(8, pad=3)


        frame1 = Frame(self)
        frame1.grid(row=0,columnspan=4)
        self.lbl1 = Label(frame1, text="")
        self.lbl1.pack(side=LEFT, padx=5, pady=5)

        frame2 = Frame(self)
        frame2.grid(row=1,columnspan=4)
        lbl2 = Label(frame2, text="Divisions", width=6)
        lbl2.pack(side=LEFT, padx=5, pady=5)
        self.entry1=Entry(frame2) 
        self.entry1.pack(fill=X, padx=5, expand=True)        
        
        frame3 = Frame(self)
        frame3.grid(row=2,columnspan=4)
        self.lbl3 = Label(frame3, text="Divisions =%r"%self.div_num)
        self.lbl3.pack(side=LEFT, expand=True)
    

        set_point = Button(self, text="Set divisions", command=self.get_div)
        set_point.grid(row=3, columnspan=2)
     
        self.stop_place = Button(self, text="Toggle delete",\
        command=self.change_toggle)
        self.stop_place.grid(row = 3, column = 2,columnspan=2) 
    
        clr_btn = Button(self, text="Clear Canvas", command=self.clear_canvas)
        clr_btn.grid(row = 4, column = 0,columnspan=2)

        drw_btn = Button(self, text="Draw lines", command=self.draw_ctrllines)
        drw_btn.grid(row = 4, column = 2,columnspan=2)

        div = Button(self, text="Divide", command=self.draw_divide)
        div.grid(row = 5, column = 0,columnspan=2)

        strart = Button(self, text="Strings", command=self.string_art)
        strart.grid(row = 5, column = 2,columnspan=2)

        plotpar = Button(self, text="Parabola", command=self.plot_para)
        plotpar.grid(row = 6, column = 0,columnspan=2)

        self.w = Canvas(self, width=200, height=900)
        self.w.grid(row=7, columnspan=4)


#Draw initial control points for user

        self.id1=self.w.create_oval(self.ctrlpt1[0] - 2, self.ctrlpt1[1] - 2,\
        self.ctrlpt1[0] + 2,self.ctrlpt1[1] + 2,fill="black",tags='maybe')
        self.w.tag_bind(self.id1,'<Button-1>',self.del_elem)


        id2=self.w.create_oval(
                            self.ctrlpt2[0] - 2, self.ctrlpt2[1] - 2,
                            self.ctrlpt2[0] + 2,self.ctrlpt2[1] + 2,fill="black"
                              )
        self.w.tag_bind(id2,'<Button-1>',self.del_elem)

        self.id3=self.w.create_oval(self.ctrlpt3[0] - 2, self.ctrlpt3[1] - 2,\
        self.ctrlpt3[0] + 2,self.ctrlpt3[1] + 2,fill="black")
        self.w.tag_bind(self.id3,'<Button-1>',self.del_elem)
        self.w.bind('<Motion>',self.motion)  
        print self.id1

        movebut = Button(self, text="Grass", command=self.grass_polygon)
        movebut.grid(row = 6, column = 2,columnspan=2)
        
        #self.w.bind('<Button-1>',self.clicky) 
 
        self.pack()    

    def get_div(self):
        try:
            self.div_num=int(self.entry1.get())
            self.lbl1.config(text="Division number set")
            self.lbl3.config(text="Divisions =%r"%self.div_num)
        except ValueError:
            self.lbl1.config(text="Incorrect entry type")

    def draw_divide(self):
        self.w.delete("all")
        list1=self.divide_line(self.ctrlpt1,self.ctrlpt2)
        for n in range(len(list1)):  
            id=self.w.create_oval(
                                list1[n][0] - 2, list1[n][1] - 2, 
                                list1[n][0] + 2,list1[n][1] + 2,fill="black"
                                  )
            self.w.tag_bind(id,'<Button-1>',self.del_elem)
        list2=self.divide_line(self.ctrlpt2,self.ctrlpt3)  
        for n in range(len(list2)):  
            id=self.w.create_oval(
                                list2[n][0] - 2, list2[n][1] - 2, 
                                list2[n][0] + 2,list2[n][1] + 2,fill="black"
                                  )
            self.w.tag_bind(id,'<Button-1>',self.del_elem)
    
    def grass_polygon(self):
        lst=self.intersect_list()
        for n in range(len(lst)-1):
            width=5+10*(1-abs(1-2*(n+1)/float(len(lst))))
            m1 = self.slope(lst[n],lst[n+1])
            m = -1/self.slope(lst[n],lst[n+1])
            print lst[n],m1,m
            dx = math.sqrt(width**2/(1+m**2))
            dy = math.sqrt(width**2/(1+1/m**2))
            x1=math.ceil(lst[n][0]-dx)
            y1=math.ceil(lst[n][1]-dy)
            x2=math.ceil(lst[n][0]+dx)
            y2=math.ceil(lst[n][1]+dy)
            x3=lst[n+1][0]+dx
            y3=lst[n+1][1]+dy
            x4=lst[n+1][0]-dx
            y4=lst[n+1][1]-dy
            if n==0:
                x2=x1=lst[n][0]
                y2=y1=lst[n][1]
                
            self.w.create_polygon(x1,y1,x2,y2,x3,y3,x4,y4,fill='green')
    

    def dist(self,point1,point2):
        x1,y1 = point1
        x2,y2 = point2
        distance = math.sqrt(float((x2-x1))**2+(y2-y1)**2)
        return distance
    
    def slope(self,point1,point2):
        x1,y1 = point1
        x2,y2 = point2
        if abs(x2-x1) > 0.00001:
            m1=(y2+y1)/float(x2-x1)
            return m1
        else:
            return none

    def intersect_list(self):
        list1 = self.divide_line(self.ctrlpt1,self.ctrlpt2)
        list2 = self.divide_line(self.ctrlpt2,self.ctrlpt3)
        zplst = zip(list1[0:len(list1)-1],list2[1:len(list1)])
        para_list=[0]*(len(zplst)+1)
        para_list[0]=self.ctrlpt1
        para_list[len(zplst)]=self.ctrlpt3
        for n in range(len(zplst)-1):
            para_list[n+1]=self.intersection(
                                        zplst[n][0],zplst[n][1],
                                        zplst[n+1][0],zplst[n+1][1]
                                        )
        return para_list
            
    def plot_para(self):
        plotlist=self.intersect_list()
        for n in range(len(plotlist)):  
            id=self.w.create_oval(
                                plotlist[n][0]-2, plotlist[n][1]-2, 
                                plotlist[n][0]+2, plotlist[n][1]+2,fill="black"
                                  )
            self.w.tag_bind(id,'<Button-1>',self.del_elem)
                    
    def string_art(self):
        list1 = self.divide_line(self.ctrlpt1,self.ctrlpt2)
        list2 = self.divide_line(self.ctrlpt2,self.ctrlpt3)
        zplst = zip(list1[0:len(list1)-1],list2[1:len(list1)])
        for n in range(len(zplst)):  
            id=self.w.create_line(
                                zplst[n][0][0], zplst[n][0][1], 
                                zplst[n][1][0], zplst[n][1][1],fill="black"
                                  )
            self.w.tag_bind(id,'<Button-1>',self.del_elem)

    def intersection(self,point1,point2,point3,point4):
        x1,y1 = point1
        x2,y2 = point2
        x3,y3 = point3
        x4,y4 = point4
        if abs(x2-x1) > 0.00001 and abs(x4-x3) > 0.00001:
            m1=(y2-y1)/float(x2-x1)
            c1=y1-float(m1)*x1
            m2=(y4-y3)/float(x4-x3)
            c2=y3-float(m2)*x3
            xint = (c2-c1)/float((m1-m2))
            yint = m1*((c2-c1)/float((m1-m2)))+c1
        else:
            if abs(x2-x1) < 0.00001:
                xint=x2
                yint=(y4-y3)*x2/float(x4-x3)+y3-float((y4-y3)/float(x4-x3))*x3
            else:
                xint=x3
                yint=(y2-y1)*x3/float(x2-x1)+y1-float((y2-y1)/float(x2-x1))*x1
            
        return [xint,yint]

    def draw_ctrllines(self):
        x1,y1=self.ctrlpt1
        x2,y2=self.ctrlpt2
        x3,y3=self.ctrlpt3
        line1 = self.w.create_line(x1, y1, x2, y2)
        self.w.tag_bind(line1,'<Button-1>',self.del_elem)
        line2 = self.w.create_line(x2, y2, x3, y3)
        self.w.tag_bind(line2,'<Button-1>',self.del_elem)

    def divide_line(self,point1,point2):
        x1,y1 = point1
        x2,y2 = point2
        list = [0]*(self.div_num+1)
        for n in range(self.div_num+1):
            list[n]=[x1+(n)*(x2-x1)/float(self.div_num),y1+(n)*(y2-y1)/float(self.div_num)]
        return list            

    def change_toggle(self):
        self.toggle=(self.toggle+1)%2
        if self.toggle == 1:
            self.stop_place.config(text="Delete mode off")
        else:
            self.stop_place.config(text="Delete mode on")
    
       
    def del_elem(self,event):
        if self.toggle==1:
            pass
        else:
            print "Hello"
            event.widget.delete("current")
            
    def midpoint(self,x1,x2,y1,y2):
        xmid=(x1+x2)/2
        ymid=(y1+y2)/2
        return xmid,ymid

    def motion(self,event):
        w=self.parent.winfo_screenwidth()
        h=self.parent.winfo_screenheight()
        x,y = self.w.winfo_pointerxy()
        print x-536,y-353
    
    def clear_canvas(self):
        self.w.delete("all") 
Exemplo n.º 28
0
class CreateServer(Frame):

    def __init__(self, parent, controller):
        Frame.__init__(self, parent)
        self.controller = controller
        CreateServer.local_world = None
        label_1 = Label(self, text="Create server\n\n\n\n", font=TITLE_FONT, justify=CENTER, anchor=CENTER)
        label_2 = Label(self, text="Server name:")
        label_3 = Label(self, text="Gamefield (MxN):")
        CreateServer.plx_name = 'none'
        CreateServer.game_dim = '10X10'
        self.entry_1 = Entry(self)
        self.entry_2 = Entry(self)
        self.entry_2.insert(0, '10x10')
        self.entry_1.bind("<Key>", self.checkString)

        self.button1 = Button(self, text="Create",state="disabled", command= self.callback_set)
        self.button2 = Button(self, text="Back", command=lambda: controller.show_frame("StartPage"))

        label_1.pack(side="top", fill="x", pady=10)
        label_2.pack()
        self.entry_1.pack()
        label_3.pack()
        self.entry_2.pack()
        self.button1.pack(pady=10)
        self.button2.pack(pady=20)
    
    
    def com(self, controller, next_frame):
        controller.show_frame(next_frame)
        
    def checkString(self, event):
        if self.entry_1:
            self.button1.config(state="normal")
    
    def callback_set(self):
        set_global_state(1)
        if self.get_name_field():
            self.controller.show_frame("ChooseType")
    
    # process user inputs
    def get_name_field(self):
        CreateServer.plx_name = self.entry_1.get()
        CreateServer.game_dim = self.entry_2.get().upper()
        
        flag2 = False
        
        flag1 = self.string_check(CreateServer.plx_name,"Invalid server name")
        if flag1:
            flag2 = self.string_check(CreateServer.game_dim,"Invalid game field parameters")
        
        if flag2:
            m_split=CreateServer.game_dim.split('X')
            if len(m_split)==2:
                try:
                    _ = int(m_split[0])
                except:
                    flag2 = False  
                try:
                    _ = int(m_split[1])
                except:
                    flag2 = False
            else:
                flag2 = False
                
            if flag2 == False:
                tkMessageBox.showwarning("Error message", "Invalid game field parameters!")
        return flag1 & flag2
    
    # check if the string is usable
    def string_check(self,s,msg):
        temp = False
        try:
            s.decode('ascii')
        except UnicodeEncodeError:
            print "it was not an ascii-encoded unicode string"
            tkMessageBox.showwarning("Error message", msg)
        except UnicodeDecodeError:
            print "it was not an ascii-encoded unicode string"
            tkMessageBox.showwarning("Error message", msg)
        else:
            if len(CreateServer.plx_name) < 11 and len(CreateServer.plx_name) >= 1:
                temp = True
            else:
                tkMessageBox.showwarning("Error message", "Please input 1-10 characters!")
        return temp
Exemplo n.º 29
0
        item = sortable_list.create_item(value=i)
        label = Label(item, text="this is a label %s"%i)
        label.pack(anchor=W, padx= (4,0), pady= (4,0))

        sortable_list.add_item(item)

    frame = Frame(root)
    frame.pack(fill=X, pady=(0, 10))
    
    indexVar = IntVar()
    label = Label(frame, text="Entry index of item to delete:")
    label.pack(side=LEFT, padx=(10,6))
    entry_of_index = Entry(frame,textvariable= indexVar, width=3)
    
    def delete_item():
        try:
            index = indexVar.get()
        except ValueError:
            messagebox.showerror("Error", "Not a valid integer")
            return

        entry_of_index.delete(0, END)
        sortable_list.delete_item(index)
    entry_of_index.bind('<Return>', delete_item)

    entry_of_index.pack(side=LEFT)
    
    Button(frame, text="Delete", command=delete_item).pack(side=LEFT, padx=(3,0))

    root.mainloop()
class mSim(Frame):
  
    def __init__(self, parent):
        
        self.serialStatus = False

        #create variables
        self.startmotor = BooleanVar()
        self.logstate = BooleanVar()
        self.loggedData = []
        self.throttlevar = StringVar()
        self.throttleval = IntVar()

        #default values
        self.throttlevar.set("0%")
        self.throttleval.set(0)

        #base frame init
        Frame.__init__(self, parent)   
        self.parent = parent
        self.initUI()
        self.centerWindow()

        self.PERIOD_LENGTH_Log = 100 #milliseconds
        self.PERIOD_LENGTH_Scan = 1000 #milliseconds
        self.PERIOD_LENGTH_Refresh = 300 #milliseconds

        self.parent.after(0, self.runScan)
        self.parent.after(0, self.runLog)
        self.parent.after(0, self.runRefresh)

    def runScan(self):
        #serial port scanning function
        """ Lists serial port names

            :raises EnvironmentError:
                On unsupported or unknown platforms
            :returns:
                A list of the serial ports available on the system
        """
        if sys.platform.startswith('win'):
            ports = ['COM%s' % (i + 1) for i in range(256)]
        elif sys.platform.startswith('linux') or sys.platform.startswith('cygwin'):
            # this excludes your current terminal "/dev/tty"
            ports = glob.glob('/dev/tty[A-Za-z]*')
        elif sys.platform.startswith('darwin'):
            ports = glob.glob('/dev/tty.*')
        else:
            raise EnvironmentError('Unsupported platform')

        result = []
        for port in ports:
            try:
                s = serial.Serial(port)
                s.close()
                result.append(port)
            except (OSError, serial.SerialException):
                pass
        menu = self.drop["menu"]
        menu.delete(0, "end")
        menu.add_command(label="None", command=lambda value="None": self.selected_s_Port.set(value))
        for string in result:
            menu.add_command(label=string, command=lambda value=string: self.selected_s_Port.set(value))
                
        self.parent.after(self.PERIOD_LENGTH_Scan, self.runScan)

    def runLog(self):
        #this will probably not work since you're not appending to 
        if (self.logstate.get() == True) and (self.serialStatus == True): #logging data                                        
                    data = dict(zip(*[self.SC.dict.keys(), zip(*self.SC.dict.values())[-1]])) 
                    if 'l' not in locals():         # a dictionary with a deque of the recent data for each message type -Austin
                        l = []
                    if self.loggedData == []: #if empty add titles
                        l=[data.keys()]
                    data = data.values()
                    
                    self.loggedData.append(data)
                    
        self.parent.after(self.PERIOD_LENGTH_Log, self.runLog)

    def runRefresh(self):
        
        #Refresh figures function
        self.a.clear()
        self.b.clear()
        self.c.clear()
        self.d.clear()
        
        if not self.serialStatus:
            #TODO: Put SerialComm data buffer here v . Timestamps (from python?) on x axis, values on y-axis
            #Helpful Info: plot([xvals],[yvals])
            self.a.plot([0],[0])
            self.b.plot([0],[0])
            self.c.plot([0],[0])
            self.d.plot([0],[0])
        else:
            self.SC.processData(5) # This param is the number of bytes to try for a message -Austin
            timestamps = [val / 1000.0  if val != None else val for val in self.SC.dict['Timestamp']]
            self.a.plot(timestamps, self.SC.dict['Thrust'])
            self.b.plot(timestamps, self.SC.dict['Rot Speed'])
            self.c.plot(timestamps, self.SC.dict['Current'])
            self.d.plot(timestamps, self.SC.dict['Voltage'])

        #set labels for graphs (could make automatic later)
        self.a.set_xlabel('time (s)')
        self.a.set_ylabel('Thrust (N)')
        self.b.set_xlabel('time (s)')
        self.b.set_ylabel('RPM')
        self.c.set_xlabel('time (s)')
        self.c.set_ylabel('Current (A)')
        self.d.set_xlabel('time (s)')
        self.d.set_ylabel('Voltage (V)')

        #try drawing the canvas
        try:
            self.canvas.draw()
        except:
            pass #just ignore it, you'll do better next time
        
        self.parent.after(self.PERIOD_LENGTH_Refresh, self.runRefresh)

    def centerWindow(self):
      
        w = 900 #eh, who needs scaling anyways
        h = 600

        sw = self.parent.winfo_screenwidth()
        sh = self.parent.winfo_screenheight()
        
        x = (sw - w)/2
        y = (sh - h)/2
        self.parent.geometry('%dx%d+%d+%d' % (w, h, x, y))
        

    def initUI(self):

        #Parent Frame
        self.parent.title("Test Stand Control Panel")
        self.style = Style()
        self.style.theme_use("default")

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


        # Frame 1 (top)
        frame1 = Frame(self)
        frame1.pack(fill=X, expand=1)

            #Start motor button
        startButton = Button(frame1, text="Start Motor",
            command=self.startMotor)
        startButton.pack(side=LEFT, padx=5, pady=5)     


            #Throttle slider
        lbl1 = Label(frame1, text="Throttle (0-100):", width=14)
        lbl1.pack(side=LEFT, padx=5, pady=5)
        
        self.scale = Scale(frame1, from_=0, to=100, 
            command=self.onScaleThrottle)
        self.scale.pack(side=LEFT, padx=15)
        
        self.label = Label(frame1, text="throttle", textvariable=self.throttlevar, width=5)        
        self.label.pack(side=LEFT)

            #Throttlesweep checkbutton
        self.autovar = BooleanVar()
        cb = Checkbutton(frame1, text="Throttle Sweep",
            variable=self.autovar, command=self.onClickAuto)
        cb.pack(side=LEFT, padx=15)

            #Com port selection field
        droplbl = Label(frame1, text="Serial Port:", width=10)
        droplbl.pack(side=LEFT, padx=5, pady=5)
        self.selected_s_Port = StringVar()
        self.s_Ports = []
        self.drop = OptionMenu(frame1,self.selected_s_Port,"None",*self.s_Ports)
        self.drop.pack(side=LEFT, padx=5)

            #baudrate selection field (disabled)
##       drop2lbl = Label(frame1, text="Baudrate:", width=9)
##        drop2lbl.pack(side=LEFT, padx=5, pady=5)
##        self.baudrate = StringVar()
##        baudrates = [9600, 19200, 38400, 57600, 115200]
##        drop2 = OptionMenu(frame1,self.baudrate,*baudrates)
##        drop2.pack(side=LEFT, padx=5)

            #Start serial button
        comsButton = Button(frame1, text="Start Serial",
            command=self.startSerial)
        comsButton.pack(side=LEFT, padx=5, pady=5)

            #Stop serial button
        comsStopButton = Button(frame1, text="Stop Serial",
            command=self.stopSerial)
        comsStopButton.pack(side=LEFT, padx=5, pady=5)

        # Frame 2 (second line)
        frame2 = Frame(self)
        frame2.pack(fill=X, expand=1)

            #Amperage entry
        lbl2 = Label(frame2, text="Max Motor Current (A):", width=21)
        lbl2.pack(side=LEFT, padx=5, pady=5)
        
        self.MaxA_Entry = Entry(frame2)
        self.MaxA_Entry.pack(side="left", fill=X, padx=5, expand=False)
        self.MaxA_Entry.insert(0, 10)

            #Voltage entry
        lbl3 = Label(frame2, text="Max Motor Voltage (V):", width=20)
        lbl3.pack(side=LEFT, padx=5, pady=5)
        
        self.MaxV_Entry = Entry(frame2)
        self.MaxV_Entry.pack(side="left", fill=X, padx=5, expand=False)
        self.MaxV_Entry.insert(0, 14)

            #Update button
        updateButton = Button(frame2, text="Update Values",
            command=self.updateValues)
        updateButton.pack(side=LEFT, padx=5, pady=5)
        
        # Graph Frame
        framegraph = Frame(self)
        framegraph.pack(fill=X, expand=1)

            #Init figures
        f = Figure(figsize=(4,4), dpi=100)
        self.a = f.add_subplot(2, 2, 1)
        self.d = f.add_subplot(2, 2, 4)
        self.c = f.add_subplot(2, 2, 3)
        self.b = f.add_subplot(2, 2, 2)
        
        f.set_tight_layout(True)

        self.canvas = matplotlib.backends.backend_tkagg.FigureCanvasTkAgg(f, master=self)
        self.canvas.show()
        self.canvas.get_tk_widget().pack(side=tk.BOTTOM, fill=tk.BOTH, expand=True)

            #Display Toolbar
        toolbar = NavigationToolbar2TkAgg(self.canvas, framegraph)
        toolbar.update()
        self.canvas._tkcanvas.pack(side=tk.TOP, fill=tk.BOTH, expand=True)
        
        # Frame 0 (Bottom text)
        frame0 = Frame(self)
        frame0.pack(side="bottom", fill="x", expand=1)

            #Display text (allows to give user information)
        self.textboxvar = StringVar()
        self.info = Label(frame0, textvariable=self.textboxvar)
        self.info.pack(side=LEFT, padx=5, pady=5)

        # Button Frame (large buttons, near bottom)
        s = Style() #has its own style
        s.configure('My.TFrame',background='#f7edc3') #fancy colors
        framered = Frame(self, style='My.TFrame')
        framered.pack(side="bottom", fill="x", expand=1)
        #used the tk instead of ttk library for this, allows font and color mods

            #Save Button
        self.saveButton = tk.Button(framered, text="Save Data", bg='green', font=('Arial',20,'bold'),
            command=self.saveData)
        self.saveButton.pack(side="left", padx=5, pady=5)

            #Log button
        self.logButton = tk.Button(framered, text="Start Data Logging", bg="blue", font=('Arial',20,'bold'),
            command=self.logData)
        self.logButton.pack(side="left", padx=5, pady=5)

            #Stop button
        self.stopButton = tk.Button(framered, text="Stop Motor", bg='red', font=('Arial',20,'bold'),
            command=self.stopMotor)
        self.stopButton.pack(side="right", padx=5, pady=5)
         

    #Button behavior functions (hopefully self-explanatory)
         
    def onClickAuto(self): #for the throttle sweep (should rename)
        pass #(I guess I can make it do something if I want)

    def MaxA(self):
        #self.MaxA_Entry.get()
        pass
            
    def MaxV(self):
        pass #not sure why these are even functions

    def onScaleThrottle(self, val):
        throttle = str(int(float(val)))
        self.throttlevar.set(throttle + "%")
        self.throttleval.set(throttle)
        try:
            self.SC.sendThrottleSetting(self.throttleval.get())
        except:
            self.textboxvar.set("Something went wrong, is serial connected?")

    def startSerial(self):
        COM_Port = self.selected_s_Port.get()
        #print type(COM_Port)
        #print COM_Port
        if "COM" in COM_Port:
            self.textboxvar.set("Starting Serial on port " + self.selected_s_Port.get())
            #serialThread = Thread(target=SerialComm, args=(COM_Port)) #probably want to pass the self.vars?
            #serialThread.start()
            #threads.append(serialThread)
            try:
                self.ser = serial.Serial(self.selected_s_Port.get(), 9600) #Baud rate = 9600
                self.SC = SerialComm(self.ser, 50) #Dict deques' maxlength = 50
                
                for key in self.SC.dict.keys(): #Initialize dict deques with values so no length errors -Austin
                    for i in range(self.SC.dict[key].maxlen):
                        self.SC.dict[key].append(None)
                
                self.serialStatus = True
            except Exception,e: #if the com port is wrong dont start serial
                print str(e)
                self.textboxvar.set("Error starting serial on port " + self.selected_s_Port.get() + ": " + str(e))
        else:
Exemplo n.º 31
0
class fileExplorer(Frame):
  
    def __init__(self, parent):
        Frame.__init__(self, parent)   
         
        self.parent = parent
        #Determines which checkbox is active.
        self.option = 0
        
        #Setup window.
        self.parent.title("REA5PE")
        self.style = Style()
        self.style.theme_use("default")
        self.pack(fill=BOTH, expand=1)
		
        #Create label
        lbl = Label(self, text="Select the format PE file.")
        lbl.grid(sticky=W)
		
        #Create checkbox 1
        self.var = IntVar()
        cb = Checkbutton(self, text="Show .txt",
        variable=self.var, command=self.onClick)
        cb.grid(row=1, column=0, sticky=W)
        
        #Create checkbox 2
        self.var2 = IntVar()
        cb2 = Checkbutton(self, text="Show Console",
        variable=self.var2, command=self.onClick2)
        cb2.grid(row=2, column=0, sticky=W)
        
        #Entry form
        self.e1 = Entry(self)
        self.e1.grid(row=3, column=0)
        self.e1.focus_set() #Currently owns focus
   
        #Submission
        abtn = Button(self, text="Disassemble", command=self.onClickDisassemble)
        abtn.grid(row=4, column=0, sticky=W+E)
        
        
     #checkbox1
    def onClick(self):
       
        if self.var.get() == 1:
            self.option+=1 
        else:
            self.option-=1
            
	#checkbox2		
    def onClick2(self):
       
        if self.var2.get() == 1:
            self.option+=2
        else:
            self.option-=2
                
   
    #Disassemble button
    def onClickDisassemble(self):
        #Grab the string from the entry field.
        print "Attempting to launch file: " + self.e1.get()
        decoded = self.e1.get()
        
        if(os.path.isfile(self.e1.get())==True):
            #Launch the process.
            process = Popen(["xed.exe", "-i", decoded], stdout=PIPE)
            (output, err) = process.communicate()
            exit_code = process.wait()
        else:
            print "File does not exist. Terminating application."
            sys.exit()
        
        #Save to file.
        print "Saving to file...."
        fx = open('xeddumptext.txt', 'w')
        fx.write(output)
        fx.close()
        fb = open('xeddumpbinary.txt', 'wb')
        fb.write(output)
        fb.close()
        print "done"
        
        if(self.option==0):
            print "No selection. Please choose a section."
        elif(self.option==1):
            print "Displaying text section only."
            self.extractText();
        elif(self.option==2):
            print "Displaying Console section only."
            self.extractConsole();
        elif(self.option==3):
            print "Displaying both sections."
            self.extractText();
            self.extractConsole();
        else:
            print "Unknown error."
            
    def extractText(self):
        # create child window
        win = Toplevel()
        # display message
        message = "Assembly Dump for .text section"
        Label(win, text=message).pack()
        self.scrollbar = Scrollbar(win)
        self.scrollbar.pack(side=RIGHT, fill=Y)
        self.T = Text(win, height=20, width=100)
        self.T.pack()
        self.scrollbar.config(command=self.T.yview)
        
        #Fill out the window with the data.
        with open("xeddumpbinary.txt") as input_data:
            for line in input_data:
                if line.strip() == '# IA32 format':
                    break
                #Reads text until the end of the block.
            for line in input_data: #keep reading
                if line.strip() == '# end of text section.':
                    break
                self.T.insert(END, line)
        message2 = "Search:"
        Label(win,text=message2).pack()
        self.es = Entry(win)
        self.es.pack()
        self.es.focus_set()

        Button(win, text='OK', command=self.searchTerm).pack()
        
    def searchTerm(self):
        self.T.tag_remove('search', '1.0', END)
        s = self.es.get()
        if s:
            idx = '1.0'
            while 1:
                idx = self.T.search(s, idx, nocase=1, stopindex=END)
                if not idx: break
                lastidx = '%s+%dc' % (idx, len(s))
                self.T.tag_add('search', idx, lastidx)
                idx = lastidx
            self.T.tag_config("search", foreground="red")
        self.es.focus_set()       
        
    def extractConsole(self):
       # create child window
       win2 = Toplevel()
       # display message
       message = "Dump for Console"
       Label(win2, text=message).pack()
       self.scrollbarc = Scrollbar(win2)
       self.scrollbarc.pack(side=RIGHT, fill=Y)
       self.T2 = Text(win2, height=20, width=100, yscrollcommand=self.scrollbarc.set)
       self.T2.pack()
       
       self.scrollbarc.config(command=self.T2.yview)
       # quit child window and return to root window
       # the button is optional here, simply use the corner x of the child window
       with open('xeddumpbinary.txt') as input_datac:
            for line in input_datac:
                if line.strip() == '# end of text section.':
                    break
                #Reads text until the end of the block.
            for line in input_datac: #keep reading
                self.T2.insert(END, line)
       Button(win2, text='OK', command=win2.destroy).pack()
Exemplo n.º 32
0
class Example(Frame):
    def __init__(self, parent):
        Frame.__init__(self, parent)

        self.parent = parent
        self.date = (time.strftime("%m_%d_%Y"))
        self.initUI()


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

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

        self.lbl1 = Label(self.frame1, text="Participant", width=10)
        self.lbl1.pack(side=LEFT, padx=5, pady=5)

        self.entry1 = Entry(self.frame1)
        self.entry1.pack(fill=X, padx=5, expand=True)

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

        self.lbl2 = Label(self.frame2, text="Date", width=10)
        self.lbl2.pack(side=LEFT, padx=5, pady=5)

        self.entry2 = Entry(self.frame2)
        self.entry2.insert(0, self.date)
        self.entry2.state()
        self.entry2.pack(fill=X, padx=5, expand=True)

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

        self.lbl3 = Label(self.frame3, text="COM Port", width=10)
        self.lbl3.pack(side=LEFT, padx=5, pady=5)

        self.entry3 = Entry(self.frame3)
        self.entry3.pack(fill=X, padx=5, expand=True)

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

        self.accept = Button(self.frame4, text="Ok", command=self.makeVariables)
        self.accept.pack(fill=X, padx=5)


    def makeVariables(self):
        self.participant = self.entry1.get()
        self.port = self.entry3.get()
        self.verify()
        Frame.quit(self)


    def verify(self):
        mbox.showwarning('Check', 'Have you set the markers on Emotiv Toolbox?')


    def getName(self):
        return self.participant


    def getDate(self):
        return self.date

    def get_port(self):
        return self.port
class Test_Wifi(tk.Frame):
	_title = "Wifi Demo"
	def __init__(self, parent, controller):
		tk.Frame.__init__(self, parent)
		self.controller = controller

		label = tk.Label(self, text=self._title, font=TITLE_FONT)
		label.pack(side="top", fill="x", pady=10)

		frame_ssid = tk.Frame(self)
		frame_ssid.pack(fill=tk.X)
		lbl_ssid = tk.Label(frame_ssid, text="ssid", width=6)
		lbl_ssid.pack(side=tk.LEFT, padx=5, pady=5)
		self.entry_ssid = Entry(frame_ssid)
		self.entry_ssid.pack(fill=tk.X, padx=5, expand=True)

		frame_password = tk.Frame(self)
		frame_password.pack(fill=tk.X)
		lbl_password = tk.Label(frame_password, text="password", width=6)
		lbl_password.pack(side=tk.LEFT, padx=5, pady=5)
		self.entry_password = Entry(frame_password)
		self.entry_password.pack(fill=tk.X, padx=5, expand=True)

		frame_url = tk.Frame(self)
		frame_url.pack(fill=tk.X)
		lbl_url = tk.Label(frame_url, text="url", width=6)
		lbl_url.pack(side=tk.LEFT, padx=5, pady=5)
		self.entry_url = Entry(frame_url)
		self.entry_url.insert(tk.END, 'google.com')
		self.entry_url.pack(fill=tk.X, padx=5, expand=True)

		btn_exit = tk.Button(self, text="Back",
						   command=self.OnClose)
		btn_exit.pack(side=tk.RIGHT, padx=5, pady=5)

		self.btn_test = tk.Button(self, text="Run",
						   command=self.WifiTest)
		self.btn_test.pack(side=tk.RIGHT, padx=5, pady=5)

	def OnClose(self):
		self.btn_test.config(state=tk.NORMAL)
		self.controller.show_frame("StartPage")

	def WifiTest(self):
		if self.entry_ssid.get() == "":
			mbox.showerror("Error", "ssid should not be blank")
			return
		if self.entry_password.get() == "":
			mbox.showerror("Error", "password should not be blank")
			return
		if self.entry_url.get() == "":
			mbox.showerror("Error", "url should not be blank")
			return

		App_Argument = ""
		if ENABLE_ARGUMENT == True:
			App_Argument += " -t wifi -s " + self.entry_ssid.get() + \
						" -p " + self.entry_password.get() + \
						" -l " + self.entry_url.get()
		else:
			App_Argument = LED_WIFI
		print RUN_SCRIPT + WIFI_TEST_APP + App_Argument

		if ssh_session.CreateSshSession(RUN_SCRIPT + WIFI_TEST_APP + App_Argument, WIFI_TEST_APP) != 0:
			return self.OnClose()

		self.btn_test.config(state=tk.DISABLED)
Exemplo n.º 34
0
class Example(Frame):
    def __init__(self, parent):
        Frame.__init__(self, parent)

        self.parent = parent

        self.initUI()

    def initUI(self):

        self.parent.title("Review")
        self.pack(fill=BOTH, expand=True)
        labelfont20 = ('Roboto', 20, 'bold')
        labelfont12 = ('Roboto', 12, 'bold')

        frame0 = Frame(self)
        frame0.pack()

        lbl0 = Label(frame0, text="Hi USER")
        lbl0.config(font=labelfont20)
        lbl0.pack(padx=5, pady=5)
        lbl00 = Label(frame0, text="Search here")
        lbl00.config(font=labelfont12)
        lbl00.pack(padx=5, pady=5)

        frame1 = Frame(self)
        frame1.pack()

        lbl1 = Label(frame1, text="min %", width=9)
        lbl1.pack(side=LEFT, padx=7, pady=5)

        self.entry1 = Entry(frame1, width=20)
        self.entry1.pack(padx=5, expand=True)

        frame6 = Frame(self)
        frame6.pack()
        closeButton = Button(frame6,
                             text="Get Names",
                             width=12,
                             command=self.getDate)
        closeButton.pack(padx=5, pady=5)

        frame7 = Frame(self)
        frame7.pack()
        closeButton1 = Button(frame7,
                              text="Open in excel",
                              width=15,
                              command=self.openDate)
        closeButton1.pack(padx=5, pady=5)

        frame000 = Frame(self)
        frame000.pack()
        self.lbl000 = Label(frame000, text=" ")
        self.lbl000.config(font=labelfont12)
        self.lbl000.pack(padx=5, pady=5)

        frame00a = Frame(self)
        frame00a.pack()
        self.lbl00a = Label(frame000, text=" ")
        self.lbl00a.pack(padx=5, pady=5)

    def getDate(self):
        x1 = self.entry1.get()
        nx = ""

        self.entry1.delete(0, 'end')

        self.lbl000.config(text="Names Are:")

        #read csv, and split on "," the line
        csv_file = csv.reader(open('test.csv', "rb"), delimiter=",")
        #loop through csv list
        for row in csv_file:
            if row[2] >= x1:
                nx += str(row[0] + ", ")
                with open("output5.csv", "ab") as fp:
                    wr = csv.writer(fp, dialect='excel')
                    wr.writerow(row)
                fp.close()
        self.lbl00a.config(text=nx)

    def openDate(self):
        os.system("start " + 'output5.csv')
Exemplo n.º 35
0
class Example(Frame):
#Initialise values

    start_time=time.time()
    para_toggle=0
    grass_toggle=1
    string_toggle=0
    divide_toggle=0
    ctrl_toggle=0
    ctrlpt1=[85,55]
    ctrlpt1x=ctrlpt1[0]
    ctrlpt2=[150,180]
    ctrlpt3=[105,255]
    div_num = 8

#initilise Frame then initialise this Example class using initUI() 
    def __init__(self, parent):
        Frame.__init__(self, parent)   
        
        self.parent = parent
        self.initUI()
        

        
    def initUI(self):
      
        self.parent.title("Grass")
#Configure parent for column layout       
        Style().configure("TButton", padding=(0, 5, 0, 5), 
            font='serif 10')
        
        self.columnconfigure(0, pad=3)
        self.columnconfigure(1, pad=3)
        self.columnconfigure(2, pad=3)
        self.columnconfigure(3, pad=3)
        
        self.rowconfigure(0, pad=3)
        self.rowconfigure(1, pad=3)
        self.rowconfigure(2, pad=3)
        self.rowconfigure(3, pad=3)
        self.rowconfigure(4, pad=3)
        self.rowconfigure(5, pad=3)
        self.rowconfigure(6, pad=3)

#Buttons and stuff

        frame1 = Frame(self)
        frame1.grid(row=0,columnspan=4)
        self.lbl1 = Label(frame1, text="")
        self.lbl1.pack(side=LEFT, padx=5, pady=5)

        frame2 = Frame(self)
        frame2.grid(row=1,columnspan=4)
        lbl2 = Label(frame2, text="Divisions", width=6)
        lbl2.pack(side=LEFT, padx=5, pady=5)
        self.entry1=Entry(frame2) 
        self.entry1.pack(fill=X, padx=5, expand=True)        
        
        frame3 = Frame(self)
        frame3.grid(row=2,columnspan=4)
        self.lbl3 = Label(frame3, text="Divisions =%r"%self.div_num)
        self.lbl3.pack(side=LEFT, expand=True)
    

        set_point = Button(self, text="Set divisions", command=self.get_div)
        set_point.grid(row=3, column=0)

        show_ctrl_points = Button(
                                  self, text="Control points",
                                  command=self.toggle_ctrl
                                  )
        show_ctrl_points.grid(row=3, column=2)
               
        div = Button(self, text="Divide", command=self.toggle_divide)
        div.grid(row = 5, column = 0,columnspan=2)

        strart = Button(self, text="Strings", command=self.toggle_string)
        strart.grid(row = 5, column = 2,columnspan=2)

        plotpar = Button(self, text="Parabola", command=self.toggle_para)
        plotpar.grid(row = 6, column = 0,columnspan=2)

        grass = Button(self, text="Grass", command=self.toggle_grass)
        grass.grid(row = 6, column = 2,columnspan=2)

        self.w = Canvas(self, width=200, height=900)
        self.w.grid(row=7, columnspan=4)
        self.after(70,self.draw)
        self.pack() 

#Draw initial control points for user


        

#Various toggles to show/remove parts of the model

    def toggle_ctrl(self):
        self.ctrl_toggle=(self.ctrl_toggle+1)%2
   
    def toggle_para(self):
        self.para_toggle=(self.para_toggle+1)%2

    def toggle_grass(self):
        self.grass_toggle=(self.grass_toggle+1)%2
    
    def toggle_string(self):
        self.string_toggle=(self.string_toggle+1)%2  
   
    def toggle_divide(self):
        self.divide_toggle=(self.divide_toggle+1)%2  

#Main function that draws the grass then reinitialises the after method on the Frame

    def draw(self):  
            newx=self.ctrlpt1x+50*math.sin(3.14*0.5*(self.start_time-time.time()))
            self.ctrlpt1=[newx,55]
            self.w.delete("all")
            if self.grass_toggle==1:       
                self.grass_polygon()
                self.w.create_polygon(0,235,400,235,400,400,0,400,fill='#A74A2A')
            if self.divide_toggle==1:
                self.draw_divide()           
            if self.string_toggle==1:
                self.string_art()
            if self.para_toggle==1:
                self.plot_para()
            if self.ctrl_toggle==1:
                self.w.create_oval(
                                   self.ctrlpt1[0] - 2, self.ctrlpt1[1] - 2, 
                                   self.ctrlpt1[0] + 2, self.ctrlpt1[1] + 2,
                                   fill="black"
                                  )
                self.w.create_oval(
                                   self.ctrlpt2[0] - 2, self.ctrlpt2[1] - 2, 
                                   self.ctrlpt2[0] + 2, self.ctrlpt2[1] + 2,
                                   fill="black"
                                  )
                self.w.create_oval(
                                   self.ctrlpt3[0] - 2, self.ctrlpt3[1] - 2, 
                                   self.ctrlpt3[0] + 2, self.ctrlpt3[1] + 2,
                                   fill="black"
                                  )
            self.after(70,self.draw)
  
#Gets the number of divisions from the label and then sets it          
    
    def get_div(self):
        try:
            self.div_num=int(self.entry1.get())
            self.lbl1.config(text="Division number set")
            self.lbl3.config(text="Divisions =%r"%self.div_num)
        except ValueError:
            self.lbl1.config(text="Incorrect entry type")

#Draws the positions of each division

    def draw_divide(self):
        list1=self.divide_line(self.ctrlpt1,self.ctrlpt2)
        for n in range(len(list1)):  
            self.w.create_oval(
                               list1[n][0] - 2, list1[n][1] - 2, 
                               list1[n][0] + 2,list1[n][1] + 2,fill="black"
                              )
        list2=self.divide_line(self.ctrlpt2,self.ctrlpt3)  
        for n in range(len(list2)):  
            self.w.create_oval(
                               list2[n][0] - 2, list2[n][1] - 2, 
                               list2[n][0] + 2,list2[n][1] + 2,fill="black"
                              )  
#Draws the polygons for each section of the grass (Clean up function)
 
    def grass_polygon(self):
        lst=self.intersect_list()
        pluslst2=[0]*(2*(len(lst)-1)-1)
        minuslst2=[0]*(2*(len(lst)-1)-1)
        pluslst2[0:1]=lst[0][1],lst[0][0]
        minuslst2[0:1]=lst[0]
        try:
            for n in range(1,len(lst)-1):
                width=2+10*(1-abs(1-2*(n+2)/float(len(lst))))
                m1 = self.slope(lst[n],lst[n+1]) 
                m = -1/m1
                dx = math.sqrt(width**2/(1+m**2))
                dy = math.sqrt(width**2/(1+1/m**2))
                minuslst2[2*n]=math.ceil(lst[n][0]-dx)
                minuslst2[2*n+1]=math.ceil(lst[n][1]-dy)
                pluslst2[2*n+1]=math.ceil(lst[n][0]+dx)
                pluslst2[2*n]=math.ceil(lst[n][1]+dy)
            pluslst2.reverse()    
            self.w.create_polygon(minuslst2,pluslst2,fill='green')
        except TypeError:
            self.lbl1.config(text="Slope error")
            

#Standard slope function (Convert to matrix form maybe? also fix the perp line case)   
    
    def slope(self,point1,point2):
        x1,y1 = point1
        x2,y2 = point2
        if abs(x2-x1) > 0.00001:
            m1=(y2+y1)/float(x2-x1)
            return m1
        else:
            return 'slope_error'
#Gets all the intersection points needed for the parabola

    def intersect_list(self):
        list1 = self.divide_line(self.ctrlpt1,self.ctrlpt2)
        list2 = self.divide_line(self.ctrlpt2,self.ctrlpt3)
        zplst = zip(list1[0:len(list1)-1],list2[1:len(list1)])
        para_list=[0]*(len(zplst)+1)
        para_list[0]=self.ctrlpt1
        para_list[len(zplst)]=self.ctrlpt3
        for n in range(len(zplst)-1):
            para_list[n+1]=self.intersection(
                                        zplst[n][0],zplst[n][1],
                                        zplst[n+1][0],zplst[n+1][1]
                                        )
        return para_list
  
#Draws the parabola points
          
    def plot_para(self):
        plotlist=self.intersect_list()
        for n in range(len(plotlist)):  
            self.w.create_oval(
                                plotlist[n][0]-2, plotlist[n][1]-2, 
                                plotlist[n][0]+2, plotlist[n][1]+2,fill="black"
                                  )

#Draws the strings
                    
    def string_art(self):
        list1 = self.divide_line(self.ctrlpt1,self.ctrlpt2)
        list2 = self.divide_line(self.ctrlpt2,self.ctrlpt3)
        zplst = zip(list1[0:len(list1)-1],list2[1:len(list1)])
        for n in range(len(zplst)):  
            self.w.create_line(
                                zplst[n][0][0], zplst[n][0][1], 
                                zplst[n][1][0], zplst[n][1][1],fill="black"
                                  )

#Given four points which define two lines it finds the intersection point of the two lines. (Use matrix form)

    def intersection(self,point1,point2,point3,point4):
        x1,y1 = point1
        x2,y2 = point2
        x3,y3 = point3
        x4,y4 = point4
        if abs(x2-x1) > 0.00001 and abs(x4-x3) > 0.00001:
            m1=(y2-y1)/float(x2-x1)
            c1=y1-float(m1)*x1
            m2=(y4-y3)/float(x4-x3)
            c2=y3-float(m2)*x3
            xint = (c2-c1)/float((m1-m2))
            yint = m1*((c2-c1)/float((m1-m2)))+c1
        else:
            if abs(x2-x1) < 0.00001:
                xint=x2
                yint=(y4-y3)*x2/float(x4-x3)+y3-float((y4-y3)/float(x4-x3))*x3
            else:
                xint=x3
            
        return [xint,yint]

#Finds the points which divide a line defined by two points in to div_num sections

    def divide_line(self,point1,point2):
        x1,y1 = point1
        x2,y2 = point2
        list = [0]*(self.div_num+1)
        for n in range(self.div_num+1):
            list[n]=[x1+(n)*(x2-x1)/float(self.div_num),y1+(n)*(y2-y1)/float(self.div_num)]
        return list     
#Clears the canvas       

    def clear_canvas(self):
        self.w.delete("all") 
Exemplo n.º 36
0
class topFrame(Frame):
    def __init__(self, parent):
        Frame.__init__(self, parent)
        self.parent = parent
        self.setUI()

    def setUI(self):
        self.parent.title("ServoGui")
        self.pack(fill=BOTH, expand=1)
        self.comPort = StringVar(self)
        self.laststrm = StringVar(self)

        settingFrame = Frame(self, borderwidth=1, relief=RAISED)
        settingFrame.pack(fill=Y, side=LEFT)

        Label(settingFrame,
              width=50,
              text="Port Settings",
              bg="green",
              fg="black").pack(fill=X)

        ports = self.getComPorts()
        w = apply(OptionMenu, (settingFrame, self.comPort) + tuple(ports))
        w.pack(fill=X)

        BaudFrame = Frame(settingFrame)
        BaudFrame.pack(fill=X)
        Label(BaudFrame, text="Baud:").pack(side=LEFT)
        self.baud_entry = Entry(BaudFrame,
                                width=15,
                                validate="focusout",
                                validatecommand=self.baudValidate)
        self.baud_entry.pack(side=LEFT, expand=True)
        self.baud_entry.insert(0, "115200")

        Button(settingFrame, text="Open Port",
               command=self.openPort).pack(fill=X)
        Button(settingFrame, text="Close Port",
               command=self.closePort).pack(fill=X)

        StreamFrame = Frame(settingFrame)
        StreamFrame.pack()
        self.btnStartStream = Button(StreamFrame,
                                     text="Start Stream",
                                     command=self.startStream,
                                     state=DISABLED)
        self.btnStopStream = Button(StreamFrame,
                                    text="Stop Stream",
                                    command=self.stopStream,
                                    state=DISABLED)
        self.btnGetConfig = Button(StreamFrame,
                                   text="Get Config",
                                   command=self.getConfig,
                                   state=DISABLED)
        self.btnStartStream.pack(side=LEFT)
        self.btnStopStream.pack(side=LEFT)
        self.btnGetConfig.pack(side=LEFT)
        self.queue = Queue.Queue()
        self.writequeue = Queue.Queue()

        Label(settingFrame,
              width=50,
              text="Drive Settings",
              bg="green",
              fg="black").pack(fill=X)
        DriveSettingsFrame = Frame(settingFrame, relief=SUNKEN)
        DriveSettingsFrame.pack(fill=X)

        driveSettingsFrames = []
        self.driveSettingsEntries = []
        for drivesetting in drivesettings:
            driveSettingsFrames.append(Frame(DriveSettingsFrame))
            driveSettingsFrames[-1].pack(fill=X)
            Label(driveSettingsFrames[-1], text=drivesetting).pack(side=LEFT)
            self.driveSettingsEntries.append(Entry(driveSettingsFrames[-1]))
            self.driveSettingsEntries[-1].pack(side=RIGHT)
        Button(DriveSettingsFrame,
               text="Send to drive",
               command=self.sendConfig).pack(fill=X)
        Button(DriveSettingsFrame,
               text="Save config in drive",
               command=self.saveConfig).pack(fill=X)

        Label(settingFrame,
              width=50,
              textvariable=self.laststrm,
              bg="green",
              fg="black").pack(fill=X)

        #MatplotLib stuff

        f = Figure(figsize=(5, 4), dpi=100)
        self.a = f.add_subplot(311)
        self.a.set_title("Requested and actual position")
        self.b = f.add_subplot(312)
        self.b.set_title("Error")
        self.c = f.add_subplot(313)
        self.c.set_title("Current meas ADC value")

        self.canvas = FigureCanvasTkAgg(f, master=self)
        self.canvas.show()
        self.canvas.get_tk_widget().pack(side=TOP, fill=BOTH, expand=1)

        toolbar = NavigationToolbar2TkAgg(self.canvas, self)
        toolbar.update()
        self.canvas._tkcanvas.pack(side=TOP, fill=BOTH, expand=1)

        self.hall = []
        self.encoder_count = []
        self.pos_error = []
        self.requested_position = []
        self.requested_delta = []
        self.adc_value = []
        self.pid_output = []
        self.a.set_autoscaley_on(True)

        self.encoder_line, = self.a.plot([], [])
        self.error_line, = self.b.plot([], [])
        self.reqpos_line, = self.a.plot([], [])
        self.ADC_line, = self.c.plot([], [])
        self.updateCanvas()

    def baudValidate(self):
        sVal = self.baud_entry.get()
        try:
            iVal = int(sVal)
        except ValueError:
            print "Illegal baud value"
            self.baud_entry.delete(0, END)
            self.baud_entry.insert(0, "115200")
            return False
        return True

    def openPort(self):
        try:
            self.ser = serial.Serial(self.comPort.get(),
                                     int(self.baud_entry.get()),
                                     timeout=0)
        except serial.SerialException:
            print "unable to open"
            return
        self.btnStartStream['state'] = NORMAL
        self.btnStopStream['state'] = NORMAL
        self.btnGetConfig['state'] = NORMAL

        self.thread = SerialThread(self.queue, self.writequeue, self.ser)
        self.thread.daemon = True
        self.thread.start()
        self.process_serial()

    def closePort(self):
        self.thread.stop()
        self.thread.join()
        self.ser.closePort()

        self.btnStartStream['state'] = DISABLED
        self.btnStopStream['state'] = DISABLED
        self.btnGetConfig['state'] = DISABLED

    def process_serial(self):
        while self.queue.qsize():
            try:
                line = self.queue.get()
                self.handleLine(line)
            except Queue.Empty:
                pass
        self.after(100, self.process_serial)

    def startStream(self):
        self.writequeue.put(b"STREAM START \r")

    def stopStream(self):
        self.writequeue.put(b"STREAM DIE \r")

    def getConfig(self):
        self.writequeue.put(b"GET\r")

    def saveConfig(self):
        self.writequeue.put(b"SAVE \r")

    def sendConfig(self):
        for setting in drivesettings:
            dataToSend = b"SET " + setting + " " + self.driveSettingsEntries[
                drivesettings.index(setting)].get() + "\r"
            print dataToSend
            self.writequeue.put(dataToSend)
            time.sleep(0.2)

    def getComPorts(self):
        ports = serial.tools.list_ports.comports()
        portNames = []
        for port in ports:
            portNames.append(port[0])
        return portNames

    def handleLine(self, line):
        line = line.replace(" ", "")
        line = line.replace("/n", "")
        line = line.replace("/r", "")
        parts = line.split(":")
        if len(parts) > 1:
            if parts[0] == "STR":
                self.handleStr(parts[1])
                return
            if parts[0] in drivesettings:
                self.driveSettingsEntries[drivesettings.index(
                    parts[0])].delete(0, END)
                self.driveSettingsEntries[drivesettings.index(
                    parts[0])].insert(0, parts[1])

    def handleStr(self, strm):
        #format of the stream line: STR:hall;count;requestedPosition;requestedDelta;error
        parts = strm.split(";")

        self.laststrm.set(strm)
        self.hall.append(int(parts[0]))
        if len(self.hall) > 5000:
            self.hall.pop(0)

        self.encoder_count.append(parts[1])
        if len(self.encoder_count) > 5000:
            self.encoder_count.pop(0)

        self.requested_position.append(parts[2])
        if len(self.requested_position) > 5000:
            self.requested_position.pop(0)

        self.requested_delta.append(parts[3])
        if len(self.requested_delta) > 5000:
            self.requested_delta.pop(0)

        self.pos_error.append(parts[4])
        if len(self.pos_error) > 5000:
            self.pos_error.pop(0)

        self.adc_value.append(parts[5])
        if len(self.adc_value) > 5000:
            self.adc_value.pop(0)

        self.pid_output.append(parts[5])
        if len(self.pid_output) > 5000:
            self.pid_output.pop(0)

    def updateCanvas(self):

        self.encoder_line.set_xdata(range(len(self.encoder_count)))
        self.encoder_line.set_ydata(self.encoder_count)
        self.error_line.set_xdata(range(len(self.pos_error)))
        self.error_line.set_ydata(self.pos_error)
        self.reqpos_line.set_xdata(range(len(self.requested_position)))
        self.reqpos_line.set_ydata(self.requested_position)
        self.ADC_line.set_xdata(range(len(self.adc_value)))
        self.ADC_line.set_ydata(self.adc_value)
        self.a.relim()
        self.a.autoscale_view()
        self.b.relim()
        self.b.autoscale_view()
        self.c.relim()
        self.c.autoscale_view()
        self.canvas.draw()
        self.after(100, self.updateCanvas)
class MainWindow(Tk):
    def __init__(self):
        Tk.__init__(self)
        self.title(mainWindowTitle)
        self.resizable(width=0, height=0)
        self.__setStyles()
        self.__initializeComponents()
        self.__dataController = DataController();
        self.mainloop()
            
    def __initializeComponents(self):
        self.imageCanvas = Canvas(master=self, width=imageCanvasWidth,
                                  height=windowElementsHeight, bg="white")
        self.imageCanvas.pack(side=LEFT, padx=(windowPadding, 0),
                              pady=windowPadding, fill=BOTH)
        
        self.buttonsFrame = Frame(master=self, width=buttonsFrameWidth,
                                  height=windowElementsHeight)
        self.buttonsFrame.propagate(0)
        self.loadFileButton = Button(master=self.buttonsFrame,
                                     text=loadFileButtonText, command=self.loadFileButtonClick)
        self.loadFileButton.pack(fill=X, pady=buttonsPadding);
        
        self.colorByLabel = Label(self.buttonsFrame, text=colorByLabelText)
        self.colorByLabel.pack(fill=X)
        self.colorByCombobox = Combobox(self.buttonsFrame, state=DISABLED,
                                        values=colorByComboboxValues)
        self.colorByCombobox.set(colorByComboboxValues[0])
        self.colorByCombobox.bind("<<ComboboxSelected>>", self.__colorByComboboxChange)
        self.colorByCombobox.pack(fill=X, pady=buttonsPadding)
        self.rejectedValuesPercentLabel = Label(self.buttonsFrame, text=rejectedMarginLabelText)
        self.rejectedValuesPercentLabel.pack(fill=X)
        self.rejectedValuesPercentEntry = Entry(self.buttonsFrame)
        self.rejectedValuesPercentEntry.insert(0, defaultRejectedValuesPercent)
        self.rejectedValuesPercentEntry.config(state=DISABLED)
        self.rejectedValuesPercentEntry.pack(fill=X, pady=buttonsPadding)        
        
        self.colorsSettingsPanel = Labelframe(self.buttonsFrame, text=visualisationSettingsPanelText)
        self.colorsTableLengthLabel = Label(self.colorsSettingsPanel, text=colorsTableLengthLabelText)
        self.colorsTableLengthLabel.pack(fill=X)
        self.colorsTableLengthEntry = Entry(self.colorsSettingsPanel)
        self.colorsTableLengthEntry.insert(0, defaultColorsTableLength)
        self.colorsTableLengthEntry.config(state=DISABLED)
        self.colorsTableLengthEntry.pack(fill=X)
        self.scaleTypeLabel = Label(self.colorsSettingsPanel, text=scaleTypeLabelText)
        self.scaleTypeLabel.pack(fill=X)
        self.scaleTypeCombobox = Combobox(self.colorsSettingsPanel, state=DISABLED,
                                          values=scaleTypesComboboxValues)
        self.scaleTypeCombobox.set(scaleTypesComboboxValues[0])
        self.scaleTypeCombobox.bind("<<ComboboxSelected>>", self.__scaleTypeComboboxChange)
        self.scaleTypeCombobox.pack(fill=X)
        self.colorsTableMinLabel = Label(self.colorsSettingsPanel, text=colorsTableMinLabelText)
        self.colorsTableMinLabel.pack(fill=X)
        self.colorsTableMinEntry = Entry(self.colorsSettingsPanel)
        self.colorsTableMinEntry.insert(0, defaultColorsTableMin)
        self.colorsTableMinEntry.config(state=DISABLED)
        self.colorsTableMinEntry.pack(fill=X)
        self.colorsTableMaxLabel = Label(self.colorsSettingsPanel, text=colorsTableMaxLabelText)
        self.colorsTableMaxLabel.pack(fill=X)
        self.colorsTableMaxEntry = Entry(self.colorsSettingsPanel)
        self.colorsTableMaxEntry.insert(0, defaultColorsTableMax)
        self.colorsTableMaxEntry.config(state=DISABLED)
        self.colorsTableMaxEntry.pack(fill=X)
        self.colorsSettingsPanel.pack(fill=X, pady=buttonsPadding)
        
        self.redrawButton = Button(master=self.buttonsFrame, text=redrawButtonText,
                                   state=DISABLED, command=self.__redrawButtonClick)
        self.redrawButton.pack(fill=X, pady=buttonsPadding)
        self.buttonsFrame.pack(side=RIGHT, padx=windowPadding, pady=windowPadding, fill=BOTH)
        
    def __setStyles(self):
        Style().configure("TButton", padding=buttonsTextPadding, font=buttonsFont)
    
    def loadFileButtonClick(self):
        fileName = tkFileDialog.askopenfilename(filetypes=[('Tablet files', '*.mtb'), ('Tablet files', '*.htd')])
        if (fileName):
            if (not self.__getInputParams()):
                self.__showInvalidInputMessage()
                return
            
            self.lastFileName = fileName;
            self.title(mainWindowTitle + " " + fileName)
            self.__draw(fileName)
            tkMessageBox.showinfo(measureDialogTitle, 
                                  measureDialogText + str(self.__dataController.getMeasure(fileName)))
            
            self.redrawButton.config(state=NORMAL)
            self.colorByCombobox.config(state="readonly")
            self.colorsTableLengthEntry.config(state=NORMAL)
            self.scaleTypeCombobox.config(state="readonly")
            
    def __redrawButtonClick(self):
        if (not self.__getInputParams()):
            self.__showInvalidInputMessage()
            return
        
        self.__draw(self.lastFileName)

    def __scaleTypeComboboxChange(self, event):
        if (self.scaleTypeCombobox.get() == relativeScaleType):
            self.colorsTableMinEntry.config(state=DISABLED)
            self.colorsTableMaxEntry.config(state=DISABLED)
        else:
            self.colorsTableMinEntry.config(state=NORMAL)
            self.colorsTableMaxEntry.config(state=NORMAL)
        
    def __colorByComboboxChange(self, event):
        if (self.colorByCombobox.get() == colorByNoneOption):
            self.rejectedValuesPercentEntry.config(state=DISABLED)
        else:
            self.rejectedValuesPercentEntry.config(state=NORMAL)
        
    def __draw(self, fileName):
        self.imageCanvas.delete(ALL)

        dataForDrawing = self.__dataController.getDataForDrawing(
            fileName, self.colorByCombobox.get(), self.colorsTableLength,
            self.scaleTypeCombobox.get(), self.colorsTableMinValue,
            self.colorsTableMaxValue, self.rejectedValuesPercent)
        
        for package in dataForDrawing:
            x = package[0];
            y = package[1];
            color = package[2];
            self.imageCanvas.create_line(x, y, x + 1, y + 1, fill=color)
            
    def __drawColorBySpeed(self, dataPackages, minX, minY, ratio, hsv):   
        allSpeeds = self.__getAllSpeeds(dataPackages)
        minSpeed = min(allSpeeds)
        maxSpeed = max(allSpeeds)
        
        if (self.scaleTypeCombobox.get() == relativeScaleType):
            colorsTableMinValue = minSpeed
            colorsTableMaxValue = maxSpeed
        else:
            colorsTableMinValue = self.colorsTableMinValue
            colorsTableMaxValue = self.colorsTableMaxValue
        
        i = 0
        for package in dataPackages:
            x = (package[dataXNumber] - minX) * ratio
            y = (package[dataYNumber] - minY) * ratio
            
            color = hsv.getColorByValue(colorsTableMinValue,
                                        colorsTableMaxValue,
                                        allSpeeds[i])
                
            tk_rgb = "#%02x%02x%02x" % color
            self.imageCanvas.create_line(x, y, x + 1, y + 1, fill=tk_rgb)
            i += 1
            
    def __showInvalidInputMessage(self):
        tkMessageBox.showinfo(invalidInputMessageTitle, invalidInputMessageText)
    
    def __getInputParams(self):
        try:
            self.colorsTableLength = int(self.colorsTableLengthEntry.get())
            self.colorsTableMinValue = float(self.colorsTableMinEntry.get())
            self.colorsTableMaxValue = float(self.colorsTableMaxEntry.get())
            self.rejectedValuesPercent = float(self.rejectedValuesPercentEntry.get())
        
            if (self.colorsTableLength < 1 or
                self.colorsTableMinValue >= self.colorsTableMaxValue or
                self.rejectedValuesPercent < 0 or self.rejectedValuesPercent >= 100):
                raise
            return True
        except:
            return False
Exemplo n.º 38
0
        return self.pages[self.tab(self.index('end') - 1)['text']]


if __name__ == '__main__':
    from Tkinter import Tk
    from Tkconstants import TOP, BOTH
    from ttk import Label, Entry, Button, Style
    # test dialog
    root = Tk()
    style = Style()
    style.configure('C.TLabel', padding=20)
    tabPage = TabbedPageSet(root, page_names=['Foobar', 'Baz'])
    tabPage.pack(side=TOP, expand=True, fill=BOTH)
    Label(tabPage.pages['Foobar'].frame, text='Foo', style='C.TLabel').pack()
    Label(tabPage.pages['Foobar'].frame, text='Bar', style='C.TLabel').pack()
    Label(tabPage.pages['Baz'].frame, text='Baz').pack()
    entryPgName = Entry(root)
    buttonAdd = Button(root,
                       text='Add Page',
                       command=lambda: tabPage.add_page(entryPgName.get()))
    buttonRemove = Button(
        root,
        text='Remove Page',
        command=lambda: tabPage.remove_page(entryPgName.get()))
    labelPgName = Label(root, text='name of page to add/remove:')
    buttonAdd.pack(padx=5, pady=5)
    buttonRemove.pack(padx=5, pady=5)
    labelPgName.pack(padx=5)
    entryPgName.pack(padx=5)
    root.mainloop()
Exemplo n.º 39
0
    def initUI(self):

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

        ## Frame 0 - Solo descrizione
        frame0 = Frame(self)
        frame0.pack(fill=X)

        descrizione = Label(
            frame0,
            text="Compilare tutti i campi e poi salvare per inserire una nuova riga nel file delle domande",
            width=100,
        )
        descrizione.pack(side=LEFT, padx=5, pady=5)

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

        domanda = Label(frame1, text="Domanda", width=20)
        domanda.pack(side=LEFT, padx=5, pady=5)

        entry1 = Entry(frame1)
        entry1.pack(fill=X, padx=5, expand=True)

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

        risposta1 = Label(frame2, text="Risposta 1 - ERRATA", width=20)
        risposta1.pack(side=LEFT, padx=5, pady=5)

        entry2 = Entry(frame2)
        entry2.pack(fill=X, padx=5, expand=False)

        ### Frame 3
        frame3 = Frame(self)
        frame3.pack(fill=X)

        risposta2 = Label(frame3, text="Risposta 2 - ERRATA", width=20)
        risposta2.pack(side=LEFT, padx=5, pady=5)

        entry3 = Entry(frame3)
        entry3.pack(fill=X, padx=5, expand=True)

        ### Frame 4
        frame4 = Frame(self)
        frame4.pack(fill=X)

        risposta_giusta = Label(frame4, text="Risposta CORRETTA", width=20)
        risposta_giusta.pack(side=LEFT, padx=5, pady=5)

        entry4 = Entry(frame4)
        entry4.pack(fill=X, padx=5, expand=True)

        ### Frame 6
        frame6 = Frame(self)
        frame6.pack(fill=BOTH, expand=True)

        # Close button -> close on click
        closeButton = Button(self, text="Chiudi", command=self.master.quit)
        closeButton.pack(side=RIGHT, padx=5, pady=5)

        # Save button -> save a new line in the file and continues the exec
        okButton = Button(
            self, text="Salva", command=lambda: self.valueGET(entry1.get(), entry2.get(), entry3.get(), entry4.get())
        )
        okButton.pack(side=RIGHT)
Exemplo n.º 40
0
    def initUI(self):

        self.parent.title("Emammal Legacy Data Converter")
        self.style = Style()
        self.style.theme_use("default")
        self.pack(fill=BOTH, expand=True)

        self.root_directory = StringVar(self.parent)
        self.output_directory = StringVar(self.parent)
        self.results = StringVar()
        self.radio_type = IntVar()
        self.radio_type = 0

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

        lbl1 = Label(frame1, text="Input Directory", width=15)
        lbl1.pack(side=LEFT, padx=5, pady=5)

        select_dir = Button(frame1, text='Choose Directory', command=self.input_askdirectory)
        select_dir.pack(side=LEFT, padx=5, pady=5)

        entry1 = Entry(frame1,textvariable= self.root_directory)
        entry1.pack(fill=X, padx=5, expand=True)

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

        lbl2 = Label(frame2, text="Output Directory", width=15)
        lbl2.pack(side=LEFT, padx=5, pady=5)

        output_dir = Button(frame2, text='Choose Directory', command=self.output_askdirectory)
        output_dir.pack(side=LEFT, padx=5, pady=5)

        entry2 = Entry(frame2, textvariable= self.output_directory)
        entry2.pack(fill=X, padx=5, expand=True)

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

        lbl2 = Label(frameRadio, text="Manifest Type", width=15)
        lbl2.pack(side=LEFT, padx=5, pady=5)

        radio_emammal = Radiobutton(frameRadio, text="eMammal xmlVerifier-1.0.2", variable=self.radio_type, value=1,command=self.update_type_value)
        radio_emammal.pack(side=LEFT, padx=5, pady=5)

        radio_classic = Radiobutton(frameRadio, text="WSC eMammal Classic", variable=self.radio_type,value=0,command=self.update_type_value)
        radio_classic.pack(side=LEFT, padx=5, pady=5)

        radio_classic.select()

        frame3 = Frame(self)
        frame3.pack(fill=BOTH, expand=True)

        lbl3 = Label(frame3, text="Results", width=15)
        lbl3.pack(side=LEFT, anchor=N, padx=5, pady=5)

        self.results = Text(frame3)
        self.results.pack(fill=BOTH, pady=5, padx=5, expand=True)

        closeButton = Button(self, text="Close",command=self.quit)
        closeButton.pack(side=RIGHT, padx=5, pady=5)

        okButton = Button(self, text="Run",command=self.run_process)
        okButton.pack(side=RIGHT)
Exemplo n.º 41
0
    def init_ui(cls, self):
        """ Init the UI, creating all the frames """

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

        ## Frame 0 - Description Only
        frame0 = Frame(self)
        frame0.pack(fill=X)

        descrizione = Label(frame0, text="Compilare tutti i campi e poi " \
        "salvare per inserire una nuova riga nel file", width=100)
        descrizione.pack(side=LEFT, padx=5, pady=5)

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

        domanda = Label(frame1, text="Domanda", width=20)
        domanda.pack(side=LEFT, padx=5, pady=5)

        entry1 = Entry(frame1)
        entry1.pack(fill=X, padx=5, expand=True)

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

        risposta1 = Label(frame2, text="Risposta 1 - ERRATA", width=20)
        risposta1.pack(side=LEFT, padx=5, pady=5)

        entry2 = Entry(frame2)
        entry2.pack(fill=X, padx=5, expand=False)

        ### Frame 3
        frame3 = Frame(self)
        frame3.pack(fill=X)

        risposta2 = Label(frame3, text="Risposta 2 - ERRATA", width=20)
        risposta2.pack(side=LEFT, padx=5, pady=5)

        entry3 = Entry(frame3)
        entry3.pack(fill=X, padx=5, expand=True)

        ### Frame 4
        frame4 = Frame(self)
        frame4.pack(fill=X)

        risposta_giusta = Label(frame4, text="Risposta CORRETTA", width=20)
        risposta_giusta.pack(side=LEFT, padx=5, pady=5)

        entry4 = Entry(frame4)
        entry4.pack(fill=X, padx=5, expand=True)

        ### Frame 6
        frame6 = Frame(self)
        frame6.pack(fill=BOTH, expand=True)

        # Close button -> close on click
        close_button = Button(self, text="Chiudi", command=self.master.quit)
        close_button.pack(side=RIGHT, padx=5, pady=5)

        # Save button -> save a new line in the file and continues the exec
        ok_button = Button(self, text="Salva",
                        command=lambda: self.value_get(self, \
                                Question(entry1.get(), entry2.get(), \
                                entry3.get(), entry4.get())))
        ok_button.pack(side=RIGHT)
Exemplo n.º 42
0
class AdderApp(Frame):
    def __init__(self):
        Frame.__init__(self)
        self.master.title("Adder App")
        #self.master.geometry("200x150")

        self.instructions = Label(self, text="Enter the value to add to:")
        self.instructions.pack(pady=5)

        self.number = Entry(self)
        self.number.focus_set()
        self.number.pack(pady=5)

        self.total = Tkinter.StringVar()
        self.time = Tkinter.StringVar()

        self.total_frame = Frame(self)
        self.total_frame.pack(pady=0)
        Label(self.total_frame, text="Total:").pack(side=Tkinter.LEFT, padx=5)
        Label(self.total_frame, textvariable=self.total).pack(side=Tkinter.LEFT)
        self.time_frame = Frame(self)
        self.time_frame.pack(pady=0)
        Label(self.time_frame, text="Time:").pack(side=Tkinter.LEFT)
        Label(self.time_frame, textvariable=self.time).pack(side=Tkinter.LEFT)
        self.complete_msg = Tkinter.StringVar()
        Label(self, textvariable=self.complete_msg).pack(pady=2)

        self.buttons = Frame(self)
        self.buttons.pack(side=Tkinter.BOTTOM, pady=2)
        self.quit_btn = Button(self.buttons, text="Quit", command=self.quit)
        self.quit_btn.pack(side=Tkinter.LEFT)
        self.quit_btn.bind("<Return>", (lambda e, b=self.quit_btn: b.invoke()))
        self.run_btn = Button(self.buttons, text="Run", command=self.run, default=Tkinter.ACTIVE)
        self.run_btn.pack(side=Tkinter.LEFT)

        self.pack(fill=Tkinter.X)
        self.master.bind("<Return>", (lambda e, b=self.run_btn: b.invoke()))

    def run_btn_invoke(self, e):
        print("starting run with button enter")
        self.run_btn.invoke()

    def run(self):
        self.complete_msg.set("")

        self.add_run = adder.Adder()
        self.t = threading.Thread(target=self.add_run.run_to, args=(int(self.number.get()),))
        self.t.start()

        self.update_status()

    def update_status(self):
        self.total.set(self.add_run.total)
        try:
            self.time.set(self.add_run.elapsed_seconds())
        except Exception:
            pass

        if self.add_run.complete:
            self.add_run.complete = False
            self.complete_msg.set("Run Complete")
            self.quit_btn.focus_set()

        self.after(50, self.update_status)
Exemplo n.º 43
0
class Search(Frame):
    """******** Funcion: __init__ **************
    Descripcion: Constructor de Search
    Parametros:
    self Search
    parent Tk
    api InstagramAPI
    id str
    Retorno: void
    *****************************************************"""
    def __init__(self,parent,api,id):
        Frame.__init__(self, parent)
        self.parent = parent
        self.api = api
        self.id = id
        self.anySearch = False
        self.initUI()

    """******** Funcion: initUI **************
    Descripcion: Crea una nueva ventana de busqueda con un
                text box y un boton
    Parametros:
    self Search
    Retorno: void
    *****************************************************"""
    def initUI(self):
        self.parent.title("Pythagram: Search")
        self.style = Style()
        self.style.theme_use("default")

        self.frame = Frame(self,relief=RAISED)
        self.frame.pack(fill=BOTH, expand=1)
        searchLabel = Label(self.frame, text="Search")
        self.searchEntry = Entry(self.frame)
        searchLabel.pack(fill=BOTH, padx=5,pady=5)
        self.searchEntry.pack(fill=BOTH, padx=5,pady=5)
        self.pack(fill=BOTH, expand=1)

        okButton = Button(self, text="OK", command=self.search)
        okButton.pack(side=RIGHT, padx=5, pady=5)

    """******** Funcion: search **************
    Descripcion: realiza la busqueda en el servidor segun el
                texto ingresado en el campo de texto
    Parametros:
    self Search
    Retorno: void
    *****************************************************"""
    def search(self):
        if (self.anySearch):
            self.lb.pack_forget()
        query = self.searchEntry.get()
        p = { "q": query}
        raw = self.api.call_resource('users', 'search', params=p)
        data = raw['data']
        self.results = []
        self.lb = Listbox(self.frame, width=100)
        for element in data:
            try:
                self.lb.insert(END, "@{0}: {1}".format(element['username'],element['full_name']))
            except:
                continue
            self.results.append(element['id'])
        self.lb.bind("<<ListboxSelect>>", self.onSelect)
        self.lb.pack(side=LEFT, padx=5, pady=5)
        self.pack(fill=BOTH, expand=1)
        self.anySearch = True

    """******** Funcion: onSelect **************
    Descripcion: abre una nueva ventana con el perfil seleccionado
                en la lista de resultados
    Parametros:
    self Profile
    val
    Retorno: void
    *****************************************************"""
    def onSelect(self,val):
        sender = val.widget
        idx = sender.curselection()
        self.newWindow = Toplevel(self.parent)
        p = Profile(self.newWindow,self.api,self.results[int(idx[0])])
class Test_GPS3G(tk.Frame):
	_title = "GPS + 3G Demo"
	def __init__(self, parent, controller):
		tk.Frame.__init__(self, parent)
		self.controller = controller

		label = tk.Label(self, text=self._title, font=TITLE_FONT)
		label.pack(side="top", fill="x", pady=10)

		frame_apn = tk.Frame(self)
		frame_apn.pack(fill=tk.X)
		lbl_apn = tk.Label(frame_apn, text="apn", width=8)
		lbl_apn.pack(side=tk.LEFT, padx=5, pady=5)
		self.entry_apn = Entry(frame_apn)
		self.entry_apn.insert(tk.END, 'internet')
		self.entry_apn.pack(fill=tk.X, padx=5, expand=True)

		frame_username = tk.Frame(self)
		frame_username.pack(fill=tk.X)
		lbl_username = tk.Label(frame_username, text="username", width=8)
		lbl_username.pack(side=tk.LEFT, padx=5, pady=5)
		self.entry_username = Entry(frame_username)
		self.entry_username.pack(fill=tk.X, padx=5, expand=True)

		frame_password = tk.Frame(self)
		frame_password.pack(fill=tk.X)
		lbl_password = tk.Label(frame_password, text="password", width=8)
		lbl_password.pack(side=tk.LEFT, padx=5, pady=5)
		self.entry_password = Entry(frame_password)
		self.entry_password.pack(fill=tk.X, padx=5, expand=True)

		frame_dial_number = tk.Frame(self)
		frame_dial_number.pack(fill=tk.X)
		lbl_dial_number = tk.Label(frame_dial_number, text="dial_number", width=8)
		lbl_dial_number.pack(side=tk.LEFT, padx=5, pady=5)
		self.entry_dial_number = Entry(frame_dial_number)
		self.entry_dial_number.insert(tk.END, '*99#')
		self.entry_dial_number.pack(fill=tk.X, padx=5, expand=True)

		btn_exit = tk.Button(self, text="Back",
						   command=self.OnClose)
		btn_exit.pack(side=tk.RIGHT, padx=5, pady=5)

		self.btn_test = tk.Button(self, text="Run",
						   command=self.GPS3GTest)
		self.btn_test.pack(side=tk.RIGHT, padx=5, pady=5)

	def OnClose(self):
		self.btn_test.config(state=tk.NORMAL)
		self.controller.show_frame("StartPage")

	def GPS3GTest(self):
		if self.entry_apn.get() == "":
			mbox.showerror("Error", "apn should not be blank")
			return

		App_Argument = ""
		if ENABLE_ARGUMENT == True:
			App_Argument += " -a " + self.entry_apn.get() + \
						" -d " + self.entry_dial_number.get()
			if len(self.entry_username.get()) > 0:
				App_Argument += " -u " + self.entry_username.get()
			if len(self.entry_password.get()) > 0:
				App_Argument += " -p " + self.entry_password.get()
		else:
			App_Argument = LED_GPS3G
		print RUN_SCRIPT + GPS_3G_TEST_APP + App_Argument

		# Force eth0 down, in order to connect 3g correctly
		if ssh_session.CreateSshSession(RUN_SCRIPT + WIFI_DOWN, WIFI_DOWN) != 0:
			return self.OnClose()

		# Wait for eth0 has been down
		time.sleep(2)

		if ssh_session.CreateSshSession(RUN_SCRIPT + GPS_3G_TEST_APP + App_Argument, GPS_3G_TEST_APP) != 0:
			return self.OnClose()

		self.btn_test.config(state=tk.DISABLED)
Exemplo n.º 45
0
    def initUI(self):

        self.parent.title("Caritas")
        self.style = Style()
        self.style.theme_use("default")

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

        frameMenu = Frame(self)
        frameMenu.pack(fill="both", expand="0", side=RIGHT)

        labelBusqueda = LabelFrame(frameMenu, text="Busqueda")
        labelBusqueda.pack(fill="x",expand =1)

        labelVoluntarios = LabelFrame(frameMenu)
        labelVoluntarios.pack(fill="both",expand =0)

        frameTabla = Frame(self)
        frameTabla.pack(fill="both", expand="1", side=LEFT)

        labelTabla = LabelFrame(frameTabla)
        labelTabla.pack(fill="both", expand="1")

        labelBotonera = LabelFrame(frameTabla)
        labelTabla.pack(fill="both", expand="1")

        labelSelect = LabelFrame(frameTabla)
        labelSelect.pack(fill="both", expand="1")

        model = TableModel()
        modelSelect = TableModel()

        model.addColumn("nombre")
        model.addColumn("apellidos")
        model.addColumn("dni")
        model.addColumn("direccion")
        model.addColumn("correo_electronico")
        model.addColumn("estudio")
        model.addColumn("parroquial")
        model.addColumn("proyecto")
        model.addColumn("genero")
        model.addColumn("fecha_nacimiento")
        model.addColumn("telefono_1")
        model.addColumn("telefono_2")

        modelSelect.addColumn("nombre")
        modelSelect.addColumn("apellidos")
        modelSelect.addColumn("dni")
        modelSelect.addColumn("direccion")
        modelSelect.addColumn("correo_electronico")
        modelSelect.addColumn("estudio")
        modelSelect.addColumn("parroquial")
        modelSelect.addColumn("proyecto")
        modelSelect.addColumn("genero")
        modelSelect.addColumn("fecha_nacimiento")
        modelSelect.addColumn("telefono_1")
        modelSelect.addColumn("telefono_2")

        #Tabla Voluntarios
        self.listilla= queryAllVoluntarios()
        model.importDict(self.listilla)
        self.table = TableCanvas(labelTabla, model=model,editable=False)
        self.table.createTableFrame()
        self.table.handle_double_click(self.eventoClic)

        #Tabla Seleccionados
        self.selectTable = TableCanvas(labelSelect, model=modelSelect,editable=False)
        self.selectTable.createTableFrame()
        self.listadoSeleccionado = []

        L1 = Label(labelBusqueda, text="Nombre")
        L1.pack()
        E1 = Entry(labelBusqueda)
        E1.pack()

        L2 = Label(labelBusqueda, text="Apellidos")
        L2.pack()
        E2 = Entry(labelBusqueda)
        E2.pack()

        botonArriba = Button(labelVoluntarios, text="Agregar al listado",  command=lambda:self.agregarListado(self.table.getSelectedRow()))
        botonArriba.pack()
        botonAbajo = Button(labelVoluntarios, text="Quitar del listado",  command=lambda:self.quitarListado(self.selectTable.getSelectedRow()))
        botonAbajo.pack()

        button = Button(labelBusqueda, text="Buscar", command=lambda: self.buscar(E1.get(),E2.get()))
        button.pack()

        button = Button(labelVoluntarios, text="Nuevo Voluntario",  command=lambda:self.ventanaVoluntarios(-1))
        button.pack()

        buttonEditar = Button(labelVoluntarios, text="Editar Voluntario",  command=lambda:self.ventanaVoluntarios(self.table.getSelectedRow()))
        buttonEditar.pack()

        buttonImprimir = Button(labelVoluntarios, text="Imprimir",  command=lambda:self.ventanaImprimir())
        buttonImprimir.pack()
Exemplo n.º 46
0
class MainFrame(Frame):

    TOP_FRAME_BACKGROUND_COLOR = 'gray75'

    w_ = 500
    h_ = 400

    a_ = 5.
    b_ = 5.

    pad_l = 10

    def __init__(self, parent):
        Frame.__init__(self, parent, background='white')

        self.parent_ = parent

        # this is the main frame we are working on
        self.img_frame = Frame(self, background='navy')
        self.entry1 = None
        self.entry2 = None
        self.cb = None

        #
        self.init_ui()
        self.centering()

        # broken TV app))
        # while True:
        self.state = 0
        self.init_random_image()
        # time.sleep(0.05)

    def centering(self):
        pos_x = (self.parent_.winfo_screenwidth() - self.w_) / 2
        pos_y = (self.parent_.winfo_screenheight() - self.h_) / 2

        self.parent_.geometry('{}x{}+{}+{}'.format(self.w_, self.h_, pos_x, pos_y))

    def init_ui(self):
        self.parent_.title('Rough surface generator')
        self.pack(fill=BOTH, expand=True)

        # top panel with controls
        frame_top = Frame(self, background=self.TOP_FRAME_BACKGROUND_COLOR)
        frame_top.pack(fill=X)

        self.cb = Combobox(frame_top, values=('Gaussian', 'Laplace'))
        self.cb.current(0)
        self.cb.pack(side=LEFT, padx=5, expand=True)

        l1 = Label(frame_top, text=r'Cx', background=self.TOP_FRAME_BACKGROUND_COLOR, width=4)
        l1.pack(side=LEFT, padx=5, expand=True)

        self.entry1 = Entry(frame_top,
                            validate='key',
                            validatecommand=(self.register(self.on_validate),
                                             '%d', '%i', '%P', '%s', '%S', '%v', '%V', '%W'),
                            width=10)
        self.entry1.pack(side=LEFT, padx=5, expand=True)
        self.entry1.insert(0, str(self.a_))

        l1 = Label(frame_top, text=r'Cy', width=4, background=self.TOP_FRAME_BACKGROUND_COLOR)
        l1.pack(side=LEFT, padx=5)

        self.entry2 = Entry(frame_top,
                            validate='key',
                            validatecommand=(self.register(self.on_validate),
                                             '%d', '%i', '%P', '%s', '%S', '%v', '%V', '%W'),
                            width=10)
        self.entry2.pack(side=LEFT, padx=5, expand=True)
        self.entry2.insert(0, str(self.b_))

        but1 = Button(frame_top, text='RUN', command=self.button_action)
        but1.pack(side=RIGHT, padx=5, pady=5)

        # central panel. It will have a label with an image. Image may have a random noise state, or
        # transformed image state
        self.img_frame.pack(fill=BOTH, expand=True)
        img_label = Label(self.img_frame, background=None)
        img_label.pack(expand=True, fill=BOTH, padx=5, pady=5)

    def on_validate(self, d, i, P, s, S, v, V, W):
        """
        :param d: type of action: 1 - insert, 0 - delete, -1 - other
        :param i: index of char string to be inserted/deleted, or -1
        :param P: value of the entry if the edit is allowed
        :param s: value of entry prior to editing
        :param S: the text string being inserted or deleted, if any
        :param v: the type of validation that is currently set
        :param V: the type of validation that triggered the callback
                    (key, focusin, focusout, forced)
        :param W: the tk name of the widget
        :return: True/False -> Valid / Invalid

        Found it here:
            https://stackoverflow.com/questions/4140437/interactively-validating-entry-widget-content-in-tkinter
        Very good answer!
        """

        if d == '1':
            if W == str(self.entry1):
                try:
                    float(s + S)
                    return True
                except ValueError:
                    self.entry1.delete(0, 'end')
                    self.entry1.insert(0, s)

                    print("Not a number, entry 1")
                    return False
            if W == str(self.entry2):
                try:
                    float(s + S)
                    return True
                except ValueError:
                    self.entry2.delete(0, 'end')
                    self.entry2.insert(0, s)

                    print("Not a number, entry 2")
                    return False
        return True

    def init_random_image(self):
        """
            Create a rough surface image from a random noise
        """
        self.update()

        # set a colormap
        c_map = cm.get_cmap('bwr')

        # width and height of the image
        w_ = self.img_frame.winfo_width()-self.pad_l
        h_ = self.img_frame.winfo_height()-self.pad_l

        # generate random noise
        random_map = np.random.random((h_, w_))

        # generate a meshgrid for the filter
        xv, yv = np.meshgrid(np.linspace(-int(w_ / 2.), int(w_ / 2.), w_),
                             np.linspace(-int(h_ / 2.), int(h_ / 2.), h_))

        # define correlation length and width
        if len(self.entry1.get()) > 0:
            clx = float(self.entry1.get())
        else:
            return

        if len(self.entry2.get()) > 0:
            cly = float(self.entry2.get())
        else:
            return

        #
        if self.cb.get().startswith('G'):
            # Gaussian filter
            filter_ = np.exp(-np.power(xv, 2) / clx - np.power(yv, 2) / cly)
        else:
            # Laplace filter
            filter_ = np.exp(-np.abs(xv) / clx - np.abs(yv) / cly)

        # this is a resulting map
        random_map = np.fft.ifft2(np.multiply(np.fft.fft2(random_map), np.fft.fft2(filter_)))
        random_map = np.real(random_map)

        # normalize to [0, 1]
        random_map -= np.min(random_map)
        random_map /= np.max(random_map)

        # create PhotoImage object to add on the panel
        img = ImageTk.PhotoImage(
            Image.fromarray(
                # image really likes unsigned ints))
                np.uint8(
                    # convert to colormap you like
                    c_map(
                        # give a random image to color map with values between 0 and 1
                        # np.random.random(
                        #     (self.img_frame.winfo_height()-self.pad_l, self.img_frame.winfo_width()-self.pad_l)
                        # )
                        random_map
                    )*255
                )
            )
        )

        # Gray colormap
        # img = ImageTk.PhotoImage(
        #     Image.fromarray(np.random.random_integers(0, 255,
        #                                   (self.img_frame.winfo_height()-self.pad_l,
        #                                    self.img_frame.winfo_width()-self.pad_l)).astype(np.int8)
        #                     ).convert('L')
        # )

        keys = self.img_frame.children.keys()
        for key in keys:
            self.img_frame.children[key].configure(image=img)
            self.img_frame.children[key].image = img

    def button_action(self):
        """
        """
        self.init_random_image()
Exemplo n.º 47
0
class Example(Frame):
    def __init__(self, parent):
        Frame.__init__(self, parent)

        self.parent = parent

        self.initUI()

    def initUI(self):

        self.parent.title("Append Data")
        self.pack(fill=BOTH, expand=True)
        labelfont20 = ('Roboto', 15, 'bold')
        labelfont10 = ('Roboto', 10, 'bold')
        labelfont8 = ('Roboto', 8, 'bold')

        frame0 = Frame(self)
        frame0.pack()

        lbl0 = Label(frame0, text="Hi Nakul")
        lbl0.config(font=labelfont20)
        lbl0.pack(padx=5, pady=5)
        lbl00 = Label(frame0, text="Fill the data here")
        lbl00.config(font=labelfont10)
        lbl00.pack(padx=5, pady=5)

        ####################################
        frame1 = Frame(self)
        frame1.pack()
        frame1.place(x=50, y=100)

        lbl1 = Label(frame1, text="Name", width=15)
        lbl1.pack(side=LEFT, padx=7, pady=5)

        self.entry1 = Entry(frame1, width=20)
        self.entry1.pack(padx=5, expand=True)

        ####################################
        frame2 = Frame(self)
        frame2.pack()
        frame2.place(x=50, y=130)

        lbl2 = Label(frame2, text="F Name", width=15)
        lbl2.pack(side=LEFT, padx=7, pady=5)

        self.entry2 = Entry(frame2)
        self.entry2.pack(fill=X, padx=5, expand=True)

        ######################################
        frame3 = Frame(self)
        frame3.pack()
        frame3.place(x=50, y=160)

        lbl3 = Label(frame3, text="DOB(D/M/Y)", width=15)
        lbl3.pack(side=LEFT, padx=7, pady=5)

        self.entry3 = Entry(frame3)
        self.entry3.pack(fill=X, padx=5, expand=True)

        #######################################
        frame4 = Frame(self)
        frame4.pack()
        frame4.place(x=50, y=190)

        lbl4 = Label(frame4, text="Medium(H/E)", width=15)
        lbl4.pack(side=LEFT, padx=7, pady=5)

        self.entry4 = Entry(frame4)
        self.entry4.pack(fill=X, padx=5, expand=True)

        ##########################################
        frame5 = Frame(self)
        frame5.pack()
        frame5.place(x=50, y=225)
        MODES = [
            ("M", "Male"),
            ("F", "Female"),
        ]
        lbl5 = Label(frame5, text="Gender", width=15)
        lbl5.pack(side=LEFT, padx=7, pady=5)

        global v
        v = StringVar()
        v.set("Male")  # initialize

        for text, mode in MODES:
            b = Radiobutton(frame5, text=text, variable=v, value=mode)
            b.pack(side=LEFT, padx=10)

        ############################################
        #####printing line
        lbl5a = Label(
            text="___________________________________________________")
        lbl5a.pack()
        lbl5a.place(x=45, y=255)

        ############################################
        frame6 = Frame(self)
        frame6.pack()
        frame6.place(x=50, y=290)

        lbl6 = Label(frame6, text="Phone No:", width=15)
        lbl6.pack(side=LEFT, padx=7, pady=5)

        self.entry6 = Entry(frame6)
        self.entry6.pack(fill=X, padx=5, expand=True)

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

        frame7 = Frame(self)
        frame7.pack()
        frame7.place(x=50, y=320)

        lbl7 = Label(frame7, text="Landline No:", width=15)
        lbl7.pack(side=LEFT, padx=7, pady=5)

        self.entry7 = Entry(frame7)
        self.entry7.pack(fill=X, padx=5, expand=True)

        ###############################################
        frame8 = Frame(self)
        frame8.pack()
        frame8.place(x=50, y=350)

        lbl8 = Label(frame8, text="Email:", width=15)
        lbl8.pack(side=LEFT, padx=7, pady=5)

        self.entry8 = Entry(frame8)
        self.entry8.pack(fill=X, padx=5, expand=True)

        #############################################
        frame9 = Frame(self)
        frame9.pack()
        frame9.place(x=50, y=380)

        lbl9 = Label(frame9, text="HomeTown:", width=15)
        lbl9.pack(side=LEFT, padx=7, pady=5)

        self.entry9 = Entry(frame9)
        self.entry9.pack(fill=X, padx=5, expand=True)

        ###############################################
        frame10 = Frame(self)
        frame10.pack()
        frame10.place(x=60, y=415)

        lbl10 = Label(frame10, text="Address:")
        lbl10.pack(padx=5, pady=5)

        self.entry10 = Text(frame10, height=5, width=28)
        self.entry10.pack(padx=5, expand=True)

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

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

        frame11 = Frame(self)
        frame11.pack()
        frame11.place(x=350, y=100)

        lbl11x = Label(frame11, text="_______Class 10th Data_______")
        lbl11x.pack(padx=0, pady=0)

        lbl11 = Label(text="%", width=15)
        lbl11.pack(side=LEFT, padx=0, pady=0)
        lbl11.place(x=350, y=130)

        self.entry11 = Entry(width=12)
        self.entry11.pack(padx=1, expand=True)
        self.entry11.place(x=420, y=130)

        lbl11a = Label(text="Passing Year", width=15)
        lbl11a.pack(padx=0, pady=2)
        lbl11a.place(x=350, y=160)

        self.entry11a = Entry(width=12)
        self.entry11a.pack(padx=1, expand=True)
        self.entry11a.place(x=420, y=160)

        lbl11b = Label(text="Board Name", width=15)
        lbl11b.pack(padx=0, pady=2)
        lbl11b.place(x=350, y=190)

        self.entry11b = Entry(width=12)
        self.entry11b.pack(padx=1, expand=True)
        self.entry11b.place(x=420, y=190)

        ####################################################
        frame12 = Frame(self)
        frame12.pack()
        frame12.place(x=510, y=100)

        lbl12x = Label(frame12, text="_______Class 12th Data_______")
        lbl12x.pack(padx=0, pady=0)

        lbl12 = Label(text="%", width=15)
        lbl12.pack(side=LEFT, padx=0, pady=0)
        lbl12.place(x=510, y=130)

        self.entry12 = Entry(width=12)
        self.entry12.pack(padx=1, expand=True)
        self.entry12.place(x=580, y=130)

        lbl12a = Label(text="Passing Year", width=15)
        lbl12a.pack(padx=0, pady=2)
        lbl12a.place(x=510, y=160)

        self.entry12a = Entry(width=12)
        self.entry12a.pack(padx=1, expand=True)
        self.entry12a.place(x=580, y=160)

        lbl12b = Label(text="Board Name", width=15)
        lbl12b.pack(padx=0, pady=2)
        lbl12b.place(x=510, y=190)

        self.entry12b = Entry(width=12)
        self.entry12b.pack(padx=1, expand=True)
        self.entry12b.place(x=580, y=190)

        #####################################################
        frame13 = Frame(self)
        frame13.pack()
        frame13.place(x=670, y=100)

        lbl13x = Label(frame13, text="________B.Tech Data_________")
        lbl13x.pack(padx=0, pady=0)

        lbl13 = Label(text="%", width=15)
        lbl13.pack(side=LEFT, padx=0, pady=0)
        lbl13.place(x=670, y=130)

        self.entry13 = Entry(width=12)
        self.entry13.pack(padx=1, expand=True)
        self.entry13.place(x=740, y=130)

        lbl13a = Label(text="Passing Year", width=15)
        lbl13a.pack(padx=0, pady=2)
        lbl13a.place(x=670, y=160)

        self.entry13a = Entry(width=12)
        self.entry13a.pack(padx=1, expand=True)
        self.entry13a.place(x=740, y=160)

        lbl13b = Label(text="College", width=15)
        lbl13b.pack(padx=0, pady=2)
        lbl13b.place(x=670, y=190)

        self.entry13b = Entry(width=12)
        self.entry13b.pack(padx=1, expand=True)
        self.entry13b.place(x=740, y=190)

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

        frame14 = Frame(self)
        frame14.pack()
        frame14.place(x=380, y=255)

        lbl14 = Label(frame14, text="Any Other Info:")
        lbl14.pack(padx=5, pady=5)

        self.entry14 = Text(frame14, height=5, width=28)
        self.entry14.pack(padx=5, expand=True)

        frame15 = Frame(self)
        frame15.pack()
        frame15.place(x=650, y=290)

        openButton = Button(frame15,
                            text="Attatch Resume",
                            width=15,
                            command=self.openResume)
        openButton.pack(padx=5, pady=5)
        self.entry15 = Entry(frame15)
        self.entry15.pack(fill=X, padx=4, expand=True)
        #############################################################
        frame16 = Frame(self)
        frame16.pack()
        frame16.place(x=450, y=500)

        closeButton = Button(frame16,
                             text="SUBMIT",
                             width=35,
                             command=self.getDatax)
        closeButton.pack(padx=5, pady=5)

        #######################################
        framexxx = Frame(self)
        framexxx.pack()
        framexxx.place(x=700, y=600)
        self.xxx = Label(framexxx, text="Recent Changes Will Appear Here")
        self.xxx.config(font=labelfont8)
        self.xxx.pack()

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

        frame000 = Frame(self)
        frame000.pack()
        frame000.place(x=50, y=600)

        self.lbl000 = Label(frame000,
                            text="Beta/Sample2.0 | (c) Nakul Rathore")
        self.lbl000.config(font=labelfont8)
        self.lbl000.pack(padx=5, pady=5)

    def openResume(self):
        ftypes = [('All files', '*')]
        dlg = tkFileDialog.Open(self, filetypes=ftypes, initialdir='C:/Users/')
        global x15
        fl = dlg.show()
        #file name
        x15 = fl
        temp1 = os.path.basename(fl)
        global temp2
        temp2 = os.path.splitext(temp1)[0]

        self.entry15.delete(0, 'end')
        self.entry15.insert(0, temp2)

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

    def getDatax(self):
        x1 = self.entry1.get()
        x2 = self.entry2.get()
        x3 = self.entry3.get()
        x4 = self.entry4.get()

        x5 = v.get()

        x6 = int(self.entry6.get())
        x7 = int(self.entry7.get())
        x8 = self.entry8.get()
        x9 = self.entry9.get()

        x10 = self.entry10.get('1.0', 'end')

        x11 = int(self.entry11.get())
        x11a = int(self.entry11a.get())
        x11b = self.entry11b.get()

        x12 = int(self.entry12.get())
        x12a = int(self.entry12a.get())
        x12b = self.entry12b.get()

        x13 = int(self.entry13.get())
        x13a = int(self.entry13a.get())
        x13b = self.entry13b.get()

        x14 = self.entry14.get('1.0', 'end')

        list1 = [
            x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x11a, x11b, x12,
            x12a, x12b, x13, x13a, x13b, x14,
            "=HYPERLINK(" + "\"" + x15 + "\"" + "," + "\"" + temp2 + "\"" + ")"
        ]

        wb = openpyxl.load_workbook('..\database\database.xlsx')
        ws = wb.active
        print(wb.get_sheet_names())
        max_row = ws.get_highest_row()
        #max_col = ws.get_highest_column()
        max_col = 21
        print max_row

        for i in xrange(1, max_col + 1):
            #print list1[i]
            ws.cell(row=max_row + 1, column=i).value = list1[i - 1]
        ws.cell(row=max_row + 1,
                column=max_col).font = Font(color="0000FF", underline='single')
        ws.cell(row=max_row + 1,
                column=max_col).alignment = Alignment(horizontal='center')
        wb.save('..\database\database.xlsx')

        self.entry1.delete(0, 'end')
        self.entry2.delete(0, 'end')
        self.entry3.delete(0, 'end')
        self.entry4.delete(0, 'end')

        self.entry6.delete(0, 'end')
        self.entry7.delete(0, 'end')
        self.entry8.delete(0, 'end')
        self.entry9.delete(0, 'end')
        self.entry10.delete('1.0', '2.0')
        self.entry11.delete(0, 'end')
        self.entry11a.delete(0, 'end')
        self.entry11b.delete(0, 'end')
        self.entry12.delete(0, 'end')
        self.entry12a.delete(0, 'end')
        self.entry12b.delete(0, 'end')
        self.entry13.delete(0, 'end')
        self.entry13a.delete(0, 'end')
        self.entry13b.delete(0, 'end')

        self.entry14.delete('1.0', '2.0')

        self.xxx.config(text="Recent Changes Made For : " + x1)
Exemplo n.º 48
0
    def initUI(self):
        self.master.title("Telegram UnlimitMe")
        self.master.minsize(width=500, height=300)
        self.pack(fill=BOTH, expand=True)

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

        tknlbl = Label(frame1, text="Token", width=7, font=("Helvetica", 10))
        tknlbl.pack(side=LEFT, padx=5, pady=5)

        tkntxt = Entry(frame1, font=("Helvetica", 10))
        tkntxt.pack(fill=X, padx=5, expand=True)
        tkntxt.insert(0, self.loadtoken())

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

        cidlbl = Label(frame2, text="Chat ID", width=7, font=("Helvetica", 10))
        cidlbl.pack(side=LEFT, padx=5, pady=5)

        cidtxt = Entry(frame2, font=("Helvetica", 10))
        cidtxt.pack(fill=X, padx=5, expand=True)
        cidtxt.insert(0, self.loadcid())

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

        msglbl = Label(frame3, text="Message", width=8, font=("Helvetica", 10))
        msglbl.pack(side=LEFT, anchor=N, padx=5, pady=5)

        msgtxt = Entry(frame3, width=30, font=("Helvetica", 10))
        msgtxt.insert(
            0,
            "UnlimitMe script by (Gooogle)[https://github.com/GooogIe/UnlimitMe]"
        )
        msgtxt.pack(fill=BOTH, padx=5, pady=2)

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

        tmslbl = Label(frame8,
                       text="Spam times",
                       width=10,
                       font=("Helvetica", 10))
        tmslbl.pack(side=LEFT, anchor=N, padx=5, pady=5)

        tmstxt = Entry(frame8, width=30, font=("Helvetica", 10))
        tmstxt.insert(0, "5")
        tmstxt.pack(fill=BOTH, padx=5, pady=2)

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

        imglbl = Label(frame7,
                       text="Image Source",
                       width=15,
                       font=("Helvetica", 10))
        imglbl.pack(side=LEFT, anchor=N, padx=5, pady=5)

        imgtxt = Entry(self, width=30, font=("Helvetica", 10))
        imgtxt.insert(0, "http://www.photo.it/ok.png")
        imgtxt.pack(fill=BOTH, padx=5, pady=2)

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

        x = StringVar()
        x.set("Chat IDS found: \n" + str(chatids(tkntxt.get())))
        cidslbl = Label(frame4,
                        textvariable=x,
                        width=40,
                        font=("Helvetica", 10))
        cidslbl.pack(side=LEFT, anchor=N, padx=5, pady=5)

        listbox = Listbox(frame4, width=30, font=("Helvetica", 10))
        listbox.pack(side=RIGHT, padx=5, pady=5)

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

        spambtn = Button(frame5,
                         relief=FLAT,
                         bg="#1EFE7B",
                         text="Spam",
                         font=("Helvetica", 10),
                         fg="#ffffff",
                         width=15,
                         command=lambda: self.flood(tmstxt.get(), msgtxt.get(
                         ), tkntxt.get(), cidtxt.get()))
        spambtn.pack(side=RIGHT, padx=5, pady=5)

        sendbtn = Button(
            frame5,
            relief=FLAT,
            bg="#2ECC71",
            text="Send",
            font=("Helvetica", 10),
            fg="#ffffff",
            width=15,
            command=lambda: self.sendMessage(msgtxt.get(), tkntxt.get(
            ), cidtxt.get()) & listbox.insert(END, "You: " + msgtxt.get()))
        sendbtn.pack(side=RIGHT, padx=5, pady=5)

        imgbtn = Button(frame5,
                        relief=FLAT,
                        bg="#1ABC9C",
                        text="Send a Photo",
                        font=("Helvetica", 10),
                        fg="#ffffff",
                        width=15,
                        command=lambda: self.sendImage(imgtxt.get(
                        ), tkntxt.get(), cidtxt.get()))
        imgbtn.pack(side=LEFT, padx=5, pady=5)

        savebtn = Button(
            frame5,
            relief=FLAT,
            bg="#E74C3C",
            text="Save CID & Token",
            font=("Helvetica", 10),
            fg="#ffffff",
            width=15,
            command=lambda: self.saveall(tkntxt.get(), cidtxt.get()))
        savebtn.pack(side=LEFT, padx=5, pady=5)

        getcidsbtn = Button(frame5,
                            relief=FLAT,
                            bg="#3498DB",
                            text="Reload Chat IDS",
                            font=("Helvetica", 10),
                            fg="#ffffff",
                            width=15,
                            command=lambda: x.set("Chat IDS found: \n" +
                                                  chatids(tkntxt.get())))
        getcidsbtn.pack(side=LEFT, padx=5, pady=5)

        frame6 = Frame(self)
        frame6.pack(fill=X, expand=True)

        abtlbl = Label(
            frame6,
            font=("Helvetica", 10),
            text="Created by Habb0n - (c) 2016 - Using Python & Tkinter",
            width=50)
        abtlbl.pack(side=BOTTOM, anchor=N, padx=1, pady=1)
class mSim(Frame): #could probably have renamed this class. Oh well...

  
    def __init__(self, parent):

        #base frame init
        Frame.__init__(self, parent)   
        self.parent = parent
        self.initUI()
        self.centerWindow()

        #Used to stop threads from infinitely looping
        global exitapp
        exitapp = False

        #serial port scanning thread (this is provided as-is and should work)
        def serial_ports():
            """ Lists serial port names

                :raises EnvironmentError:
                    On unsupported or unknown platforms
                :returns:
                    A list of the serial ports available on the system
            """
            if sys.platform.startswith('win'):
                ports = ['COM%s' % (i + 1) for i in range(256)]
            elif sys.platform.startswith('linux') or sys.platform.startswith('cygwin'):
                # this excludes your current terminal "/dev/tty"
                ports = glob.glob('/dev/tty[A-Za-z]*')
            elif sys.platform.startswith('darwin'):
                ports = glob.glob('/dev/tty.*')
            else:
                raise EnvironmentError('Unsupported platform')

            result = []
            for port in ports:
                try:
                    s = serial.Serial(port)
                    s.close()
                    result.append(port)
                except (OSError, serial.SerialException):
                    pass
            return result

        
        def scanLoop(): #This thread causes lag when closing the program, could fix, but eh it works
            while True and (not exitapp):
                self.s_Ports = serial_ports()
                #update every 4 seconds
                #(reducing this reduces lag on closing but increases the computation power required)
                #(Could create more elegant solution, but this works well enough)
                time.sleep(4)
                if exitapp == True:
                        break
        ###END FUNCTION###

        #Initiallize ports and start scanning thread
        self.s_Ports = []
        sScanThread = Thread(target=scanLoop, args=())
        sScanThread.start()
        threads.append(sScanThread)
        
        #create variables
        self.startmotor = BooleanVar()
        self.logstate = BooleanVar()
        self.throttlevar.set("0%") #ghetto fixes woo
        self.throttleval.set(0)

        #message sending thread
        def commsServer():
            self.sMsg = None
            #prev_sMsg = None #don't need this no more
            
            def sendSerial(msg, port, baudrate): #just a function to send serial messages
                if (port is not 'None'):
                    ser = serial.Serial(port, baudrate, serial.EIGHTBITS, serial.PARITY_NONE, serial.STOPBITS_ONE)
                    if ser.isOpen():
                        ser.close()
                    ser.open()
                    for b in bytearray("message\n","UTF-8"):
                        ser.write(b)
                    ser.close()
            
            while True and (not exitapp):
                if self.sMsg != None:
                    msg = str(self.sMsg)
                    #send command over serial (pySerial)
                    sendSerial(msg, self.selected_s_Port, self.baudrate)
                    self.sMsg = None
                else:
                    time.sleep(0.1)
                if exitapp == True:
                        break
        ###END FUNCTION###

        #start the serial sending thingy
        commsServerThread = Thread(target=commsServer, args=())
        commsServerThread.start()
        threads.append(commsServerThread) #make sure you do this for any new thread you create!
        #failing to append threads to the threadlist is a criminal offense
        #not really but it'll stop them from being killed when the program closes

    def centerWindow(self):
      
        w = 800 #eh, who needs scaling anyways
        h = 640

        sw = self.parent.winfo_screenwidth()
        sh = self.parent.winfo_screenheight()
        
        x = (sw - w)/2
        y = (sh - h)/2
        self.parent.geometry('%dx%d+%d+%d' % (w, h, x, y))
        

    def initUI(self):

        #Parent Frame
        self.parent.title("Test Stand Control Panel")
        self.style = Style()
        self.style.theme_use("default")

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


        # Frame 1 (top)
        frame1 = Frame(self)
        frame1.pack(fill=X, expand=1)

            #Start motor button
        startButton = Button(frame1, text="Start Motor",
            command=self.startMotor)
        startButton.pack(side=LEFT, padx=5, pady=5)     


            #Throttle slider
        lbl1 = Label(frame1, text="Throttle (0-100):", width=14)
        lbl1.pack(side=LEFT, padx=5, pady=5)
        
        scale = Scale(frame1, from_=0, to=100, 
            command=self.onScaleThrottle)
        scale.pack(side=LEFT, padx=15)
        
        self.throttlevar = StringVar()
        self.throttleval = IntVar()
        self.label = Label(frame1, text="throttle", textvariable=self.throttlevar, width=5)        
        self.label.pack(side=LEFT)

            #Throttlesweep checkbutton
        self.autovar = BooleanVar()
        cb = Checkbutton(frame1, text="Throttle Sweep",
            variable=self.autovar, command=self.onClickAuto)
        cb.pack(side=LEFT, padx=15)

            #Com port selection field
        droplbl = Label(frame1, text="Serial Port:", width=10)
        droplbl.pack(side=LEFT, padx=5, pady=5)
        self.selected_s_Port = StringVar()
        self.s_Ports = []
        drop = OptionMenu(frame1,self.selected_s_Port,"None",*self.s_Ports)
        drop.pack(side=LEFT, padx=5)

            #baudrate selection field (disabled)
##        drop2lbl = Label(frame1, text="Baudrate:", width=9)
##        drop2lbl.pack(side=LEFT, padx=5, pady=5)
##        self.baudrate = StringVar()
##        baudrates = [9600, 19200, 38400, 57600, 115200]
##        drop2 = OptionMenu(frame1,self.baudrate,*baudrates)
##        drop2.pack(side=LEFT, padx=5)

            #Start serial button
        comsButton = Button(frame1, text="Start Serial",
            command=self.startSerial)
        comsButton.pack(side=LEFT, padx=5, pady=5)

            #Stop serial button
        comsStopButton = Button(frame1, text="Stop Serial",
            command=self.stopSerial)
        comsStopButton.pack(side=LEFT, padx=5, pady=5)

        # Frame 2 (second line)
        frame2 = Frame(self)
        frame2.pack(fill=X, expand=1)

            #Amperage entry
        lbl2 = Label(frame2, text="Max Motor Current (A):", width=21)
        lbl2.pack(side=LEFT, padx=5, pady=5)
        
        self.MaxA_Entry = Entry(frame2)
        self.MaxA_Entry.pack(side="left", fill=X, padx=5, expand=False)
        self.MaxA_Entry.insert(0, 10)

            #Voltage entry
        lbl3 = Label(frame2, text="Max Motor Voltage (V):", width=20)
        lbl3.pack(side=LEFT, padx=5, pady=5)
        
        self.MaxV_Entry = Entry(frame2)
        self.MaxV_Entry.pack(side="left", fill=X, padx=5, expand=False)
        self.MaxV_Entry.insert(0, 14)

            #Update button
        updateButton = Button(frame2, text="Update Values",
            command=self.updateValues)
        updateButton.pack(side=LEFT, padx=5, pady=5)
        
        # Graph Frame
        framegraph = Frame(self)
        framegraph.pack(fill=X, expand=1)

            #Init figures
        f = Figure(figsize=(4.5,4.5), dpi=100)
        self.a = f.add_subplot(2, 2, 1)
        self.d = f.add_subplot(2, 2, 4)
        self.c = f.add_subplot(2, 2, 3)
        self.b = f.add_subplot(2, 2, 2)
        
        f.set_tight_layout(True)

        self.canvas = matplotlib.backends.backend_tkagg.FigureCanvasTkAgg(f, master=self)
        self.canvas.show()
        self.canvas.get_tk_widget().pack(side=tk.BOTTOM, fill=tk.BOTH, expand=True)

            #Display Toolbar
        toolbar = NavigationToolbar2TkAgg(self.canvas, framegraph)
        toolbar.update()
        self.canvas._tkcanvas.pack(side=tk.TOP, fill=tk.BOTH, expand=True)

            #Refresh thread function
        def refreshFigure(): #this is threaded and just refreshes the figure (see time.sleep() for refresh rate)
            time.sleep(1)
            while True  and (not exitapp):
                self.a.clear()
                self.b.clear()
                self.c.clear()
                self.d.clear()
                if not serialStatus:
                    self.a.plot([1,2,3,4,5,6,7,8],[0,0,0,0,0,0,0,0])
                    self.b.plot([1,2,3,4,5,6,7,8],[0,0,0,0,0,0,0,0])
                    self.c.plot([1,2,3,4,5,6,7,8],[0,0,0,0,0,0,0,0])
                    self.d.plot([1,2,3,4,5,6,7,8],[0,0,0,0,0,0,0,0])
                else:
                    #debug plotsTimestamp
                    self.a.plot(serialData[-10:]["Timestamp"],serialData[-10:]["Timestamp"])
                    self.b.plot(serialData[-10:]["Timestamp"],serialData[-10:]["raw_temp"])
                    self.c.plot(serialData[-10:]["Timestamp"],serialData[-10:]["conv_temp"])
                    self.d.plot(serialData[-10:]["Timestamp"],serialData[-10:]["Potentiometer"])
                    #final plots
    ##                self.a.plot(serialData[-10:]["Timestamp"],serialData[-10:]["Thrust"])
    ##                self.b.plot(serialData[-10:]["Timestamp"],serialData[-10:]["RPM"])
    ##                self.c.plot(serialData[-10:]["Timestamp"],serialData[-10:]["Current"])
    ##                self.d.plot(serialData[-10:]["Timestamp"],serialData[-10:]["Voltage"])
                    #old demo stuff
    ##                self.a.plot([1,2,3,4,5,6,7,8],[5,6,1,3,self.throttleval.get(),9,3,5])
    ##                self.b.plot([1,2,3,4,5,6,7,8],[3,16,10,30,80,90,30,50])
    ##                self.c.plot([1,2,3,4,5,6,7,8],[8,5,4,(self.throttleval.get())**(0.5),15,15,15,20])
    ##                self.d.plot([1,2,3,4,5,6,7,8],[14,14,13,12,12,11.5,11.2,10.5])

                #set labels for graphs (could make automatic later)
                self.a.set_xlabel('time (s)')
                self.a.set_ylabel('Thrust (N)')
                self.b.set_xlabel('time (s)')
                self.b.set_ylabel('RPM')
                self.c.set_xlabel('time (s)')
                self.c.set_ylabel('Current (A)')
                self.d.set_xlabel('time (s)')
                self.d.set_ylabel('Voltage (V)')

                #try drawing the canvas
                try:
                    self.canvas.draw()
                except:
                    pass #just ignore it, you'll do better next time
                time.sleep(0.1) #refreshrate
        ###END FUNCTION###

            #Start the graphing thread
        plotThread = Thread(target=refreshFigure, args=())
        plotThread.start()
        threads.append(plotThread)
        
        # Frame 0 (Bottom text)
        frame0 = Frame(self)
        frame0.pack(side="bottom", fill="x", expand=1)

            #Display text (allows to give user information)
        self.textboxvar = StringVar()
        self.info = Label(frame0, textvariable=self.textboxvar)
        self.info.pack(side=LEFT, padx=5, pady=5)

        # Button Frame (large buttons, near bottom)
        s = Style() #has its own style
        s.configure('My.TFrame',background='#f7edc3') #fancy colors
        framered = Frame(self, style='My.TFrame')
        framered.pack(side="bottom", fill="x", expand=1)
        #used the tk instead of ttk library for this, allows font and color mods

            #Save Button
        self.saveButton = tk.Button(framered, text="Save Data", bg='green', font=('Arial',20,'bold'),
            command=self.saveData)
        self.saveButton.pack(side="left", padx=5, pady=5)

            #Log button
        self.logButton = tk.Button(framered, text="Start Data Logging", bg="blue", font=('Arial',20,'bold'),
            command=self.logData)
        self.logButton.pack(side="left", padx=5, pady=5)

            #Stop button
        self.stopButton = tk.Button(framered, text="Stop Motor", bg='red', font=('Arial',20,'bold'),
            command=self.stopMotor)
        self.stopButton.pack(side="right", padx=5, pady=5)
         

    #Button behavior functions (hopefully self-explanatory)
         
    def onClickAuto(self): #for the throttle sweep (should rename)
        pass #(I guess I can make it do something if I want)

    def MaxA(self):
        #self.MaxA_Entry.get()
        pass #(I guess I can make it do something if I want)
    def MaxV(self):
        pass #(I guess I can make it do something if I want)

    def onScaleThrottle(self, val):
        throttle = str(int(float(val)))
        self.throttlevar.set(throttle + "%")
        self.throttleval.set(throttle)

    def startSerial(self):
        try:
            serialThread.join()
        except:
            pass
        COM_Port = self.selected_s_Port.get()
        #print type(COM_Port)
        #print COM_Port
        if "COM" in COM_Port:
            self.textboxvar.set("Starting Serial on port " + self.selected_s_Port.get())
            serialThread = Thread(target=SerialComm, args=(COM_Port)) #probably want to pass the self.vars?
            serialThread.start()
            threads.append(serialThread)
            global serialStatus
            serialStatus = True
        else:
            self.textboxvar.set("Please select a port (current port: " + self.selected_s_Port.get() + ")")
            global serialStatus
            serialStatus = False

    def stopSerial(self):
        try:
            serialThread.join()
            global serialStatus
            serialStatus = False
        except:
            pass

    def startMotor(self): #gonna have to make this send a serial message (maybe a popup to confirm too
        if self.autovar.get(): #I'll give you 5 seconds to move your fingers out of the way
            print "Preparing to sweep throttle range in 5 seconds"
            self.textboxvar.set("Sweeping throttle range in 5 seconds")
            self.startmotor.set(True)
        else:
            print "starting motor at " + str(self.throttlevar.get()) + " percent"
            self.textboxvar.set("Starting motor at " + str(self.throttlevar.get()) + "% in 5 seconds")
            self.startmotor.set(True)

    def runMotor(self):
        #runmotor at specified throttle
        self.textboxvar.set("Running the motor is not implemented yet")
        pass

    def stopMotor(self):
        #stop motor
        print "Stopping motor"
        self.textboxvar.set("Stopping motor (not implemented yet)")
        self.startmotor.set(False)
        #self.throttlevar.set("0%") #not sure we want to reset the throttle value
        pass

    def saveData(self):
        #save to csv
        self.textboxvar.set("Saving logged data.")
        #for some reason putting this in a thread causes it to not crash, welp
        try:
          self.loggedData
        except AttributeError:
            self.textboxvar.set("No recorded data.")
        else:
            if messagebox.askokcancel("Save", "This will overwrite any data.csv file in the directory. Save anyways?"):
                def saveCSV():
                    l = self.loggedData
                    with open('data.csv', 'wb') as f:
                       wtr = csv.writer(f, delimiter= ';')
                       wtr.writerows( l )
                    time.sleep(2)
                    self.textboxvar.set("Data saved!")
                saveThread = Thread(target=saveCSV, args=())
                saveThread.start()

    def updateValues(self):
        #update motor values
        print "Updating motor values"
        self.textboxvar.set("Updating motor values (WIP)")
        pass

    def logData(self):
        if self.logstate.get():
            self.logButton.configure(text = 'Start Data Logging')
            self.logButton.configure(bg = 'blue')
            self.logstate.set(False)
        else:
            self.logButton.configure(text = 'Stop Data Logging')
            self.logButton.configure(bg = 'orange')
            self.logstate.set(True)
            #start data logging (probably some kind of thread)
            def logSerialData():
                self.loggedData = []
                global serialData
                l=[serialData[-1].keys()]
                self.textboxvar.set("Logging from arduino is not implemented yet")
                #apparently spamming these messages causes crashes, good to know
                while self.logstate.get() and (not exitapp):
                    print 'Logging Data'
                    time.sleep(1)
                    global serialData
                    data = serialData[-1].values()
                    #recieve and store data (pySerial)
                    l.append(data)
                    self.loggedData = l
                    
            logThread = Thread(target=logSerialData, args=())
            logThread.start()
            threads.append(logThread)