Example #1
2
class filterswindow:
    '''
    Interface graphique recapitulant les caracteristique du sismogramme
    presentant les options de filtrage et de calculs du noyau de sensibilite
    '''
    def __init__(self,racine):
        self.canvas = Canvas(racine, borderwidth=1, background="#ffffff")
        self.frame = Frame(self.canvas, background="#ffffff")
        self.vsb = Scrollbar(racine, orient="vertical", command=self.canvas.yview)
        self.canvas.configure(yscrollcommand=self.vsb.set)
        self.vsb.pack(side="right", fill="y")
        self.canvas.pack(side="left", fill="both", expand=True)
        self.canvas.create_window((4,4), window=self.frame, anchor="nw", tags="self.frame")

        self.frame.bind("<Configure>", self.OnFrameConfigure)

        self.data()
            
    def data(self):
        global filterVar
        filterVar = 1
        global text6a
        text6a = "1"
        global text6c1
        text6c1 = StringVar()
        global text6c2
        text6c2 = StringVar()
        global text6c3
        text6c3 = StringVar()
           
        Label(self.frame, text="Option Filter").grid(row=0)
        Label(self.frame, text="\n").grid(row=1)
        
        Label(self.frame, text="lowest frequency ?").grid(row=4)
        e1 = Entry(self.frame, textvariable=text6c1)
        e1.grid(row=5)
        
        Label(self.frame, text="highest frequency ?").grid(row=20)
        e2 = Entry(self.frame, textvariable=text6c2)
        e2.grid(row=21)
        
        Label(self.frame, text="number of poles ?").grid(row=22)
        e3 = Entry(self.frame, textvariable=text6c3)
        e3.grid(row=23)
                    
        Button(self.frame, text="continue", command=self.quitter).grid(row=24)
                  
    def quitter(self):
        global racine
        racine.destroy()
        afficheSismoFiltre(textPath.get(), float(text6c1.get()), float(text6c2.get()), float(text6c3.get()))
            
    def OnFrameConfigure(self, event):
        '''Reset the scroll region to encompass the inner frame'''
        self.canvas.configure(scrollregion=self.canvas.bbox("all"))
Example #2
0
    def __init__(self, filename, parentnotebook):
        """Create a new EditTab
        
        Argument
        filename -- name and path to the file being edited
        parentnotebook -- the NoteBook in which this tab will be added
        
        """
        Frame.__init__(self)
        self._filename = filename
        self._parentnotebook = parentnotebook
        self._inputs = []
        self.path = os.path.dirname(filename)
        self._dirty = False
        parentnotebook.add(self, state = 'normal')
        self._setLabel()

        #Set up GUI
        self.rowconfigure(0, weight = 1)        
        self.columnconfigure(0, weight = 1)
        
        vscroll = Scrollbar(self, orient = VERTICAL)
        self._vscroll = vscroll
        vscroll.grid(row=0, column=1, sticky=N+S)
        hscroll = Scrollbar(self, orient = HORIZONTAL)
        self._hscroll = hscroll
        hscroll.grid(row=1, column=0, sticky=E+W)

        canvas = Canvas(self, yscrollcommand = vscroll.set, xscrollcommand = hscroll.set)
        self._canvas = canvas
        canvas.grid(row = 0, column = 0, padx = 5, pady = 5, sticky = NSEW)

        vscroll['command'] = canvas.yview
        hscroll['command'] = canvas.xview

        scrollframe = Frame(canvas)
        self._scrollframe = scrollframe
        canvas.create_window(0, 0, window = scrollframe, anchor = N + W)

        scrollframe.rowconfigure(0, weight = 1)        
        scrollframe.columnconfigure(0, weight = 1)
                
        self._mainframe = Frame(scrollframe)
        self._mainframe.grid(row = 0, column = 0, padx = 5, pady = 5, sticky = NSEW)
        
        cf = Frame(scrollframe)
        self._control_frame = cf
        cf.grid(row = 1, column = 0, padx = 5, pady = 5, sticky = E)
        b = Button(cf, text = lang[lng.txtCopyImages], command = self._ehCopyImages)
        self._btnCopy = b
        b.grid(row = 0, column = 0, padx = 5, pady = 5)
        b = Button(cf, text = lang[lng.txtSave], command = self._ehSave, state = DISABLED)
        self._btnSave = b
        b.grid(row = 0, column = 1, padx = 5, pady = 5)
        b = Button(cf, text = lang[lng.txtClose], command = self._ehClose)
        b.grid(row = 0, column = 2, padx = 5, pady = 5)

        parentnotebook.after_idle(self._setCanvas)
Example #3
0
    def init_ui(self):
        self.rowconfigure(3, weight=1)
        self.columnconfigure(0, weight=1)
        self.button_load_type = Button(self, text="Load Type JSON", command=lambda: browse_file(self, 1, ))
        self.button_load_type.grid(
            row=0, columnspan=2, sticky=W + E, pady=4, padx=5)
        self.button_load_color = Button(
            self, text="Load Color JSON", command=lambda: browse_file(self, 2))
        self.button_load_color.grid(
            row=1, columnspan=2, sticky=W + E, pady=4, padx=5)
        button_load = Button(
            self, text="Load Images", command=lambda: browse_images(self))
        button_load.grid(row=2, columnspan=2, sticky=W + E, pady=4, padx=5)
        button_learn = Button(
            self,
            text="Test",
            command=
            lambda: start_testing(self.dtype, self.dcolor, self.picture_frames)
        )
        button_learn.grid(row=4, columnspan=2, sticky=W + E, pady=4, padx=5)

        canvas = Canvas(self)
        canvas.grid(row=3, sticky=W + E + N + S, column=0, pady=4, padx=5)

        frame = self.picture_frame = Frame(canvas)
        canvas.create_window(0, 0, window=frame, anchor='nw')

        scroll_bar = Scrollbar(self, orient="vertical", command=canvas.yview)
        scroll_bar.grid(sticky=E + N + S, padx=5, row=3, column=1)

        canvas.configure(yscrollcommand=scroll_bar.set)

        # track changes to the canvas and frame width and sync them,
        # also updating the scrollbar
        def _configure_interior(event):
            # update the scrollbars to match the size of the inner frame
            size = (frame.winfo_reqwidth(), frame.winfo_reqheight())
            canvas.config(scrollregion="0 0 %s %s" % size)
            if frame.winfo_reqwidth() != canvas.winfo_width():
                # update the canvas's width to fit the inner frame
                canvas.config(width=frame.winfo_reqwidth())

        frame.bind('<Configure>', _configure_interior)

        def _configure_canvas(event):
            if frame.winfo_reqwidth() != canvas.winfo_width():
                # update the inner frame's width to fill the canvas
                canvas.itemconfigure(frame, width=canvas.winfo_width())

        canvas.bind('<Configure>', _configure_canvas)
Example #4
0
class StartFrame(Frame):
    """Class which controls start screen of spelling aid"""
    def __init__(self, parent):
        Frame.__init__(self, parent)
        self.parent = parent
        #Create UI elements
        self.start_canvas = Canvas(self, width=600, height=250, bg="#FFFFFF")
        self.start_canvas.pack()

        buttonStart = Button(self, text="Start", width=10,
                                  command=self.start)
        buttonEdit = Button(self, text="Edit Lists",
                            command=self.parent.show_editor)
        self.list_menu_var = StringVar(self)
        self.list_menu_var.set("Random List")
        self.start_canvas.create_window(300, 200, window=buttonStart)
        self.menu = self.start_canvas.create_window(300, 150)
        self.start_canvas.create_window(520, 230, window=buttonEdit)
        self.start_canvas.create_text(300, 100, font=("Helvetica", 25),
                                      text="Select a list:")
        self.update_list()
        self.update()


    def start(self):
        """Start the game with the selected list"""
        self.parent.start_game(self.selected_list)

    def update(self, event=None):
        """Change the current list to match selection"""
        list_name = self.list_menu_var.get()
        for word_list in self.parent.list_list:
            if word_list.name == list_name:
                self.selected_list = word_list

    def update_list(self):
        """Refreshes the list of lists"""
        list_menu = OptionMenu(self, self.list_menu_var,
                               *self.parent.list_list, command=self.update)
        list_menu.configure(width=30)
        self.start_canvas.itemconfig(self.menu, window=list_menu)
        
        
    def welcomeMessage(self):
        """Show the welcome message"""
        self.start_canvas.create_text((10, 10), anchor=NW, text="Welcome, %s."
                                      %(self.parent.user.username),
                                      font=("Helvetica", 15))
Example #5
0
    class RecapCalculs:
        '''
        Interface graphique recapitulant les caracteristique du sismogramme
        presentant les options de filtrage et de calculs du noyau de sensibilite
        '''
        def __init__(self,root):
            self.canvas = Canvas(root, borderwidth=1, background="#ffffff")
            self.frame = Frame(self.canvas, background="#ffffff")
            self.vsb = Scrollbar(root, orient="vertical", command=self.canvas.yview)
            self.canvas.configure(yscrollcommand=self.vsb.set)
            self.vsb.pack(side="right", fill="y")
            self.canvas.pack(side="left", fill="both", expand=True)
            self.canvas.create_window((4,4), window=self.frame, anchor="nw", tags="self.frame")

            self.frame.bind("<Configure>", self.OnFrameConfigure)

            self.data()
        def data(self):
        
            self.message = Label(self.frame, text="Recapitulatif du sismogramme").grid(row=0)
         
            global X
            X=read(textPath.get())
          
            self.recap = Listbox(self.frame, height = 15, width = 50)
           
            self.recap.insert(1, "network: {}\n".format(X[0].stats.network))
            self.recap.insert(2, "station: {}\n".format(X[0].stats.station))
            self.recap.insert(3, "location: {}\n".format(X[0].stats.location))
            self.recap.insert(4, "channel: {}\n".format(X[0].stats.channel))
            self.recap.insert(5, "start time: {}\n".format(X[0].stats.starttime))
            self.recap.insert(6, "end time: {}\n".format(X[0].stats.endtime))
            self.recap.insert(7, "sampling rate: {}\n".format(X[0].stats.sampling_rate))
            self.recap.insert(8, "delta: {}\n".format(X[0].stats.delta))
            self.recap.insert(9, "number points: {}\n".format(X[0].stats.npts))
            self.recap.insert(10, "calibration: {}\n".format(X[0].stats.calib))
            self.recap.insert(11, "event latitude: {}\n".format(X[0].stats.sac.evla))
            self.recap.insert(12, "event longitude: {}\n".format(X[0].stats.sac.evlo))
            self.recap.insert(13, "event depth: {}\n".format(X[0].stats.sac.evdp))
            self.recap.insert(14, "station latitude: {}\n".format(X[0].stats.sac.stla))
            self.recap.insert(15, "station longitude: {}\n".format(X[0].stats.sac.stlo))
            self.recap.grid(row=0)
            
            #afficheGraphique()
        
        def OnFrameConfigure(self, event):
            '''Reset the scroll region to encompass the inner frame'''
            self.canvas.configure(scrollregion=self.canvas.bbox("all"))
Example #6
0
def addScrollingFigure(figure, frame):
    global canvas, mplCanvas, interior, interior_id, cwid
    # set up a canvas with scrollbars
    canvas = Canvas(frame)
    canvas.grid(row=1, column=1, sticky=Tkconstants.NSEW)

    xScrollbar = Scrollbar(frame, orient=Tkconstants.HORIZONTAL)
    yScrollbar = Scrollbar(frame)

    xScrollbar.grid(row=2, column=1, sticky=Tkconstants.EW)
    yScrollbar.grid(row=1, column=2, sticky=Tkconstants.NS)

    canvas.config(xscrollcommand=xScrollbar.set)
    xScrollbar.config(command=canvas.xview)
    canvas.config(yscrollcommand=yScrollbar.set)
    yScrollbar.config(command=canvas.yview)

    # plug in the figure
    figAgg = FigureCanvasTkAgg(figure, canvas)
    mplCanvas = figAgg.get_tk_widget()

    # and connect figure with scrolling region
    cwid = canvas.create_window(0, 0, window=mplCanvas, anchor=Tkconstants.NW)
    printBboxes("Init")
    changeSize(figure, 1)
    def __init__(self, parent, *args, **kw):
        Frame.__init__(self, parent, *args, **kw)
        vscrollbar = Scrollbar(self, orient=VERTICAL)
        vscrollbar.pack(fill=Y, side=RIGHT, expand=FALSE)
        canvas = Canvas(
            self, bd=0, highlightthickness=0, yscrollcommand=vscrollbar.set)
        canvas.pack(side=LEFT, fill=BOTH, expand=TRUE)
        vscrollbar.config(command=canvas.yview)
        canvas.xview_moveto(0)
        canvas.yview_moveto(0)
        self.interior = interior = Frame(canvas)
        interior_id = canvas.create_window(0, 0, window=interior, anchor=NW)
        self.canv = canvas  # @UndefinedVariable
        self.scroller = vscrollbar

        def _configure_interior(event):
            size = (interior.winfo_reqwidth(), interior.winfo_reqheight())
            canvas.config(scrollregion="0 0 %s %s" % size)
            if interior.winfo_reqwidth() != canvas.winfo_width():
                canvas.config(width=interior.winfo_reqwidth())
        interior.bind('<Configure>', _configure_interior)

        def _configure_canvas(event):
            if interior.winfo_reqwidth() != canvas.winfo_width():
                canvas.itemconfigure(interior_id, width=canvas.winfo_width())
        canvas.bind('<Configure>', _configure_canvas)
class ScrolledCanvas(Frame):
    """
    A scrolling canvas of frames with checkboxes.
    """
    def __init__(self, master, name=None, scrollregion=(0, 0, '5i', '5i'),
                 items=[], window_size=[160, 30], **canvaskw):
        Frame.__init__(self, master, name=name)

        self.scrollcanvas = Canvas(self, name='scrollcanvas',
                                   scrollregion=scrollregion, **canvaskw)
        self.yscroll = Scrollbar(self, name='yscroll',
                                 command=self.scrollcanvas.yview)
        self.scrollcanvas['yscrollcommand'] = self.yscroll.set
        self.yscroll.pack(side=RIGHT, fill=Y)
        self.scrollcanvas.pack(side=LEFT, fill=BOTH, expand=YES)
        self.items = dict.fromkeys(items)
        for n, i in enumerate(items):
            self.items[i] = {'frame': Frame(self, name=(i.lower() + '_frame'))}
            self.items[i]['frame'].config(relief=GROOVE, padding=5)
            self.items[i]['chbx'] = Checkbutton(self.items[i]['frame'],
                                                    name=(i.lower() + '_chbx'))
            self.items[i]['chbx']['text'] = i
            self.items[i]['chbx'].pack(side=LEFT, fill=X)
            y = window_size[1] / 2 + window_size[1] * n
            self.items[i]['window'] = self.scrollcanvas.create_window(0, y)
            self.scrollcanvas.itemconfigure(self.items[i]['window'],
                                            window=self.items[i]['frame'],
                                            anchor=W, width=window_size[0],
                                            height=window_size[1])
Example #9
0
    def __init__(self, parent, *args, **kw):
        Frame.__init__(self, parent, *args, **kw)
        vscrollbar = Scrollbar(self, orient=VERTICAL)
        vscrollbar.pack(fill=Y, side=RIGHT, expand=FALSE)
        canvas = Canvas(self,
                        bd=0,
                        highlightthickness=0,
                        yscrollcommand=vscrollbar.set)
        canvas.pack(side=LEFT, fill=BOTH, expand=TRUE)
        vscrollbar.config(command=canvas.yview)
        canvas.xview_moveto(0)
        canvas.yview_moveto(0)
        self.interior = interior = Frame(canvas)
        interior_id = canvas.create_window(0, 0, window=interior, anchor=NW)
        self.canv = canvas  # @UndefinedVariable
        self.scroller = vscrollbar

        def _configure_interior(event):
            size = (interior.winfo_reqwidth(), interior.winfo_reqheight())
            canvas.config(scrollregion="0 0 %s %s" % size)
            if interior.winfo_reqwidth() != canvas.winfo_width():
                canvas.config(width=interior.winfo_reqwidth())

        interior.bind('<Configure>', _configure_interior)

        def _configure_canvas(event):
            if interior.winfo_reqwidth() != canvas.winfo_width():
                canvas.itemconfigure(interior_id, width=canvas.winfo_width())

        canvas.bind('<Configure>', _configure_canvas)
Example #10
0
    def __init__(self, parent, *args, **kw):
        Frame.__init__(self, parent, *args, **kw)

        # create a canvas object and a vertical scrollbar for scrolling it
        vscrollbar = Scrollbar(self, orient=Tkinter.VERTICAL)
        vscrollbar.pack(fill=Tkinter.Y,
                        side=Tkinter.RIGHT,
                        expand=Tkinter.FALSE)

        hscrollbar = Scrollbar(self, orient=Tkinter.HORIZONTAL)
        hscrollbar.pack(fill=Tkinter.X,
                        side=Tkinter.BOTTOM,
                        expand=Tkinter.FALSE)

        canvas = Canvas(self,
                        bd=0,
                        highlightthickness=0,
                        yscrollcommand=vscrollbar.set,
                        xscrollcommand=hscrollbar.set)
        canvas.pack(side=Tkinter.LEFT, fill=Tkinter.BOTH, expand=Tkinter.TRUE)
        vscrollbar.config(command=canvas.yview)
        hscrollbar.config(command=canvas.xview)

        # reset the view

        canvas.xview_moveto(0)
        canvas.yview_moveto(0)

        # create a frame inside the canvas which will be scrolled with it

        self.interior = interior = Frame(canvas)
        interior_id = canvas.create_window(0,
                                           0,
                                           window=interior,
                                           anchor=Tkinter.NW)

        # track changes to the canvas and frame width and sync them,
        # also updating the scrollbar

        def _configure_interior(event):
            '''
            update the scrollbars to match the size of the inner frame
            '''
            size = (interior.winfo_reqwidth(), interior.winfo_reqheight())
            canvas.config(scrollregion='0 0 %s %s' % size)
            if interior.winfo_reqwidth() != canvas.winfo_width():
                # update the canvas's width to fit the inner frame
                canvas.config(width=interior.winfo_reqwidth())

        interior.bind('<Configure>', _configure_interior)

        def _configure_canvas(event):
            '''
            _configure_canvas is used to resize the window size to fit content.
            Can be used when changing window.
            '''

            if interior.winfo_reqwidth() != canvas.winfo_width():
                # update the inner frame's width to fill the canvas
                canvas.itemconfigure(interior_id, width=canvas.winfo_width())
Example #11
0
    def __init__(self, parent, *args, **kw):
        Frame.__init__(self, parent, *args, **kw)
        # create a canvas object and a vertical scrollbar for scrolling it
        vscrollbar = Scrollbar(self, orient=VERTICAL)
        vscrollbar.pack(fill=Y, side=RIGHT, expand=FALSE)
        canvas = Canvas(self, bd=0, highlightthickness=0,
                        yscrollcommand=vscrollbar.set)
        canvas.pack(side=LEFT, fill=BOTH, expand=TRUE)
        vscrollbar.config(command=canvas.yview)

        # reset the view
        canvas.xview_moveto(0)
        canvas.yview_moveto(0)

        # create a frame inside the canvas which will be scrolled with it
        self.interior = interior = Frame(canvas)
        interior_id = canvas.create_window(0, 0, window=interior,
                                           anchor=NW)

        # track changes to the canvas and frame width and sync them,
        # also updating the scrollbar
        def _configure_interior(event=None):
            # update the scrollbars to match the size of the inner frame
            size = (interior.winfo_reqwidth(), interior.winfo_reqheight())
            canvas.config(scrollregion="0 0 %s %s" % size)
            if interior.winfo_reqwidth() != canvas.winfo_width():
                # update the canvas's width to fit the inner frame
                canvas.config(width=interior.winfo_reqwidth())
        interior.bind('<Configure>', _configure_interior)

        def _configure_canvas(event=None):
            if interior.winfo_reqwidth() != canvas.winfo_width():
                # update the inner frame's width to fill the canvas
                canvas.itemconfigure(interior_id, width=canvas.winfo_width())
        canvas.bind('<Configure>', _configure_canvas)
Example #12
0
    def __init__(self, parent):
        master = Frame(parent, bg = 'green')
        master.grid(sticky = W + N + E + S)
        master.rowconfigure(0, weight = 1)
        master.columnconfigure(0, weight = 1)
        
        canvas = Canvas(master)
        self._canvas = canvas
        canvas.grid(row = 0, column = 0, sticky = W + N + E + S)
        hScroll = Scrollbar(master, orient = HORIZONTAL, command = canvas.xview)
        hScroll.grid(row = 1, column = 0, sticky = W + E)
        vScroll = Scrollbar(master, orient = VERTICAL, command = canvas.yview)
        vScroll.grid(row = 0, column = 1, sticky = N + S)

        canvas.configure(xscrollcommand = hScroll.set, yscrollcommand = vScroll.set)
        Frame.__init__(self, canvas, bg = 'blue')
        canvas.create_window(0, 0, window = self, anchor = N + W)
Example #13
0
class StartFrame(Frame):

    def __init__(self, parent):
        Frame.__init__(self, parent)
        self.parent = parent
        self.start_canvas = Canvas(self, width=600, height=250, bg="#FFFFFF")
        self.start_canvas.pack()

        buttonStart = Button(self, text="Start", width=10,
                                  command=self.start)
        buttonEdit = Button(self, text="Edit Lists",
                            command=self.parent.show_editor)
        self.list_menu_var = StringVar(self)
        self.list_menu_var.set("Random List")
        self.start_canvas.create_window(300, 200, window=buttonStart)
        self.menu = self.start_canvas.create_window(300, 150)
        self.start_canvas.create_window(520, 230, window=buttonEdit)
        self.start_canvas.create_text(300, 100, font=("Helvetica", 25),
                                      text="Select a list:")
        self.update_list()
        self.update()


    def start(self):
        self.parent.start_game(self.selected_list)

    def update(self, event=None):
        list_name = self.list_menu_var.get()
        for word_list in self.parent.list_list:
            if word_list.name == list_name:
                self.selected_list = word_list

    def update_list(self):
        list_menu = OptionMenu(self, self.list_menu_var,
                               *self.parent.list_list, command=self.update)
        list_menu.configure(width=30)
        self.start_canvas.itemconfig(self.menu, window=list_menu)
        
        
    def welcomeMessage(self):
        self.start_canvas.create_text((10, 10), anchor=NW, text="Welcome, %s."
                                      %(self.parent.user.username),
                                      font=("Helvetica", 15))
Example #14
0
def StartUI():
    def close_window():
        # print(entry.get())
        name = entry.get()
        data = {"Name": name}
        pickle.dump
        file = open("Name.txt", 'wb')
        pickle.dump(data, file)
        root.destroy()
        # quit()

    root = Tk()
    # quit()
    entry_pady = 9
    height_text = 5
    photoimage2 = ImageTk.PhotoImage(file='pops.png')
    root.title('Harp')
    canvas = Canvas(root,
                    width=600,
                    height=500,
                    bg="Green",
                    bd="0",
                    highlightthickness=0,
                    relief='ridge')
    canvas.create_image((0, 0), image=photoimage2, anchor="nw")
    canvas.pack()
    root.geometry("+250+250")
    root.overrideredirect(True)
    root.wm_attributes("-transparentcolor", "Green")
    root.lift()
    entry = Entry(canvas, background="white")
    button = Button(canvas,
                    background="white",
                    text="Submit",
                    command=close_window)
    canvas.create_window((125, 40 + height_text + entry_pady + 90),
                         window=entry,
                         anchor="nw")
    canvas.create_window((265, 40 + height_text + entry_pady + 85),
                         window=button,
                         anchor="nw")
    root.mainloop()
Example #15
0
def run():
    """
    Esegue l'emulatore del pdp8
    """
    CD = pdp8()
    principale = Tk()
    principale.title("Pdp8 Emulator : Assembly Editor")
    emulatore = Toplevel()
    emulatore.title("Pdp8 Emulator")
    emulatore.geometry("1015x589")

    edit = Editor(principale, CD)

    scrollbar1 = AutoScrollbar(emulatore)
    scrollbar1.grid(row=0, column=1, sticky=N + S)
    scrollbar2 = AutoScrollbar(emulatore, orient=HORIZONTAL)
    scrollbar2.grid(row=1, column=0, sticky=E + W)

    finestra = Canvas(emulatore,
                      yscrollcommand=scrollbar1.set,
                      xscrollcommand=scrollbar2.set)
    finestra.grid(row=0, column=0, sticky=N + S + E + W)

    scrollbar1.config(command=finestra.yview)
    scrollbar2.config(command=finestra.xview)

    emulatore.grid_rowconfigure(0, weight=1)
    emulatore.grid_columnconfigure(0, weight=1)

    emul = Emulatore(finestra, edit, CD, emulatore)

    finestra.create_window(0, 0, anchor=NW, window=emul.master)

    emul.master.update_idletasks()

    finestra.config(scrollregion=finestra.bbox("all"))

    principale.protocol("WM_DELETE_WINDOW", edit.exit)
    emulatore.protocol("WM_DELETE_WINDOW", emul.exit)

    principale.mainloop()
    emulatore.mainloop()
Example #16
0
def run():
    """
    Esegue l'emulatore del pdp8
    """
    CD = pdp8()
    principale = Tk()
    principale.title("Pdp8 Emulator : Assembly Editor")
    emulatore = Toplevel()
    emulatore.title("Pdp8 Emulator")
    emulatore.geometry("1015x589")

    edit = Editor(principale, CD)

    scrollbar1 = AutoScrollbar(emulatore)
    scrollbar1.grid(row=0, column=1, sticky=N + S)
    scrollbar2 = AutoScrollbar(emulatore, orient=HORIZONTAL)
    scrollbar2.grid(row=1, column=0, sticky=E + W)

    finestra = Canvas(emulatore,
                      yscrollcommand=scrollbar1.set,
                      xscrollcommand=scrollbar2.set)
    finestra.grid(row=0, column=0, sticky=N + S + E + W)

    scrollbar1.config(command=finestra.yview)
    scrollbar2.config(command=finestra.xview)

    emulatore.grid_rowconfigure(0, weight=1)
    emulatore.grid_columnconfigure(0, weight=1)

    emul = Emulatore(finestra, edit, CD, emulatore)

    finestra.create_window(0, 0, anchor=NW, window=emul.master)

    emul.master.update_idletasks()

    finestra.config(scrollregion=finestra.bbox("all"))

    principale.protocol("WM_DELETE_WINDOW", edit.exit)
    emulatore.protocol("WM_DELETE_WINDOW", emul.exit)

    principale.mainloop()
    emulatore.mainloop()
Example #17
0
    def __init__(self, parent, *args, **kw):
        Frame.__init__(self, parent, *args, **kw)

        # create a canvas object and a vertical scrollbar for scrolling it
        vscrollbar = Scrollbar(self, orient=Tkinter.VERTICAL)
        vscrollbar.pack(fill=Tkinter.Y, side=Tkinter.RIGHT, expand=Tkinter.FALSE)

        hscrollbar = Scrollbar(self, orient=Tkinter.HORIZONTAL)
        hscrollbar.pack(fill=Tkinter.X, side=Tkinter.BOTTOM, expand=Tkinter.FALSE)

        canvas = Canvas(self, bd=0, highlightthickness=0,
                        yscrollcommand=vscrollbar.set, xscrollcommand=hscrollbar.set)
        canvas.pack(side=Tkinter.LEFT, fill=Tkinter.BOTH, expand=Tkinter.TRUE)
        vscrollbar.config(command=canvas.yview)
        hscrollbar.config(command=canvas.xview)


        # reset the view

        canvas.xview_moveto(0)
        canvas.yview_moveto(0)

        # create a frame inside the canvas which will be scrolled with it

        self.interior = interior = Frame(canvas)
        interior_id = canvas.create_window(0, 0, window=interior, anchor=Tkinter.NW)

        # track changes to the canvas and frame width and sync them,
        # also updating the scrollbar

        def _configure_interior(event):

            '''
            update the scrollbars to match the size of the inner frame
            '''
            size = (interior.winfo_reqwidth(), interior.winfo_reqheight())
            canvas.config(scrollregion='0 0 %s %s' % size)
            if interior.winfo_reqwidth() != canvas.winfo_width():
                # update the canvas's width to fit the inner frame
                canvas.config(width=interior.winfo_reqwidth())
        interior.bind('<Configure>', _configure_interior)

        def _configure_canvas(event):

            '''
            _configure_canvas is used to resize the window size to fit content.
            Can be used when changing window.
            '''

            if interior.winfo_reqwidth() != canvas.winfo_width():
                # update the inner frame's width to fill the canvas
                canvas.itemconfigure(interior_id, width=canvas.winfo_width())
Example #18
0
class MixerFrame(Frame):
    def __init__(self, master, mixer):
        Frame.__init__(self, master)

        scrollbar_h = Scrollbar(self, orient='horizontal')
        scrollbar_v = Scrollbar(self, orient='vertical')
        self.canvas = Canvas(self,
                             background='gray',
                             scrollregion=(0, 0, (3 + len(mixer) * FADER_WIDTH), FADER_HEIGHT),
                             yscrollcommand=scrollbar_v.set,
                             xscrollcommand=scrollbar_h.set)

        scrollbar_v.config(command=self.canvas.yview)
        scrollbar_h.config(command=self.canvas.xview)

        master.bind("<MouseWheel>",
                         lambda e: self.canvas.yview_scroll(-e.delta, 'units'))
        master.bind("<Shift-MouseWheel>",
                         lambda e: self.canvas.xview_scroll(-e.delta, 'units'))

        Sizegrip(self).grid(column=2, row=1, sticky='se')
        self.canvas.grid(column=0, row=0, sticky='nwes')
        scrollbar_h.grid(column=0, row=1, sticky='we')
        scrollbar_v.grid(column=1, row=0, sticky='sn')

        master_fader = AudioFader(self, mixer.getVolume, mixer.setVolume, "Master")
        master_fader.grid(column=2, row=0, sticky='nwes')

        self.grid_columnconfigure(0, weight=1)
        self.grid_rowconfigure(0, weight=1)

        for i, channel in enumerate(mixer):
            if channel.device.id_variable is not None:
                name = channel.device.id_variable
            else:
                name = channel.device.name_id

            fader = AudioFader(self.canvas, channel.get_gain, channel.set_gain, name)
            self.canvas.create_window(i * FADER_WIDTH, 0, anchor='nw', window=fader)
Example #19
0
class VerticalScrolledFrame(Frame):
    """A pure Tkinter scrollable frame that actually works!

    * Use the 'interior' attribute to place widgets inside the scrollable frame
    * Construct and pack/place/grid normally
    * This frame only allows vertical scrolling
    
    """
    def _configure_interior(self, event):
        # update the scrollbars to match the size of the inner frame
        size = (self.interior.winfo_reqwidth(),
                self.interior.winfo_reqheight())
        self.canvas.config(scrollregion="0 0 %s %s" % size)
        if self.interior.winfo_reqwidth() != self.canvas.winfo_width():
            # update the canvas's width to fit the inner frame
            self.canvas.config(width=self.interior.winfo_reqwidth())
        self.interior.bind('<Configure>', _configure_interior)

    def _configure_canvas(self, event):
        if self.interior.winfo_reqwidth() != self.canvas.winfo_width():
            # update the inner frame's width to fill the canvas
            self.canvas.itemconfigure(self.interior_id,
                                      width=self.canvas.winfo_width())
        self.canvas.bind('<Configure>', _configure_canvas)
        return

    def configure_scrolling(self):
        # create a canvas object and a vertical scrollbar for scrolling it
        vscrollbar = Scrollbar(self, orient='vertical')
        vscrollbar.grid(row=0, column=1, sticky='nsw')
        self.canvas = Canvas(self,
                             bd=0,
                             highlightthickness=0,
                             yscrollcommand=vscrollbar.set)
        self.canvas.grid(row=0, column=0, sticky='nsew')
        vscrollbar.config(command=self.canvas.yview)

        # reset the view
        self.canvas.xview_moveto(0)
        self.canvas.yview_moveto(0)

        # create a frame inside the canvas which will be scrolled with it
        self.interior = interior = Frame(self.canvas)
        self.interior.grid(row=0, column=0, sticky='nsew')
        self.interior_id = self.canvas.create_window(0,
                                                     0,
                                                     window=interior,
                                                     anchor='nw')
Example #20
0
class VerticalScrolledFrame(Frame):
    """A pure Tkinter scrollable frame that actually works!

    * Use the 'interior' attribute to place widgets inside the scrollable frame
    * Construct and pack/place/grid normally
    * This frame only allows vertical scrolling
    
    """
    def _configure_interior(self,event):
        # update the scrollbars to match the size of the inner frame
        size = (self.interior.winfo_reqwidth(), self.interior.winfo_reqheight())
        self.canvas.config(scrollregion="0 0 %s %s" % size)
        if self.interior.winfo_reqwidth() != self.canvas.winfo_width():
            # update the canvas's width to fit the inner frame
            self.canvas.config(width=self.interior.winfo_reqwidth())
        self.interior.bind('<Configure>', _configure_interior)

    def _configure_canvas(self,event):
        if self.interior.winfo_reqwidth() != self.canvas.winfo_width():
            # update the inner frame's width to fill the canvas
            self.canvas.itemconfigure(self.interior_id, width=self.canvas.winfo_width())
        self.canvas.bind('<Configure>', _configure_canvas)
        return

    def configure_scrolling(self):
        # create a canvas object and a vertical scrollbar for scrolling it
        vscrollbar = Scrollbar(self, orient='vertical')
        vscrollbar.grid(row=0,column=1,sticky='nsw')
        self.canvas = Canvas(self, bd=0, highlightthickness=0,
                        yscrollcommand=vscrollbar.set)
        self.canvas.grid(row=0,column=0,sticky='nsew')
        vscrollbar.config(command=self.canvas.yview)

        # reset the view
        self.canvas.xview_moveto(0)
        self.canvas.yview_moveto(0)

        # create a frame inside the canvas which will be scrolled with it
        self.interior = interior = Frame(self.canvas)
        self.interior.grid(row=0,column=0,sticky='nsew')
        self.interior_id = self.canvas.create_window(0, 0, window=interior,
                                           anchor='nw')
Example #21
0
 def __init__(self):
     self.dimx = 0
     self.dimy = 0
     self.popup_dim = Tk()
     self.popup_dim.title("Dimensions")
     center(self.popup_dim, 200, 120)
     self.popup_dim.resizable(False, False)
     canvas = Canvas(self.popup_dim, width=200, height=120, bg="#eff")
     dimx = Entry(self.popup_dim, width=5, relief="raised")
     dimy = Entry(self.popup_dim, width=5, relief="raised")
     ok = Button(self.popup_dim, text="OK",
                 command=lambda: self.setrootdimension(dimx.get(), dimy.get()),
                 width=1, font="../font/myfont 6 bold", fg="#eee")
     canvas.create_window(100, 30, window=dimx)
     canvas.create_text(65, 30, text="X=")
     canvas.create_window(100, 60, window=dimy)
     canvas.create_text(65, 60, text="Y=")
     canvas.create_window(100, 85, window=ok)
     canvas.pack()
Example #22
0
class GetRoot:
    def __init__(self, root, dimx, dimy):
        self.root = root
        self.root.title("Projet Python DIC1")
        center(self.root, dimx, dimy)
        self.dimx = dimx
        self.dimy = dimy
        self.canvas = Canvas(self.root, width=self.dimx, height=self.dimy, bg="#eee")

    def root_fermer(self):
        if askyesno('Confirmer la fermeture', 'Êtes-vous sûr de vouloir quitter?'):
            self.root.quit()

    def clear_root(self):
        for w in self.root.winfo_children():
            w.destroy()

    def presentation(self):
        self.canvas.create_text(self.dimx / 2, self.dimy / 2, text="Mamour Tall - Cheikh Tidiane Diop")
        self.canvas.pack()

    def navigation(self):
        bouton_effacer = Button(self.root, text="Effacer", relief="raised", font="/font/myfont 8 bold",
                                command=lambda: self.clear_root,
                                bg="#eee", fg="black", activebackground="#dcc")

        bouton_prec = Button(self.root, text="Precedent", relief="raised", font="/font/myfont 8 bold",
                             command="",
                             bg="#eee", fg="black", activebackground="#dcc")
        bouton_quitt = Button(self.root, text="Quitter", command=self.root_fermer, relief="raised",
                              font="/font/myfont 8 bold",
                              bg="#eee",
                              fg="black", activebackground="#dcc")
        bouton_effacer.pack()
        bouton_prec.pack()
        bouton_quitt.pack()
        self.canvas.create_window(self.dimx / 2 + 18, self.dimy - 20, window=bouton_effacer)
        self.canvas.create_window(60, self.dimy - 20, window=bouton_prec)
        self.canvas.create_window(self.dimx - 40, self.dimy - 20, window=bouton_quitt)
def draw_board(root):

    """
      Create the graphical user interface.
    """

    # provide the title that will be shown in the header
    root.title("Mastermind")

    # Indicate which variables of the program will be altered
    # ! In order to manipulate variables that are part of the program
    # ! but exist outside of the function, you need to indicate that you want
    # ! to use and alter these variables by declaring them as "global"
    global canvas, ovals, matching_position_label, correct_color_label

    # canvas will be the main board used for mastermind
    # ! to create a canvas, the constructor is called
    # ! (i.e. name of the class and required parameters)
    canvas = Canvas(root, bg="white", height=MAX_NUMBER_OF_MOVES*40+170, width=NUMBER_OF_CIRCLES*50+100)

    # Draw the empty circles representing the guesses
    ovals = MasterMindAsked.create_empty_circles(canvas, NUMBER_OF_CIRCLES, MAX_NUMBER_OF_MOVES)

    # Draw a line to separate the circles form the buttons
    canvas.create_line(NUMBER_OF_CIRCLES*50, 10, NUMBER_OF_CIRCLES*50, 400, width=3, fill="black")

    # Draw the color buttons that will be used throughout the game
    # ! Every available color (listed here as strings in the global variable
    # ! ALL_COLORS) is represented in the GUI by a button
    # ! when the user clicks the button the function color(color_name)
    # ! is called
    for i in range(len(ALL_COLORS)):
        canvas.create_window(NUMBER_OF_CIRCLES*50+10, 20+i*45, anchor=NW, window=Button(canvas, command=lambda color_name=ALL_COLORS[i]: color(color_name), width=5, text=ALL_COLORS[i]))

    # Draw the result labels
    # ! matching_position_label and correct_color_label can be used later on
    # ! to show the user the number of correct positions and colors
    # ! (e.g. matching_position_label["text"] = "2")
    canvas.create_window(50, MAX_NUMBER_OF_MOVES*40+30, anchor=NW,
                         window=Label(canvas, text="Correct position: "))
    matching_position_label = Label(canvas)
    canvas.create_window(200, MAX_NUMBER_OF_MOVES*40+30, anchor=NW, window=matching_position_label)

    canvas.create_window(50, MAX_NUMBER_OF_MOVES*40+60, anchor=NW,
                         window=Label(canvas, text="Correct color: "))
    correct_color_label = Label(canvas)
    canvas.create_window(200, MAX_NUMBER_OF_MOVES*40+60, anchor=NW, window=correct_color_label)

    # Draw the submit button
    # ! when the user clicks the button,
    # ! the function check_combination is called
    submit_button = Button(canvas, text="Check", command=check_combination)
    submit_button.configure(width=10, relief=FLAT)
    canvas.create_window(50, MAX_NUMBER_OF_MOVES*40+90, anchor=NW, window=submit_button)


    # Draw the quit button
    quit_button = Button(canvas, text="Quit", command=root.destroy)
    quit_button.configure(width=5, relief=FLAT)
    canvas.create_window(200, MAX_NUMBER_OF_MOVES*40+130, anchor=NW, window=quit_button)

    # draw the canvas
    canvas.pack()
Example #24
0
    def initialize(self):
		#create canvas with specified size and add 
        w = Canvas(self, width=700, height=600)
        w.pack()
	
		#Declare two lists, one for front labels, anthoer for answer labels
        self.flabels = []
        self.alabels = []
		#Define x and y cordinates for lables
        self.flblx = 280
        self.flbly = 40
        self.alblx = 380
        self.albly = 40

		#Dummy list1
        self.my_list = []
	
		#Text to set on front lables
        self.str_label = ['POTI0', 'POTI1','POTI2','POTI3','POTI4']
	
		#Trigger to check if we want to program or pause
        self.running = True
        
		#Define environment varibales for input text fields
		#We can change/update this during runtime
        self.entry_pot_var = Tkinter.StringVar()
        self.entry_res_var = Tkinter.StringVar()
		
		#Define text areas for input onr for poti selection and one for resistence value
        self.entry_pot = Entry(self,textvariable=self.entry_pot_var, validate="focusout")
        self.entry_res = Entry(self,textvariable=self.entry_res_var, validate="focusout")

		#Initial text to display on above text fields
        self.entry_pot_var.set("Enter Pot selection")
        self.entry_res_var.set("Enter resistor value - 2000 to 100000") 

		#Set pot selection entry as highlighted
        self.entry_pot.selection_range(0,Tkinter.END)
        #self.entry_res.selection_range(0,Tkinter.END)

		#Set keyboard focus on pot text field
        self.entry_pot.focus_set()

		#Add pot text field to canvas
        self.entry_pot.pack()
		
		#ToDO
		#validate input for pot selection
        #self.entry_pot["validatecommand"] = (self.register(self.check_pot), "%P")
		
		#Add resistence text field to canvas
        self.entry_res.pack()
        
		#Create two text on the canvas with x and y coodrinates
        w.create_window(120, 40, window=self.entry_pot)
        w.create_window(120, 70,window=self.entry_res)

		#We declare 5 front lables and add them to canvas with x and y co ordinates
        for x in range(5):
            print self.str_label[x]
            self.label = Label(self, text=self.str_label[x], fg='white', bg='black')
            self.label.pack()
            self.flabels.append(self.label)

		#We declare 5 answer lables and add them to canvas with x and y co ordinates
        for x in range(5):
            self.label = Label(self, text='values', fg='white', bg='blue')
            self.label.pack()
            self.alabels.append(self.label)

		#Create front label in canvas
        for label in self.flabels:
            w.create_window(self.flblx,self.flbly,window=label)
            self.flbly = self.flbly + 19

		#Create answer label in cavas
        for label in self.alabels:
            w.create_window(self.alblx,self.albly,window=label)
            self.albly = self.albly + 20

		###
		#Button definitions
		###
		#Start button, and add callback to start_app function when this button is clicked
        self.start_button = Button(self, text="Set", height=2, width=10, command=self.start_app)
        self.start_button.pack()

		#Clear button, and add callback to clear_app function when this button is clicked
        self.clear_button = Button(self, text="Clear", height=2, width=10, command=self.clear_app, state="disabled")
        self.clear_button.pack()

		#Clear button, and add quit function of tkinter master when this button is clicked
        self.close_button = Button(self, text="Close", height=2, width=10, command=self.quit)
        self.close_button.pack()

        #Add buttons to canvas
        w.create_window(70, 170, window=self.start_button)
        w.create_window(190, 170, window=self.close_button)
        w.create_window(310, 170, window=self.clear_button)
Example #25
0
photoimage = ImageTk.PhotoImage(image)
Label(root, image=photoimage).place(x=0, y=0)

entry_pady = 7
Entry(root, background="white").place(x=text_x,
                                      y=text_y + height_text + entry_pady)

###################################################
# Another example

toplevel = Toplevel(root)
toplevel.resizable(width=False, height=False)

image_file = io.BytesIO(base64.b64decode(BASE64_BACKGROUND))
image = Image.open(image_file)

photoimage2 = ImageTk.PhotoImage(image)

canvas = Canvas(toplevel, width=width, height=height)
canvas.create_image((0, 0), image=photoimage2, anchor="nw")
canvas.create_text((text_x, text_y), text=text, fill="white", anchor="nw")
canvas.pack()

entry = Entry(canvas, background="white")
canvas.create_window((text_x, text_y + height_text + entry_pady),
                     window=entry,
                     anchor="nw")

root.mainloop()
Example #26
0
class LoginFrame(Frame):
    
    def __init__(self, parent):

        Frame.__init__(self, parent)
        self.parent = parent
        self.db = self.parent.db
    
        font = ("Helvetica", 20)
        self.userEntry = Entry(self.parent, width=15, font=font)
        self.passEntry = Entry(self.parent, width=15, show='*', font=font)
        self.passEntry.bind('<Return>', self.login)
        buttonSubmit = Button(self.parent, text="Login", command=self.login, width=10)
        buttonRegSwitch = Button(self.parent, text="New User",
                                 command=self.viewRegister, width=10)

        self.userRegEntry = Entry(self.parent, width=15, font=font)
        self.passRegEntry = Entry(self.parent, width=15, show='*',
                                  font=font)
        self.passRegEntry.bind('<Return>', self.register)
        buttonRegister = Button(self.parent, text="Register",
                                command=self.register, width=10)
        buttonBack = Button(self.parent, text="Back",
                            command=self.viewLogin, width=10)
        
        self.login_canvas = Canvas(self, width=600, height=250, bg="#FFFFFF")
        self.register_canvas = Canvas(self, width=600, height=250, bg="#FFFFFF")
       
        self.login_canvas.create_text(300, 40, text="Login", font=font, fill="#004183")
        self.login_canvas.create_text(170, 80, text="Username:"******"Password:"******"Register", font=font, fill="#004183")
        self.register_canvas.create_text(170, 80, text="Username:"******"Password:"******"""SELECT * FROM
                                  users WHERE username='******'"""
                                  %(usernameGiven.lower().strip()))
        if len(userDetails)==1:
            passHash = userDetails[0][2]
            if (hashlib.sha1(passwordGiven).hexdigest() == passHash):
                self.parent.login(User(userDetails[0]))
                loginFailed = False
            else:
                loginFailed = True
        else:
            loginFailed = True
        if loginFailed:
            tkMessageBox.showerror("Login Failed",
                                   "Invalid username or password")
            self.userEntry.delete(0, END)
            self.passEntry.delete(0, END)

    def register(self):
        username = self.userRegEntry.get()
        passwd = self.passRegEntry.get()
        if username != '' and passwd != '':
            username = username.lower().strip()
            passHash = hashlib.sha1(passwd).hexdigest()
            self.db.sql("""INSERT INTO users (username, passwd) VALUES 
                        ('%s', '%s')"""%(username, passHash))
            self.viewLogin()

    def viewRegister(self):
        self.login_canvas.pack_forget()
        self.register_canvas.pack()

    def viewLogin(self):
        self.register_canvas.pack_forget()
        self.login_canvas.pack()
Example #27
0
    def __init__(self):
        def onresize(event):
            data_canvas.configure(scrollregion=data_canvas.bbox("all"))
            self.root.update_idletasks()

        def on_mousewheel(event):
            data_canvas.yview_scroll(-1 * (event.delta / 120), "units")
            self.root.update_idletasks()

        self.root = Tk()
        self.root.wm_title("Micro-Tensile Testing Machine")
        self.root.state("zoomed")

########################################################################################################################
        # Title
        header = Frame(self.root)
        Label(header, text="Micro-Tensile Testing Machine", font=("Helvetica", 40, "bold"), bg="green", relief=RAISED).grid(row=0)
        header.columnconfigure(0, weight=1)
        header.grid(row=0, sticky=E + W)
########################################################################################################################
        # Parameters
        par_frame = Frame(self.root)
        choice_frame = Frame(par_frame, bd=2, relief=RAISED)
        self.choice = IntVar()
        self.choice.set(1)
        Radiobutton(choice_frame, text="ELONGATION", font=("Courier", 15),
                    variable=self.choice, value=1).grid(row=0, column=0, padx=50)
        Radiobutton(choice_frame, text="BENDING", font=("Courier", 15),
                    variable=self.choice, value=2).grid(row=1, column=0, padx=50)
        choice_frame.grid(row=0, column=0, sticky=W)

        spec_frame = Frame(par_frame, bd=2, relief=RAISED)
        Label(spec_frame, text="Specimen\nDimensions", font=("arial", 15)).grid(row=0, column=0, rowspan=2)
        Label(spec_frame, text="LENGTH(mm)", font=("Courier", 15),
              relief=SUNKEN, bg="yellow", fg="brown").grid(row=0, column=1, ipadx=5, ipady=1)
        self.L = Entry(spec_frame, fg="blue", font=("Courier", 15), width=7)
        self.L.insert(0, 25.4)
        self.L.grid(row=0, column=2)
        Label(spec_frame, text="Area(mm^2)", font=("Courier", 15),
              relief=SUNKEN, bg="yellow", fg="brown").grid(row=1, column=1, ipadx=5, ipady=1)
        self.area_box = Entry(spec_frame, fg="blue", font=("Courier", 15), width=7)
        self.area_box.insert(0, 40.3765)
        self.area_box.grid(row=1, column=2)
        spec_frame.grid(row=0, column=1, rowspan=2, sticky=E)
        par_frame.grid_columnconfigure(1, weight=1)
        par_frame.grid(row=1, sticky=E + W)
########################################################################################################################
        # Main Frame containing Curve and data display
        curve = Frame(self.root)

        self.no_reading = 0
        # Stress, Strain value arrays
        self.stress = np.array([0.0])
        self.strain = np.array([0.0])

        # Figure

        main_curve = plot.figure(figsize=(18.5, 10))
        gs = gridspec.GridSpec(1, 2, width_ratios=[3, 2])

        ###################################################################
        # # Live diagram
        live_plot = main_curve.add_subplot(gs[0, 0])
        live_plot.set_title("Live Diagram")
        live_plot.grid(True)
        live_plot.set_xlabel("in mm")
        live_plot.set_xlim([0, float(self.L.get())])
        live_plot.set_ylim([0, 50.0])  # Set y axis limits for live diagram

        self.lines = live_plot.plot([0.0], [0.0], 'b-', [0.0], [0.0], 'r--')
        self.live_plot = live_plot
        ###################################################################
        # # Stress-Strain Curve
        curve_plot = main_curve.add_subplot(gs[0, 1])
        curve_plot.set_title("Curve")
        curve_plot.grid(True)
        curve_plot.set_xlim([0.0, 0.01])
        curve_plot.set_ylim([0.0, 100.0])
        curve_plot.set_xlabel("")
        curve_plot.set_ylabel("")

        self.points = curve_plot.plot(self.strain, self.stress, 'k-')
        self.curve_plot = curve_plot
        ###################################################################
        # # Save and show Figure
        main_curve.tight_layout()
        self.main_curve = main_curve
        self.canvas_main = FigureCanvasTkAgg(self.main_curve, master=curve)
        self.canvas_main.show()
        self.canvas_main.get_tk_widget().grid(row=0, column=0, sticky=N + S + E + W)

        # Displaying data
        disp_data = Frame(curve, relief=RAISED, bd=2)
        yscrollbar = AutoScrollbar(disp_data)
        yscrollbar.grid(row=0, column=1, rowspan=4, sticky=N + S)
        xscrollbar = AutoScrollbar(disp_data, orient=HORIZONTAL)
        xscrollbar.grid(row=2, column=0, sticky=E + W)
        data_canvas = Canvas(disp_data, yscrollcommand=yscrollbar.set, xscrollcommand=xscrollbar.set)
        data_canvas.grid(row=0, column=0, rowspan=4, sticky=N + S + W + E)
        yscrollbar.config(command=data_canvas.yview)
        xscrollbar.config(command=data_canvas.xview)
        label_frame = Frame(disp_data)
        Label(label_frame, text="DATA\nS.No  Load(N)  Elongation(mm)\n",
              font=("COMIC SANS MS", 17, "bold")).grid(row=0, column=0, sticky=N + S + W + E)
        self.data = StringVar()
        self.data_str = ""
        self.data.set(self.data_str)
        Label(label_frame, textvariable=self.data,
              font=("Helvetica", 16, "italic")).grid(row=1, column=0, sticky=N + S + W + E)
        data_canvas.create_window(0, 0, window=label_frame)
        label_frame.bind("<Configure>", onresize)
        label_frame.bind_all("<MouseWheel>", on_mousewheel)

        disp_data.rowconfigure(1, weight=1)
        disp_data.columnconfigure(0, weight=1)
        disp_data.columnconfigure(1, weight=1)

        disp_data.grid(row=0, column=1, sticky=N + S + W + E)

        curve.columnconfigure(0, weight=1)
        curve.grid(row=2, sticky=N + S + E + W)
########################################################################################################################
        footer = Frame(self.root)
        Button(footer, text="Run", font=('Comic Sans MS', 25, "bold italic"),
               command=self.run_program).grid(row=0, column=0)
        footer.columnconfigure(0, weight=1)
        footer.grid(row=3, sticky=N + S + E + W)

        self.root.mainloop()
Example #28
0
class DisplayQuadTree(object):
    def __init__(self, width, height, scale=1, show_grid=False):
        self._scale = scale
        self._grid_width = 1 if show_grid else 0
        self.size = (width*scale, height*scale)
        self._is_animate = False
        self._anime_time = 0.1

        self._tk_root = Tk()
        self._canvas = Canvas(self._tk_root, width=self.size[0], height=self.size[1])
        self._canvas.pack()

        self._button = Button(self._tk_root, text='Finished', command=self._stop_animate)
        self._button.configure(width=10, relief=FLAT)
        self._canvas.create_window(10, 10, anchor=NW, window=self._button)

        self._labelstr = StringVar()
        self._labelstr.set('0%')
        self._label = Label(self._tk_root, textvariable=self._labelstr)
        self._canvas.create_window(self.size[0] - 10,
                                   self.size[1] - 10,
                                   anchor=SE,
                                   window=self._label)

    def static(self, qtree):
        """ Draw the final output.
        """
        if qtree is None:
            return

        stack = [qtree]
        while len(stack):
            qnode = stack.pop()
            if qnode.children:
                for child in qnode.children:
                    stack.append(child)
            else:
                colour = '#{0:02x}{1:02x}{2:02x}'.format(*qnode.ave_color)
                self._canvas.create_rectangle(qnode.x * self._scale,
                                              qnode.y * self._scale,
                                              (qnode.x + qnode.width) * self._scale,
                                              (qnode.y + qnode.height) * self._scale,
                                              width=self._grid_width,
                                              outline='grey',
                                              fill=colour)
        self._labelstr.set('100%')

    def _stop_animate(self):
        """ Stop the animation. Called by the "Stop" button
        """
        self._is_animate = False
        self._button.configure(text='Finished')

    def animate(self, qtree):
        """ Animate the development of the quadtree as it was generated.
        Press the "Stop" to stop the animation
        """
        if qtree is None:
            return

        self._is_animate = True
        self._button.configure(text='Stop')

        q = Queue.Queue()
        q.put(qtree)
        count, max_qtrees = 0.0, qtree.sq_num
        while not q.empty() and self._is_animate:
            qnode = q.get()

            if qnode.children:
                for child in qnode.children:
                    q.put(child)

            count += 1.0
            colour = '#{0:02x}{1:02x}{2:02x}'.format(*qnode.ave_color)
            self._canvas.create_rectangle(qnode.x * self._scale,
                                          qnode.y * self._scale,
                                          (qnode.x + qnode.width) * self._scale,
                                          (qnode.y + qnode.height) * self._scale,
                                          width=self._grid_width,
                                          outline='grey',
                                          fill=colour)
            self._canvas.update()
            self._labelstr.set('{}%'.format(int(count/max_qtrees * 100)))
            time.sleep(self._anime_time)

        self._stop_animate()

    def show(self):
        """ Call this to start the display.
        """
        self._tk_root.mainloop()
Example #29
0
    def __init__(self, filename, parentnotebook):
        """Create a new EditTab
        
        Argument
        filename -- name and path to the file being edited
        parentnotebook -- the NoteBook in which this tab will be added
        
        """
        Frame.__init__(self)
        self._filename = filename
        self._parentnotebook = parentnotebook
        self._inputs = []
        self.path = os.path.dirname(filename)
        self._dirty = False
        parentnotebook.add(self, state='normal')
        self._setLabel()

        #Set up GUI
        self.rowconfigure(0, weight=1)
        self.columnconfigure(0, weight=1)

        vscroll = Scrollbar(self, orient=VERTICAL)
        self._vscroll = vscroll
        vscroll.grid(row=0, column=1, sticky=N + S)
        hscroll = Scrollbar(self, orient=HORIZONTAL)
        self._hscroll = hscroll
        hscroll.grid(row=1, column=0, sticky=E + W)

        canvas = Canvas(self,
                        yscrollcommand=vscroll.set,
                        xscrollcommand=hscroll.set)
        self._canvas = canvas
        canvas.grid(row=0, column=0, padx=5, pady=5, sticky=NSEW)

        vscroll['command'] = canvas.yview
        hscroll['command'] = canvas.xview

        scrollframe = Frame(canvas)
        self._scrollframe = scrollframe
        canvas.create_window(0, 0, window=scrollframe, anchor=N + W)

        scrollframe.rowconfigure(0, weight=1)
        scrollframe.columnconfigure(0, weight=1)

        self._mainframe = Frame(scrollframe)
        self._mainframe.grid(row=0, column=0, padx=5, pady=5, sticky=NSEW)

        cf = Frame(scrollframe)
        self._control_frame = cf
        cf.grid(row=1, column=0, padx=5, pady=5, sticky=E)
        b = Button(cf,
                   text=lang[lng.txtCopyImages],
                   command=self._ehCopyImages)
        self._btnCopy = b
        b.grid(row=0, column=0, padx=5, pady=5)
        b = Button(cf,
                   text=lang[lng.txtSave],
                   command=self._ehSave,
                   state=DISABLED)
        self._btnSave = b
        b.grid(row=0, column=1, padx=5, pady=5)
        b = Button(cf, text=lang[lng.txtClose], command=self._ehClose)
        b.grid(row=0, column=2, padx=5, pady=5)

        parentnotebook.after_idle(self._setCanvas)
Example #30
0
class Path:
    def __init__(self, root):
        
        self.canvas = Canvas(root, borderwidth=1, background="#ffffff")
        self.frame = Frame(self.canvas, background="#ffffff")
        self.vsb = Scrollbar(root, orient="vertical", command=self.canvas.yview)
        self.canvas.configure(yscrollcommand=self.vsb.set)
        self.vsb.pack(side="right", fill="y")
        self.canvas.pack(side="left", fill="both", expand=True)
        
        self.canvas.create_window((4,4), window=self.frame, anchor="nw", tags="self.frame")

        self.frame.bind("<Configure>", self.OnFrameConfigure)

        self.data()
   
   
        
    def data(self): 
        
        global textPath
        textPath = StringVar()
        global text0a
        text0a = StringVar()
        global text0b 
        text0b = StringVar()
        global text2a 
        text2a = StringVar()
        global text3 
        text3 = StringVar()
        global alphaVar
        alphaVar = IntVar()
        global betaVar 
        betaVar = IntVar()
        global allVar
        allVar = IntVar()
        global text6a0 
        text6a0 = IntVar()
        global text6a1
        text6a1 = IntVar()
        global text6b
        text6b = StringVar()
        global text6c1
        text6c1 = StringVar()
        global text6c2
        text6c2 = StringVar()
        global text6c3
        text6c3 = StringVar()
        global text7_1
        text7_1 = StringVar()
        global text7_2
        text7_2 = StringVar()
        global text7_3
        text7_3 = StringVar()
        global text7_4
        text7_4 = StringVar()
        global text8
        text8 = StringVar()
        
        
        Label(self.frame,text="Path ? ").grid(row=0, column=0)
        Entry(self.frame,textvariable=textPath).grid(row=1, column=0)
        Button(self.frame, text="Valider et afficher", command = affiche_recap).grid(row=1, column=1)
    
        Label(self.frame, text="Green function database information file\n (for a certain depth only for the instance) ?").grid(row=3)
        Entry(self.frame, textvariable=text0a).grid(row=4)
        
        Label(self.frame, text="Output directory (parentdir) ?").grid(row=5)
        Entry(self.frame, textvariable=text0b).grid(row=6)
            
        Label(self.frame, text="Phase name ?").grid(row=9)
        Entry(self.frame, textvariable=text3).grid(row=10)
        
        def afficheAlpha():
            seismicPara["text"]="alpha"
            betaVar.set(0)
            allVar.set(0)
        def afficheBeta():
            seismicPara["text"]="beta"
            alphaVar.set(0)
            allVar.set(0)
        def afficheAll():
            seismicPara["text"]="all"
            alphaVar.set(0)
            betaVar.set(0)
    
        seismicPara = Menubutton(self.frame, text="Seismic Parameter", relief=RAISED)
        seismicPara.grid(row=0)
        seismicPara.menu = Menu(seismicPara, tearoff = 0)
        seismicPara["menu"] = seismicPara.menu

        
        seismicPara.menu.add_checkbutton(label="alpha", variable = alphaVar, command = afficheAlpha)
        seismicPara.menu.add_checkbutton(label="beta", variable = betaVar, command = afficheBeta)
        seismicPara.menu.add_checkbutton(label="all", variable = allVar, command = afficheAll)
        seismicPara.grid(row=11)

        def affiche0():
            filterPara["text"]="Filter Off"
            text6a1.set(0)
            
        def affiche1():
            filterPara["text"]="Filter On"
            text6a0.set(0)
    
        filterPara = Menubutton(self.frame, text="Butterworth filter ", relief=RAISED)
        filterPara.grid(row=0)
        filterPara.menu = Menu(filterPara, tearoff = 0)
        filterPara["menu"] = filterPara.menu

        filterPara.menu.add_checkbutton(label="Filter Off", variable = text6a0, command = affiche0)
        filterPara.menu.add_checkbutton(label="Filter On", variable = text6a1, command = affiche1)
        
        filterPara.grid(row=12)
        
        Label(self.frame, text="Filter name ?").grid(row=15)
        Entry(self.frame, textvariable=text6b).grid(row=16)
    
        Label(self.frame, text="\nIf butterworth = 0; \n just comment out those 3 parameters").grid(row=17)
    
        Label(self.frame, text="lowest frequency ?").grid(row=18,column=1)
        Entry(self.frame, textvariable=text6c1).grid(row=19, column=1)
        
        Label(self.frame, text="highest frequency ?").grid(row=20, column=1)
        Entry(self.frame, textvariable=text6c2).grid(row=21, column=1)
        
        Label(self.frame, text="number of poles ?").grid(row=22, column=1)
        Entry(self.frame, textvariable=text6c3).grid(row=23, column =1)
        
        Label(self.frame, text="time window t1 ?").grid(row=24)
        Entry(self.frame, textvariable=text7_1).grid(row=25)
        
        Label(self.frame, text="time window t2 ?").grid(row=26)
        Entry(self.frame, textvariable=text7_2).grid(row=27)
        
        Label(self.frame, text="time window t3 ?").grid(row=28)
        Entry(self.frame, textvariable=text7_3).grid(row=29)
        
        Label(self.frame, text="time window t4 ?").grid(row=30)
        Entry(self.frame, textvariable=text7_4).grid(row=31)
        
        Label(self.frame, text="itranslat (1 if you convert geodetic latitude to geocentric latitude) ?").grid(row=32)
        Entry(self.frame, textvariable=text8).grid(row=33)
        
        Button(self.frame, text="continue", command=writingFile).grid(row=34)
        
    def OnFrameConfigure(self, event):
        '''Reset the scroll region to encompass the inner frame'''
        self.canvas.configure(scrollregion=self.canvas.bbox("all"))
Example #31
0
class MtgProxyView(Frame):
    """The View, which takes care of the visual representation of the model.

    Attributes:
        root: the root panel for the visual represantion
        cardModel: the cardModel class which deals with all the internal card data
        home: the path of where images are located
        safeHome: the path where PDfs are supposed to be saved
        cnfData: the path to the config file
        defaultImage: the path to the default image
        listFrame: the frame in which the mode is portraied
        canvas: tha canvas which allows scrolling and a grid
        myscrollbar: the scrollbar which gives the user the abilty to scroll through the list of cards
        buttonframe: the frame in which the action buttons are being placed
        wipeWorkspace: the button which corresponds with the clear worksapce function
        bSelectDir: the button which corresponds with the selectDir function
        selectSaveDir: the button which corresponds with the selectSaveDir function
        bMake: the button which corresponds with the makePdf function
        addButton: the button which corresponds with the addNewCard function
    """
    def __init__(self):
        """
        This is the the constructor of the MtgProxyView
        It takes care of all the setup and doesnt require anything from the main
        """
        #basic setup
        sizex = 765
        sizey = 525
        posx = 0
        posy = 0
        self.root = Tk()
        self.root.title("PyProxies")
        self.root.wm_geometry("%dx%d+%d+%d" % (sizex, sizey, posx, posy))
        self.root.resizable(width=False, height=False)

        #backend data setup
        self.cardmodel = Cardmodel()

        #constants
        self.home = ""
        self.safeHome = ""
        self.cnfData = "upm.cnf"
        self.defaultImage = "noCard.jpg"
        self.loadConfig()

        #list setup
        self.listframe = Frame(self.root,
                               relief=GROOVE,
                               width=500,
                               height=500,
                               bd=1)
        self.listframe.place(x=10, y=10)
        self.canvas = Canvas(self.listframe)
        self.frame = Frame(self.canvas)
        self.myscrollbar = Scrollbar(self.listframe,
                                     orient="vertical",
                                     command=self.canvas.yview)
        self.canvas.configure(yscrollcommand=self.myscrollbar.set)
        #and it scrollbar
        self.myscrollbar.pack(side="right", fill="y")
        self.canvas.pack(side="left")
        self.canvas.create_window((0, 0), window=self.frame, anchor='nw')

        #button setup
        self.buttonframe = Frame(self.root,
                                 relief=GROOVE,
                                 width=100,
                                 height=500,
                                 bd=1,
                                 padx=15,
                                 pady=10)
        self.buttonframe.place(x=535, y=10)
        self.wipeWorkspace = Button(self.buttonframe,
                                    text="clear Workspace",
                                    command=self.completeWipe,
                                    width=20)
        self.wipeWorkspace.pack(anchor="sw", pady=5)
        self.bSelectDir = Button(self.buttonframe,
                                 text="select a fitting Directory",
                                 command=self.selectDir,
                                 width=20)
        self.bSelectDir.pack(anchor="sw", pady=5)
        self.selectSaveDir = Button(self.buttonframe,
                                    text="Select a save directory",
                                    command=self.selectSafeDir,
                                    width=20)
        self.selectSaveDir.pack(anchor="sw", pady=5)
        self.bMake = Button(self.buttonframe,
                            text="make PDF",
                            command=self.makePdf,
                            width=20)
        self.bMake.pack(anchor="sw", pady=5)
        self.addButton = Button(self.frame,
                                text="add a new Card",
                                command=self.addNewCard)

        self.frame.bind("<Configure>", self.myfunction)
        self.data()

        self.root.mainloop()

    def loadConfig(self):
        """
        This is the functions which loads the configuration.
        Only the place where Images can be added as sources and where PDFs can be saved,
        are able to be set and saved.
        """
        configFile = open(self.cnfData, "r+")
        temp = configFile.read().split("\n")
        try:
            self.home = expanduser("~")
            if os.path.exists(temp[0]):
                self.home = temp[0]
            self.safeHome = expanduser("~")
            if os.path.exists(temp[1]):
                self.safeHome = temp[1]
        except IndexError:
            print "Error"
            self.home = expanduser("~")
            self.safeHome = expanduser("~")
        print "new homes"
        print self.home
        print self.safeHome
        configFile.close()

    def saveConfig(self):
        """
        This Function takes care of writing the values of the home and the saveHome to the configuration file
        """
        configFile = open(self.cnfData, "w")
        configFile.write(self.home + "\n" + self.safeHome)
        print "config saved"
        configFile.close()
        self.loadConfig()

    def completeWipe(self):
        """
        This function clears the workspace of all of its components and resets the Model.
        """
        for i in range(self.cardmodel.getCardCount()):
            #self.cardHowOften[i]=0
            self.cardmodel.setCardHowOften(i, 0)
            self.cardmodel.setImg(self.defaultImage, i)
            #self.imgPaths[i] = self.defaultImage
        self.cardmodel.resetCardCount()
        for w in self.frame.winfo_children():
            w.destroy()
        self.data()

    def selectSafeDir(self):
        """
        This function sets the directory where exported PDFs are being stored.
        Its does this by invoking the tkFileDialog which asks for user input and returns a valid path.
        """
        path = tkFileDialog.askdirectory(
            initialdir=self.safeHome, title="Select a better save directory.")
        if isinstance(path, basestring):
            self.safeHome = path
            self.saveConfig()

    def selectDir(self):
        """
        This function provides the user with the functionality to set their starting directory for adding source images.
        They can do this in order to save time and optimize their workflow.
        Its does this by invoking the tkFileDialog which asks for user input and returns a valid path.
        """
        path = tkFileDialog.askdirectory(
            initialdir=self.home, title="Select a better working directory.")
        if isinstance(path, basestring):
            self.home = path
            self.saveConfig()

    def data(self):
        """
        The data function takes care of going over the entiry model and representing it on the canvas object.
        It is only supposed to be invoked when the workspace has been cleard beforehand.
        """
        for i in range(self.cardmodel.getCardCount()):
            #image label
            pilFile = Image.open(self.cardmodel.getImg(i))
            image1 = pilFile.resize((60, 80), Image.ANTIALIAS)
            image2 = ImageTk.PhotoImage(image1)
            imageLabel = Label(self.frame, image=image2)
            imageLabel.image = image2
            imageLabel.grid(row=i, column=0, padx=2, pady=2)
            #other labels
            Label(self.frame,
                  text="Card is being printed " +
                  str(self.cardmodel.getCardHowOftenAt(i)) + " times.").grid(
                      row=i, column=1)
            Button(self.frame,
                   text="-",
                   command=lambda i=i: self.decrHowOften(i)).grid(row=i,
                                                                  column=2)
            Button(self.frame,
                   text="+",
                   command=lambda i=i: self.incrHowOften(i)).grid(row=i,
                                                                  column=3)
            Button(self.frame,
                   text="add Source",
                   command=lambda i=i: self.getImgPath(i)).grid(row=i,
                                                                column=4)
            Button(self.frame, text="X",
                   command=lambda i=i: self.delete(i)).grid(row=i, column=5)

        self.addButton = Button(self.frame,
                                text="add a new Card",
                                command=self.addNewCard)
        self.addButton.grid(row=self.cardmodel.getCardCount(),
                            column=0,
                            columnspan=2,
                            padx=10,
                            pady=20,
                            sticky="W")

    def updateOne(self, i):
        """
        This Function is supposed to only update one row of the Canvas in,
        which the model is displayed.

        Args:
            i: the index of the row which is supposed to be updated
        """
        pilFile = Image.open(self.cardmodel.getImg(i))
        image1 = pilFile.resize((60, 80), Image.ANTIALIAS)
        image2 = ImageTk.PhotoImage(image1)
        imageLabel = Label(self.frame, image=image2)
        imageLabel.image = image2
        imageLabel.grid(row=i, column=0, padx=2, pady=2)
        # other labels
        Label(self.frame,
              text="Card is being printed " +
              str(self.cardmodel.getCardHowOftenAt(i)) + " times.").grid(
                  row=i, column=1)
        Button(self.frame, text="-",
               command=lambda i=i: self.decrHowOften(i)).grid(row=i, column=2)
        Button(self.frame, text="+",
               command=lambda i=i: self.incrHowOften(i)).grid(row=i, column=3)
        Button(self.frame,
               text="add Source",
               command=lambda i=i: self.getImgPath(i)).grid(row=i, column=4)
        Button(self.frame, text="X",
               command=lambda i=i: self.delete(i)).grid(row=i, column=5)

    def delete(self, i):
        """
        This function is supposed to delete one Card and update the model accordingly.

        Args:
            i: the indexing of the row, which is supposed to be updated
        """
        self.cardmodel.deleteCard(i)

        #complete reset
        for w in self.frame.winfo_children():
            w.destroy()
        self.data()

    def incrHowOften(self, i):
        """
        This function takes care of increasing the counter of how often a card is supposed to be printed.

        Args:
            i: the row in which the the card is located
        """
        self.cardmodel.incrCardHowOften(i)
        self.updateOne(i)

    def decrHowOften(self, i):
        """
        This function takes care of decreasing the counter of how often a card is supposed to be printed.

        Args:
            i: the row in which the the card is located
        """
        self.cardmodel.decrCardHowOften(i)
        self.updateOne(i)

    def addNewCard(self):
        """
        This function adds a new card to the model and updates it with default values.
        It then invokes the updateOne-function in order to update the view.
        """
        self.cardmodel.addCard()

        self.addButton.destroy()
        self.addButton = Button(self.frame,
                                text="add a new Card",
                                command=self.addNewCard)
        self.addButton.grid(row=self.cardmodel.getCardCount(),
                            column=0,
                            columnspan=2,
                            padx=10,
                            pady=20,
                            sticky="W")

        self.updateOne(self.cardmodel.getCardCount() - 1)

    def myfunction(self, event):
        """
        A function which is called in the event of a configuration concerning the frame.
        It sets the scrollregion of the scrollbar to be the canvas
        """
        self.canvas.configure(scrollregion=self.canvas.bbox("all"),
                              width=500,
                              height=500)

    def getImgPath(self, i):
        """
        This function allows the user to change the image source of a card.
        It does this by invoking the tkFileDialog in order to ask for a filename,
        limited to JPGs and PNGs.
        If the user input something it updates the model.

        Args:
            i: index of the row in which the card is located
        """
        imgPath = tkFileDialog.askopenfilenames(initialdir=self.home,
                                                title="Select Image",
                                                filetypes=[
                                                    ("JPG files", "*.jpg"),
                                                    ("PNG files", "*.png"),
                                                    ("JPEG files", "*.jpeg")
                                                ])
        print imgPath
        print str(imgPath) == "()"
        if str(imgPath) != "()" and str(imgPath) != "":
            print(imgPath[0])
            self.cardmodel.setImg(imgPath[0], i)
            self.updateOne(i)
        else:
            print "user didnt select anything"

    def makePdf(self):
        """
        This function gives the user the functionality to select a filename for the PDF they want to print.
        Afterwards if a name has been entered the function gives the model to the proxymaker module,
        which creates a PDF in the desired location.
        """
        name = tkSimpleDialog.askstring(
            'Input', 'Enter the desired name for the PDF, without suffix')
        if name is not None:
            proxymaker.writeData(self.cardmodel,
                                 self.safeHome + "/" + name + ".pdf")
class Example(Frame):
    '''
	Constructor for creating a frame
    '''
    def __init__(self, parent):
        Frame.__init__(self, parent)
        self.parent = parent
        self.initUI()

    '''
	Browse the filename to be added to to Openstack Swift
    '''
    def browsefile(self):
        self.filename = askopenfilename()
        self.nm = self.filename.split("/")
        self.fnm = self.nm[len(self.nm)-1]
        self.e2.configure(state="normal")
        self.e2.update()
        self.e2.delete(0, 'end')  
        self.e2.insert("end", self.fnm)
        self.e2.configure(state="disabled")
        self.e2.update() 
 
    '''
	Add Data - To Openstack Swift
        Check For De-Duplication of Data
        - Display the Data When found duplicate data
        Check For Already Added File - same file 
        - Display the content of already Added file 

    '''
    def addData(self):
        file_ext=self.fnm.split('.') 
        result = requests.get('http://localhost:8983/solr/techproducts/select?q='+ str(self.fnm)+'&wt=json&fl=id')
        op = result.json()
        flag = False
        if op['response']['numFound'] == 0:
           un_id = random.randint(1, 1000)
           if file_ext[1] == 'txt':
              listdocs = requests.get('http://localhost:8983/solr/techproducts/select?q=*.'+ file_ext[1] +'&wt=json')
              listdict = listdocs.json()
              f = open(self.fnm,"r")
              lines = f.readlines()
              alllines = ""
              for j in range(0, len(lines)):
                  alllines += lines[j]
              for i in range(0, len(listdict['response']['docs'])):
                  if alllines.strip() == (listdict['response']['docs'][i]['content'][0]).strip():
                     name = str(listdict['response']['docs'][i]['resourcename']).split("/")
                     self.e3.delete('1.0', END)
                     self.e3.insert(END,"Cannot Add Duplicate Data. There is already a file with same contents\n File name : "+ str(name[len(name)-1]) + "\n")
                     self.e3.insert(END,"Here are the contents\n")
                     self.e3.insert(END,str(listdict['response']['docs'][i]['content'][0]).strip())
                     flag = True
           if file_ext[1] == 'pdf':
              listdocs = requests.get('http://localhost:8983/solr/techproducts/select?q=*.'+ file_ext[1] +'&wt=json')
              listdict = listdocs.json()
              with open(self.fnm) as f:
                   doc = slate.PDF(f)  
              alllines = ""     
              for i in range(0, len(doc)):
                  alllines += doc[i]         
              remove = string.punctuation + string.whitespace
              alllines = alllines.translate(None, remove) 
              for i in range(0, len(listdict['response']['docs'])):
                  alldocs = (listdict['response']['docs'][i]['content'][0]).encode("utf-8")
                  alldocs = alldocs.translate(None, remove)  
                  res = (alllines == alldocs)
                  if alllines == alldocs:
                     name = str(listdict['response']['docs'][i]['resourcename']).split("/")
                     self.e3.delete('1.0', END)
                     self.e3.insert(END,"Cannot Add Duplicate Data. There is already a file with same contents\n File name : "+ str(name[len(name)-1]) + "\n")
                     self.e3.insert(END,"Here are the contents\n")
                     self.e3.insert(END,str(listdict['response']['docs'][i]['content'][0]).strip())
                     flag = True
           if file_ext[1] == 'docx':
              listdocs = requests.get('http://localhost:8983/solr/techproducts/select?q=*.'+ file_ext[1] +'&wt=json')
              listdict = listdocs.json()
              document = docx.Document(self.fnm)
              alllines = ""
              for para in document.paragraphs:
                  dl = para.text.encode("utf-8")
                  alllines += dl
              remove = string.punctuation + string.whitespace
              alllines = alllines.translate(None, remove)
              for i in range(0, len(listdict['response']['docs'])):
                  alldocs = (listdict['response']['docs'][i]['content'][0]).encode("utf-8")
                  alldocs = alldocs.translate(None, remove)
                  res = (alllines == alldocs)
                  if alllines == alldocs:
                     name = str(listdict['response']['docs'][i]['resourcename']).split("/")
                     self.e3.delete('1.0', END)
                     self.e3.insert(END,"Cannot Add Duplicate Data. There is already a file with same contents\n File name : "+ str(name[len(name)-1]) + "\n")
                     self.e3.insert(END,"Here are the contents\n")
                     self.e3.insert(END,str(listdict['response']['docs'][i]['content'][0]).strip())
                     flag = True
           if flag == False:
              os.system('cp '+ str(self.fnm) + " /opt/solr/example/exampledocs/")
              os.system("/opt/solr/bin/post -c techproducts /opt/solr/example/exampledocs/" + str(self.fnm) + " -params \"literal.id=" + str(un_id) + "\"")
              self.e3.delete('1.0', END)
              self.e3.insert(END,"Indexing Done for the Upload .....\n")
              container = subprocess.check_output(["swift","list","-v","--os-username","admin","--os-password","ea12f4366a2a4253","--os-auth-url","http://localhost:5000/v2.0","--os-tenant-name","admin"])
              container = container.split("\n")
              os_name = os.environ['OS_USERNAME']
              os_password = os.environ['OS_PASSWORD']
              os_auth_url = os.environ['OS_AUTH_URL']
              os_tenant_name = os.environ['OS_TENANT_NAME']  
              response = os.system("swift upload -c -v --os-username "+ str(os_name) + " --os-password "+ str(os_password) + " --os-auth-url " + str(os_auth_url) + " --os-tenant-name "+ str(os_tenant_name) + " "+ str(container[0]) + " "+ str(self.fnm))
              if response == 0:
                 self.e3.insert(END,"File Uploaded Successfully to Openstack Swift\n")
        if op['response']['numFound'] > 0:
           answer = requests.get('http://localhost:8983/solr/techproducts/select?q='+ str(self.fnm)+'&wt=json&fl=content')
           details = answer.json()
           content_dict = details['response']['docs'][0]['content']
           self.e3.delete('1.0', END)
           self.e3.insert(END,"Cannot Add Data Again\n")
           self.e3.insert(END,"Data Already Added to Openstack Swift:\nHere are the contents\n")
           self.e3.insert(END,content_dict[0])
    
    '''
	Search The Openstack Swift Data with Search Query given by the user
    '''    
    def searchData(self):
        query = self.e1.get()
        qresult = requests.get('http://localhost:8983/solr/techproducts/browse?q='+ str(query)+'&wt=json')
        qop = qresult.json()
        if qop['response']['numFound'] == 0:
           self.e3.delete('1.0', END)
           self.e3.insert(END,"Sorry !! No Details found for the search query")
        if qop['response']['numFound'] > 0:
           length = len(qop['response']['docs'])
           self.e3.delete('1.0', END)
           for i in range(0, length):
               sname = str(qop['response']['docs'][i]['resourcename']).split("/")
               self.e3.insert(END,"Filename : " + str(sname[len(sname)-1]) + "\n")
               self.e3.insert(END,qop['response']['docs'][i]['content'][0])
           self.e3.insert(END,"Search Result Found "+ str(length) + " \n")

    '''
        Clear The Text Area 
    '''
    def clearText(self):
        self.e1.delete(0, 'end')
        self.e2.configure(state="normal")
        self.e2.update()
        self.e2.delete(0, 'end')
        self.e2.configure(state="disabled")
        self.e2.update()
        self.e3.delete('1.0', END) 

    '''
	GUI : Add Canvas
	      Add Buttons : Quit, Clear, Search, Browse, Add
              Add Text Area : Search, Add, Output
    '''
    def initUI(self):
        self.parent.title("Openstack Search")
        self.config(bg = '#F0F0F0')
        self.pack(fill = BOTH, expand = 1)
        #create canvas
        self.canvas1 = Canvas(self, relief = FLAT, background = "#D2D2D2",
                                            width = 1000, height = 500)
        self.canvas1.pack(side = TOP, anchor = NW, padx = 10, pady = 10)
        self.e1 = Entry(self.canvas1)
        self.e1.config(width=20)
        self.e2 = Entry(self.canvas1)
        self.e2.config(width=20)
        self.e2.config(state="disabled") 
        self.e1_window = self.canvas1.create_window(210,70,window = self.e1)
        self.e2_window = self.canvas1.create_window(210,120,window = self.e2)
        self.e3 = Text(self.canvas1,height=18)
        self.e3.grid(column=1,row=5, columnspan=5, rowspan=1, sticky='W')
        scrb=Scrollbar(self.canvas1,orient=VERTICAL,command=self.e3.yview)
        self.e3.configure(yscrollcommand=scrb.set)
        self.e3_window = self.canvas1.create_window(450,350,window = self.e3)
        
        self.button1 = Button(self, text = "Quit", command = self.quit, anchor = W)
        self.button1.configure(width = 10, activebackground = "#33B5E5", relief = FLAT)
        self.button1_window = self.canvas1.create_window(10, 10, anchor=NW, window=self.button1)
        self.button2 = Button(self, text = "Search", anchor = W)
        self.button2.configure(command=self.searchData)
        self.button2.configure(width = 10, activebackground = "#33B5F5", relief = FLAT)
        self.button2_window = self.canvas1.create_window(10, 60, anchor=NW, window=self.button2)
        self.button3 = Button(self, text = "Browse", command = self.browsefile, anchor = W)
        self.button3.configure(width = 10, activebackground = "#33B5D5", relief = FLAT)
        self.button3_window = self.canvas1.create_window(10, 110, anchor=NW, window=self.button3)
        self.button3 = Button(self, text = "Add", command = self.addData, anchor = W)
        self.button3.configure(width = 10, activebackground = "#33B5D5", relief = FLAT)
        self.button3_window = self.canvas1.create_window(10, 160, anchor=NW, window=self.button3)
        self.button4 = Button(self, text = "Clear", command = self.clearText, anchor = W)
        self.button4.configure(width = 10, activebackground = "#33B5D5", relief = FLAT)
        self.button4_window = self.canvas1.create_window(200, 10, anchor=NW, window=self.button4)
Example #33
0
import time
import os
from Tkinter import Canvas, Label, Frame, Button, Tk, Entry, Toplevel
from graphviz import Digraph

global master
master = Tk()

master.title('SLR Parser')

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

u1_entry = Entry(canvas)
canvas.create_window(220, 200, window=u1_entry, height=150, width=300)

u2_entry = Entry(canvas)
canvas.create_window(220, 430, window=u2_entry, height=100, width=300)

grammars = open("grammar2.txt")
G = {}
C = {}
I = {}
J = {}

inputstring = ""

start = ""
terminals = []
nonterminals = []
    def on_show_frame(self):
        self.canvas_wrappers = []
        self.canvases = []
        self.page_num = 0

        if len(self.controller.sr_results) == 0:
            self.controller.show_frame(SrNoFramesFoundScreen)
        else:
            pages = int(ceil(len(self.controller.sr_results) / 10.0))
            for page in range(0, pages):
                canvas_wrapper = Frame(self.content_wrapper,
                                       borderwidth="1",
                                       relief="solid")
                canvas = Canvas(canvas_wrapper,
                                width=int(WINDOW_WIDTH * 7 / 8),
                                height=(WINDOW_HEIGHT * 2 / 3))
                scroll_bar = Scrollbar(canvas_wrapper,
                                       orient=VERTICAL,
                                       command=canvas.yview)
                results_list_frame = Frame(canvas)

                canvas.configure(yscrollcommand=scroll_bar.set)
                canvas.create_window(0, 0, window=results_list_frame)
                canvas.bind_all("<Up>", self.on_up_key)
                canvas.bind_all("<Down>", self.on_down_key)
                canvas.bind_all("<Left>", self.on_left_key)
                canvas.bind_all("<Right>", self.on_right_key)

                canvas.grid(row=0, column=0, sticky="nsew")
                scroll_bar.grid(row=0, column=1, sticky="ns")
                canvas_wrapper.grid(row=2,
                                    column=0,
                                    columnspan=3,
                                    sticky="nsew")

                select_buttons_on_page = []

                for row in range(0, RESULTS_PER_PAGE):
                    result_num = page * RESULTS_PER_PAGE + row
                    if result_num < len(self.controller.sr_results):
                        frame_num = self.controller.sr_results[result_num][
                            FRAME_NUM_LABEL]

                        result_entry = Frame(results_list_frame,
                                             borderwidth="1",
                                             relief="solid")
                        description = PLabel(
                            result_entry,
                            text="Frame #" + str(int(frame_num)) + ", Time: " +
                            str(datetime.timedelta(seconds=frame_num / 30)))
                        preview_wrapper = Frame(result_entry)
                        left_video_preview = Label(
                            preview_wrapper,
                            image=self.controller.sr_results[result_num][LEFT])
                        right_video_preview = Label(
                            preview_wrapper,
                            image=self.controller.sr_results[result_num]
                            [RIGHT])
                        select_button = SrSelectButton(
                            preview_wrapper,
                            self.controller,
                            self.controller.sr_results[result_num]
                            [SR_MAP_LABEL],
                            text="Select")

                        select_buttons_on_page.append(select_button)

                        description.pack()
                        left_video_preview.grid(row=row, column=0)
                        right_video_preview.grid(row=row, column=1)
                        select_button.grid(row=row, column=2)
                        preview_wrapper.pack()
                        result_entry.pack()

                for i in range(0, len(select_buttons_on_page)):
                    select_buttons_on_page[i].configure(
                        command=select_buttons_on_page[i].use_sr_map)

                self.master.update_idletasks()
                canvas.config(scrollregion=canvas.bbox("all"))
                canvas.yview_moveto(0)
                self.canvas_wrappers.append(canvas_wrapper)
                self.canvases.append(canvas)

            self.prev_result_page = Button(
                self.content_wrapper,
                text="<",
                command=lambda: self.prev_page_command())
            self.page_info_label = PLabel(
                self.content_wrapper,
                text=get_page_info_label_message(self.page_num,
                                                 len(self.canvases),
                                                 RESULTS_PER_PAGE))
            self.next_result_page = Button(
                self.content_wrapper,
                text=">",
                command=lambda: self.next_page_command())

            self.prev_result_page.grid(row=3, column=0)
            self.page_info_label.grid(row=3, column=1)
            self.next_result_page.grid(row=3, column=2)
            self.canvas_wrappers[self.page_num].tkraise()
Example #35
0
class ResultsFrame(Frame):
    "Class which controls the results screen of the spelling aid""" 
    def __init__(self, parent):
        Frame.__init__(self, parent)
        self.parent = parent
        #Create UI elements
        self.results_list = ResultsTable(self.parent, height=160, width=250)
        buttonRetry = Button(self.parent, text="Retry", width=10,
                             command=self.restart)
        buttonNewlist = Button(self.parent, text="New List", width=10,
                               command=self.new_selection)
        buttonExit = Button(self.parent, text="Quit", width=10,
                            command=self.parent.destroy)
        self.results_canvas = Canvas(self, width=600, height=250, bg="#FFFFFF")
        font = ("Helvetica", 20)
        self.results_canvas.create_text(300, 15, text="Results", fill="#004183",
                                        font=font)
        self.results_canvas.create_window(310, 35, window=self.results_list,
                                          anchor=NW)
        self.results_canvas.create_window(150, 230, window=buttonRetry)
        self.results_canvas.create_window(300, 230, window=buttonNewlist)
        self.results_canvas.create_window(450, 230, window=buttonExit)
        self.results_canvas.create_text(25, 55, font=font, text="List:",
                                        anchor=W)
        self.results_canvas.create_text(25, 85, font=font, text="Score:",
                                        anchor=W)
        self.results_canvas.create_text(25, 115, font=font, text="Time:",
                                        anchor=W)
        self.results_canvas.create_text(25, 145, font=font, text="Best Score:",
                                        anchor=W)
        self.results_canvas.create_text(25, 175, font=font, text="Best Time:",
                                        anchor=W)
        self.list_name = self.results_canvas.create_text(300, 55, font=font,
                                                         anchor=E)
        self.score_number = self.results_canvas.create_text(300, 85, font=font,
                                                            anchor=E)
        self.time_number = self.results_canvas.create_text(300, 115, font=font,
                                                           anchor=E)
        self.best_score = self.results_canvas.create_text(300, 145, font=font,
                                                          anchor=E)
        self.best_time = self.results_canvas.create_text(300, 175, font=font,
                                                         anchor=E)
        self.results_canvas.pack()
        
    def calculate(self, word_list, time_elapsed):
        """Calculate and display the users score and time, as well as personal
           bests"""
        score = 0
        user_id = self.parent.user.uid
        list_id = word_list.l_id
        self.results_list.add_list(word_list.words)
        for word in word_list.words:
            if word.isCorrect:
                score += 1
        previous_records = self.parent.db.sql("""SELECT best_score, best_time 
                           FROM user_list_map WHERE list_id = '%d'
                           AND user_id = '%d'"""
                           %(list_id, user_id))
        
        try:
            best_score = max(score, previous_records[0][0])
            best_time = min(time_elapsed, previous_records[0][1])
            self.parent.db.sql("""UPDATE user_list_map SET best_score='%d',
                           best_time='%d' WHERE list_id = '%d' AND
                           user_id = '%d'"""
                           %(best_score, best_time, list_id, user_id))
        except IndexError:
            #If the list has not been played before, create a record
            best_score = score
            best_time = time_elapsed
            print "Creating"
            self.parent.db.sql("""INSERT INTO user_list_map VALUES
                               ('%d', '%d', '%d', '%d')"""
                               %(user_id, list_id, best_score, best_time))
        self.results_canvas.itemconfig(self.list_name, text=word_list.name)
        self.results_canvas.itemconfig(self.score_number, text=score)
        self.results_canvas.itemconfig(self.time_number, text=time_elapsed)
        self.results_canvas.itemconfig(self.best_score, text=best_score)
        self.results_canvas.itemconfig(self.best_time, text=best_time)
   
    def restart(self):
        """Clear the results page and restart the game with the current list"""
        self.results_list.clear()
        self.parent.start_game(self.parent.current_list)

    def new_selection(self):
        """Clear the results page and return to the start screen"""
        self.results_list.clear()
        self.parent.new_list()
Example #36
0
class Scrolling_Area(Frame, object):

    def __init__(self, master, width=None, anchor=N, height=None, mousewheel_speed = 2, scroll_horizontally=True, xscrollbar=None, scroll_vertically=True, yscrollbar=None, background=None, inner_frame=Frame, **kw):
        Frame.__init__(self, master, class_="Scrolling_Area", background=background)

        self.grid_columnconfigure(0, weight=1)
        self.grid_rowconfigure(0, weight=1)
        
        self._width = width
        self._height = height

        self.canvas = Canvas(self, background=background, highlightthickness=0, width=width, height=height)
        self.canvas.grid(row=0, column=0, sticky=N+E+W+S)

        if scroll_vertically:
            if yscrollbar is not None:
                self.yscrollbar = yscrollbar
            else:
                self.yscrollbar = Scrollbar(self, orient=VERTICAL)
                self.yscrollbar.grid(row=0, column=1,sticky=N+S)
        
            self.canvas.configure(yscrollcommand=self.yscrollbar.set)
            self.yscrollbar['command']=self.canvas.yview
        else:
            self.yscrollbar = None

        if scroll_horizontally:
            if xscrollbar is not None:
                self.xscrollbar = xscrollbar
            else:
                self.xscrollbar = Scrollbar(self, orient=HORIZONTAL)
                self.xscrollbar.grid(row=1, column=0, sticky=E+W)
            
            self.canvas.configure(xscrollcommand=self.xscrollbar.set)
            self.xscrollbar['command']=self.canvas.xview
        else:
            self.xscrollbar = None

        self.rowconfigure(0, weight=1)
        self.columnconfigure(0, weight=1)
        
        self.innerframe = inner_frame(self.canvas, **kw)
        self.innerframe.pack(anchor=anchor)
        
        self.canvas.create_window(0, 0, window=self.innerframe, anchor='nw', tags="inner_frame")

        self.canvas.bind('<Configure>', self._on_canvas_configure)

        Mousewheel_Support(self).add_support_to(self.canvas, xscrollbar=self.xscrollbar, yscrollbar=self.yscrollbar)

    @property
    def width(self):
        return self.canvas.winfo_width()

    @width.setter
    def width(self, width):
        self.canvas.configure(width= width)

    @property
    def height(self):
        return self.canvas.winfo_height()
        
    @height.setter
    def height(self, height):
        self.canvas.configure(height = height)
        
    def set_size(self, width, height):
        self.canvas.configure(width=width, height = height)

    def _on_canvas_configure(self, event):
        width = max(self.innerframe.winfo_reqwidth(), event.width)
        height = max(self.innerframe.winfo_reqheight(), event.height)

        self.canvas.configure(scrollregion="0 0 %s %s" % (width, height))
        self.canvas.itemconfigure("inner_frame", width=width, height=height)

    def update_viewport(self):
        self.update()

        window_width = self.innerframe.winfo_reqwidth()
        window_height = self.innerframe.winfo_reqheight()
        
        if self._width is None:
            canvas_width = window_width
        else:
            canvas_width = min(self._width, window_width)
            
        if self._height is None:
            canvas_height = window_height
        else:
            canvas_height = min(self._height, window_height)

        self.canvas.configure(scrollregion="0 0 %s %s" % (window_width, window_height), width=canvas_width, height=canvas_height)
        self.canvas.itemconfigure("inner_frame", width=window_width, height=window_height)
Example #37
0
import Tkinter
import Image
from Tkinter import Tk, BOTH
from ttk import Frame, Button, Style
import cv2
import os
import time
import itertools
from Tkinter import Tk, Frame, BOTH, Button, RIGHT, RAISED
from Tkinter import BooleanVar, Checkbutton, PhotoImage, Canvas
from Tkinter import Scale, StringVar, END, Listbox, Label, Menu
from PIL import Image
import ttk
import thread
import pylab

root = Tk()
cwgt = Canvas(root)
cwgt.pack(expand=True, fill=BOTH)
image1 = PhotoImage(file="1.png")
# keep a link to the image to stop the image being garbage collected
cwgt.img = image1
cwgt.create_image(0, 0, image=image1)
b1 = Button(cwgt, text="Hello", bd=0)
cwgt.create_window(20, 20, window=b1)
root.mainloop()
Example #38
0
width_text, height_text = draw.textsize(text)
draw.text((text_x, text_y), text, fill="white")


photoimage = ImageTk.PhotoImage(image)
Label(root, image=photoimage).place(x=0,y=0)

entry_pady = 7
Entry(root, background="white").place(x=text_x, y=text_y + height_text +entry_pady)

###################################################
# Another example

toplevel = Toplevel(root)
toplevel.resizable(width=False, height=False)

image_file = io.BytesIO(base64.b64decode(BASE64_BACKGROUND))
image = Image.open(image_file)

photoimage2 = ImageTk.PhotoImage(image)

canvas = Canvas(toplevel,width=width, height=height)
canvas.create_image((0,0), image=photoimage2, anchor="nw")
canvas.create_text((text_x, text_y), text=text, fill="white", anchor="nw")
canvas.pack()

entry = Entry(canvas, background="white")
canvas.create_window((text_x, text_y + height_text +entry_pady), window=entry, anchor="nw")

root.mainloop()
Example #39
0
def start():
    global canvas
    canvas = Canvas(root, width=width, height=height)
    canvas.pack()

    x=50
    y=15


    entry_file1name = Entry(canvas, width=65, font=(14), bd=3, textvariable=file1, state=DISABLED)
    canvas.create_window((x, y), window=entry_file1name, anchor="nw")

    btn_Browse1 = Button(canvas, text="Browse DICOM File", width=20, background="white", command=browse_file(1))
    btn_Browse1.bind('<Return>', browse_file(1))
    canvas.create_window((x+620, y-5), window=btn_Browse1, anchor="nw")

    y = y + 40

    entry_file2name = Entry(canvas, width=65, font=(14), bd=3, textvariable=file2, state=DISABLED)
    canvas.create_window((x, y), window=entry_file2name, anchor="nw")


    btn_Browse2 = Button(canvas, text="Browse DICOM File", width=20, background="white", command=browse_file(2))
    btn_Browse2.bind('<Return>', browse_file(2))
    canvas.create_window((x + 620, y), window=btn_Browse2, anchor="nw")

    y = y + 40

    check1 = Checkbutton(canvas, text="PName", variable=pNameCheck)
    canvas.create_window(x, y, window=check1, anchor='w')

    check1 = Checkbutton(canvas, text="Num Of Beams", variable=numBeamsCheck)
    canvas.create_window(x+80, y, window=check1, anchor='w')

    check1 = Checkbutton(canvas, text="B Name", variable=bNameCheck)
    canvas.create_window(x+200, y, window=check1, anchor='w')

    check1 = Checkbutton(canvas, text="Type", variable=typeCheck)
    canvas.create_window(x+320, y, window=check1, anchor='w')

    check1 = Checkbutton(canvas, text="EN", variable=EnCheck)
    canvas.create_window(x + 410, y, window=check1, anchor='w')

    check1 = Checkbutton(canvas, text="C Angle", variable=cAngleCheck)
    canvas.create_window(x, y+30, window=check1, anchor='w')

    check1 = Checkbutton(canvas, text="G Angle", variable=gAngleCheck)
    canvas.create_window(x+80, y + 30, window=check1, anchor='w')

    check1 = Checkbutton(canvas, text="B Meterset Unit", variable=bMetersetUnitCheck)
    canvas.create_window(x+200, y+30, window=check1, anchor='w')

    check1 = Checkbutton(canvas, text="B Meterset", variable=bMetersetCheck)
    canvas.create_window(x + 320, y+30, window=check1, anchor='w')

    check1 = Checkbutton(canvas, text="Num CP", variable=numCPCheck)
    canvas.create_window(x + 410, y+30, window=check1, anchor='w')

    y = y + 50

    frame = Frame(canvas)

    canvas.create_window((x, y), window=frame, anchor="nw")

    global text
    text = Text(frame, font=("Helvetica", 12))
    text.pack(side="left", fill="y")

    scrollbar = Scrollbar(frame, orient="vertical")
    scrollbar.config(command=text.yview)
    scrollbar.pack(side="right", fill="y")

    text.config(yscrollcommand=scrollbar.set)

    y=y+440
    global ERROR_LBL
    ERROR_LBL = Label(canvas, fg='black', justify='left')
    canvas.create_window((x, y), window=ERROR_LBL, anchor="nw")

    y = y + 30

    btn_Compare = Button(canvas, text="Compare", font=(14), foreground="white", background="#062569", width=13, command=compare)
    btn_Compare.bind('<Return>', compare)
    canvas.create_window((x, y), window=btn_Compare, anchor="nw")

    btn_Exit = Button(canvas, text="Exit", font=(14), foreground="white", background="#062569", width=13,
                         command=quit)
    btn_Exit.bind('<Return>', quit)
    canvas.create_window((x+150, y), window=btn_Exit, anchor="nw")

    root.protocol("WM_DELETE_WINDOW", quit)
    root.resizable(0, 0)
    root.mainloop()
Example #40
0
class GameFrame(Frame):
    
    def __init__(self, parent):
        Frame.__init__(self, parent, width=600, height=250)
        self.parent = parent    
       
    def init_gui(self):

        correct = """R0lGODlhQABAAOeqAAAAAAABAAACAAADAAAEAAAFAAAFAQAGAQAHAQEHAQEIAQEJAQEKAQEKAgEL
AgEMAgENAgEPAgIPAgIQAgIRAwITAwIUAwIVBAMVBAIWAwIWBAIXBAMXBAMYAwIZBAMZBAMaBQMb
BAMdBQMeBQMfBQMgBQQgBQQiBgQkBgQlBgQmBwQnBwUnBgUoBwUqBwUrBwUsBwUsCAUtCAUuCAUv
CAYvCAUxCAYyCQYzCAY0CQY1CgY2CQY3CQc3CgY5Cgc5Cgc7Cgc+Cwg/CwdACwhACwhBCwhCCwhG
DAhHDAhIDQlLDQlMDglNDglPDglQDglRDglSDgpUDwpWDwtWDwpXDwpZDwtaEAtfEQtgEQthEQxk
EQxkEgxlEgxnEgxoEw1oEgxpEgxqEw1qEg1rEwxsEw1sEg1tEw1vEw1wFA1yFA5yFA1zFA50FA50
FQ51FA52FQ95Fg56FQ57Fg97FQ99Fg9+Fg9/Fg+AFhCAFg+BFhCCFhCEFxCGFxCHGBCIGBCKGBGK
GBCLGBGMGRGNGRGOGRGQGRGRGRGRGhGSGRGTGhKTGRKTGhGUGhKVGhKXGhKXGxKYGhKaGxKbGxKc
GxKdGxKdHBOdGxOdHBKeHBOeGxOeHBOfHBOgHBOhHBOiHBOiHROjHBOjHROkHRSkHROlHRSlHRSm
HRSnHRSoHRSrHv//////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBH
SU1QACH5BAEKAP8ALAAAAABAAEAAAAj+AP8JHEiwoMGDCBMqPAhgocOHEB0CaBixosWFEyde3MhR
YEaKHUNC/CiyJMYHCTSaXGkQgAcVKVnKHAhgBZIIIGeanAiki4acOkVOlJInBNCgHQEIELOIxFGk
GwFASLNJxVOoFgFUiFOKx1WsEQFY0GOqiQCwIQF0ECSqi4KvaDGKWNRJjgW4cRMCOEGI06AWePMy
ROGnU6QggQUXBIBij6dPUBIrptk4lKkuAiRPBpCCT6hQdipoVgxgBB9PnAzBGC0YQAY7mzRJWsI6
L4AIazTpVkNg8kgFXDhpwqTorm+JA6aE0kRpk47acQEkMUVJU6cs0NEC8FGKEiVOfQb+ZMcKgMWk
TM0joRgPFQCIQMw1bXpy9rjC22+Ea+IUZwJ7pAZcIVx1jdjwX1AAKFHJJt5lgsWBOgGwAyScUHKJ
JoJIAKFMpRlSIXOj3LAhSwAkgMeHlIDixYgkauGdJpds4ggFLO5EhCOaWMKcKUMEEGFaJfzBoG6d
vAEBgipl9cAZoFRXXSQ41OgRAAHUJgATp1Sn2yZjJNBeARi8FZYMoGByoW6IrEbeD04Y9RAAFBwy
JHOYdCFlS1T8UQROCwVgxocwapIIB3cuBsAWppgxQ5KLGfGibpSI4kShLTnQRiqEWPHBUQCYAJ9u
zHHCxwGUtiQCH6RwYscRBOS0QBjKsYGqCSk1lMpQDoxs0okjaVjVEABCVBIfc6CwccBxADwxCaiF
VEHqBosAqhsnMdiaUABoDCsJIDq40YmZkIJCBgP2/VMiIAxWd4kkTsr6SA7W3ndBJMPJai8naSBQ
Lk0zxKalvZo00kO8DgXAxID2UmLJHARLtAAYsdorCQ0NS/TBHcMytwkdFb8JgyHDYuKJCx2/OcQm
mFhCSScM73tfFNRhMsoLJY+UwBeneAKHly7fZ0EdqOxQc0UAvFBGBT0/JEAD9SWN0XEBAQA7
"""
        wrong = """R0lGODlhQABAAOexAAAAAAEAAAIAAAMAAAQAAAUAAAYAAAgAAAkAAAoAAAwAAA0AAA4AAA8AABAA
ABEAABIAABMAABQAABUAABYAABcAABgAABkAABoAABsAABwAAB0AAB4AAB8AACAAACEAACIAACMA
ACQAACUAACYAACgAACkAACoAACsAACwAAC0AAC4AADEAADMAADQAADUAADYAADgAADkAADoAADsA
ADwAAD0AAD4AAD8AAEEAAEIAAEQAAEUAAEkAAEoAAEsAAFQAAFUAAFgAAFkAAF0AAF8AAGEAAGIA
AGQAAGcAAGgAAGoAAGsAAG0AAG4AAG8AAHAAAHMAAHgAAHsAAHwAAIEAAIYAAIoAAI4AAJMAAJQA
AJUAAJYAAJcAAJgAAJkAAJoAAJsAAJwAAJ0AAJ4AAKAAAKEAAKQAAKcAAKgAAKkAAKoAAK0AAK4A
AK8AALAAALEAALMAALUAALcAALgAALkAALoAALsAAL4AAL8AAMAAAMEAAMQAAMUAAMYAAMgAAMkA
AMoAAMwAAM0AAM4AAM8AANAAANEAANIAANMAANQAANUAANYAANcAANgAANkAANoAANsAAN0AAN4A
AOAAAOEAAOIAAOMAAOQAAOYAAOgAAOkAAOoAAOwAAO0AAO4AAO8AAPAAAPEAAPIAAPMAAPQAAPUA
APYAAPcAAPgAAPkAAPoAAPsAAPwAAP0AAP4AAP8AAP//////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBH
SU1QACH5BAEKAP8ALAAAAABAAEAAAAj+AP8JHEhwIAAABRMqXLjwIMOHCQFAgIAQosWGFjRUvNhQ
A5sxDTZyvAggwhpAK0SOFAigwxxXo7aEXGmxZBlSqwbFUMmx5Z1To0qN4oKAJ02DCsiQEmqKUA2j
DwFsoFOKFKlRpE55CQB1JQABZE5dtVqqEIyuES28STXW6ihWXxweNQhAzCqsVq+eMpQCrUEKamCN
wpt3VKsvBPwyBEDASyvChVcdKuEXQIU0giEXVtVFgWKFCbKo0lyY1SEVXQFcaJM5r+u8pbY4+ExQ
AZbXuK+uQjTDKAAMckaTdh00pueRCK6IEpqb+ClEOVSqliN0+OugpbgkrinASinmzYn+l0KEYyMA
Cm3EWseNVZUXuQ0BVFnVNvxrU4peIATQ4AzM9c0ZtlVqVAhmX4CpKBLCQR8UYkp9BxLHShdFKUTA
FDBFyB4ppugBwn4m8CGWhuydIpNKBkxhCoD2mXLHhwad8MeKJLKnBQMbFSAFKODVeJUpe4ggHQiH
0OjjVUJtcQBCAkTBI4u5jXLKIBz4VsEjQB05FipdHLTEKdUdKWUjE6QmQSMPQskeK1sQ4QqEGmJl
SiMSVKbBIOppOYoqj6lJXFaFbPAZACT0kaeYcEaI1SmBnEDbPwCgYKiWlOZ1iiAsPMoSCYMYWSmJ
QTGS0lwAaNBIlp8qWoolJGhaEAD+EjziaapRlpIJjHMZVEGRiaYqJyWU5foqCH8cSuuWjrTgalQn
iHisa6csYsOyEAFgAiCzVhqUJOUJG5UHiWSL6Ca9eVstBYw8mKonZ5lbUxOspJoKGvC5q1AASbDi
Z4CrgFGhvQkN0ESatI6CChgPUAvRAFB40uOxYkSg8EIBONGJuNpWZcYCE7+qxFKDPesWh2psZy4A
R7TS67F7viFAxwAg8UrIIrO3ShwJKCwAE6nQXDN7qLxBwbIDPBHKyj9bZUobGq0kwBOdPJz0dUvB
cQFtADARSpg+yrlvYRzaMVtNSLDlM6ikdJLu1yOfwse/DR0xM9tYlcLJCxIgQrD+mKgAMtO9SvSJ
6CmUTAsAB37s3TUqfmTA0wBOjKwlKpDsUBGheIyo5yl6tEoQw1Gz/eMkPIgEwAh5oKrlKXl4/s8B
DWN8IFaadPtqBn2gIrqcf6BwUAaCCIdoKDs1xMAfPW+uiQv7vaCIumiX8ol+USHg7NelYPKDeTgg
InWAWWFSbrUN1KG4fVhVIoR0OSCiOvioRKID1mpVxWJQlhDhmwyI3HXgKZEonVcywAboBegUmghC
alRwCH0FKHvzOwoAJuAG3R3QEz2oTAkM4T+qfWJ8EkwAHDronE9EsCYpKMT7sBIK6gkLAAFow2jE
wwkfPAoAMCBEVcZiCk0U72RWBEiD4jAxBFcBgAaEoBEqJmE7dwFgATcRSikuYQRqASAGg1DFKSAh
QIBBCgJh4NAmijAxAKxAEJiwnBcN4gAwdAIIHYNUB24Qx8U8QFn2guEaI/KZgAAAOw=="""
        self.correct_img = PhotoImage(data=correct)
        self.wrong_img = PhotoImage(data=wrong)
        self.entry = Entry(self.parent, width=15, 
                           font=('Helvetica', 20, 'normal'), justify=CENTER)
        self.entry.bind("<Return>", lambda x:self.buttonSubmit.invoke())
        self.buttonNext = Button(self.parent, width=10, text="Next Word",
                            command=self.next_word, state=DISABLED)
        self.buttonSubmit = Button(self.parent, width=10, text="Submit",
                              command=self.submit_word)
        buttonReplay = Button(self.parent, width=10, text="Repeat Word",
                              command=self.replay_word)
        self.game_canvas = Canvas(self, width=600, height=250, bg="#FFFFFF")
        self.word_display = self.game_canvas.create_text((300, 105), text="?",
                           font=("Helvetica", 50, "bold"), fill="#004183")
        self.progress_display = self.game_canvas.create_text((593, 5),
                                text="%d/%d"%(1, self.parent.list_length),
                                font=("Helvetica", 25, "bold"), anchor=NE)
        self.timer_display = self.game_canvas.create_text(10, 5, anchor=NW,
                                                        font=("Helvetica", 25))
        self.progress_bar = ProgressBar(self, width=300,
                                       increments=len(self.parent.current_list.words))
        self.game_canvas.create_window(500, 10, anchor=NE, window=self.progress_bar)
        self.game_canvas.create_window(300, 180, window=self.entry)
        self.game_canvas_image = self.game_canvas.create_image(500, 170)
        self.game_canvas.create_window(150, 230, window=buttonReplay)
        self.game_canvas.create_window(300, 230, window=self.buttonSubmit)
        self.game_canvas.create_window(450, 230, window=self.buttonNext)
        self.game_canvas.pack()
        
    def start(self):
        self.current_list_iter = iter(self.parent.current_list.words)
        self.current_word = self.current_list_iter.next()
        self.parent.festival.speech(self.current_word)
        self.time_elapsed = 0
        self.init_gui()
        self.tick()

    def next_word(self):
        try:
            self.current_word = self.current_list_iter.next()
            index = self.parent.current_list.words.index(self.current_word) + 1
            self.game_canvas.itemconfig(self.progress_display, text="%d/%d"
                                   %(index, self.parent.list_length))
            if index == self.parent.list_length:
                self.buttonNext.configure(text="Finish")
            self.game_canvas.itemconfig(self.word_display, text="?", fill="#004183")
            self.game_canvas.itemconfig(self.game_canvas_image, state=HIDDEN)
            self.buttonSubmit.configure(state=NORMAL)
            self.buttonNext.configure(state=DISABLED)
            self.parent.festival.speech(self.current_word)
        except StopIteration:
            self.list_complete()

    def list_complete(self):
        self.parent.after_cancel(self.timer)
        self.parent.show_results(self.time_elapsed)
        

    def replay_word(self):
       self.parent.festival.speech(self.current_word)

    def submit_word(self, event=None):
        guess = self.entry.get()
        self.entry.delete(0, END)
        if guess == self.current_word.word:
            self.correct(guess)
        else:
            self.incorrect(guess)
        self.game_canvas.itemconfig(self.word_display, text='%s'%(self.current_word))
        self.buttonNext.configure(state=NORMAL)
        self.buttonSubmit.configure(state=DISABLED)
        self.game_canvas.itemconfig(self.game_canvas_image, state=NORMAL)
        

    def correct(self, guess):
        self.current_word.setAnswer(guess, True)
        self.game_canvas.itemconfig(self.game_canvas_image, image=self.correct_img)
        self.game_canvas.itemconfig(self.word_display, fill="#139E1C")
        self.progress_bar.increment(True)

    def incorrect(self, guess):
        self.current_word.setAnswer(guess, False)
        self.game_canvas.itemconfig(self.game_canvas_image, image=self.wrong_img)
        self.game_canvas.itemconfig(self.word_display, fill="#F30000")
        self.progress_bar.increment(False)

    def tick(self):
        seconds = (self.time_elapsed)%60
        minutes = self.time_elapsed/60
        separator = ":" if seconds > 9 else ":0"
        formatted_time = "%d%s%d"%(minutes, separator, seconds)
        self.game_canvas.itemconfig(self.timer_display, text=formatted_time)
        self.time_elapsed +=1
        self.timer = self.parent.after(1000, self.tick)
Canvas and scrollbar"""

scrollbar = Scrollbar(window)
canvas = Canvas(window,
                width=460,
                height=700,
                yscrollcommand=scrollbar.set,
                scrollregion=(0, 0, 0, 890))
canvas.pack(side=LEFT)
scrollbar.pack(side=LEFT, fill=Y)
scrollbar.config(command=canvas.yview)

#Create invisible frames to organize layout

frame1 = Frame(window, width="200", padx=10)  #where widgets will be
canvas.create_window(230, 440, window=frame1)
#This will make the frame stay static:
for i in range(1, 8):
    frame1.grid_rowconfigure(i, minsize=50, weight=1)
for i in range(9, 14):
    frame1.grid_rowconfigure(i, minsize=30, weight=1)
for i in [15, 16]:
    frame1.grid_rowconfigure(i, minsize=60, weight=1)
for i in range(19, 22):
    frame1.grid_rowconfigure(i, minsize=30, weight=1)
frame1.grid_columnconfigure(1, minsize=180, weight=1)

frameOUT = Frame(window, width="812", height="700", bg="thistle4")  #For plots
frameOUT.pack(side=LEFT, fill=BOTH, expand=1)
#These will make the plots appear centered
frameOUT.grid_rowconfigure(0, minsize=5, weight=1)
Example #42
0
class OfxConverter(Frame):
  
    def __init__(self, parent):
        Frame.__init__(self, parent, background=u"white")   
         
        self.parent = parent
        self.guiMap = []
        self.debitValue = StringVar()
        self.creditValue = StringVar()
        self.row = 0
        self.frame = Frame()

        self.UNUSED = u"Unused"
        
        self.initUI()

    def writeLog(self,*msgs):
        self.log[u'state'] = u'normal'
        if self.log.index(u'end-1c')!=u'1.0':
            self.log.insert(u'end', u'\n')
        for msg in msgs:
            self.log.insert(u'end', msg)
##        self.log['state'] = 'disabled'

    def help(self):
        t = Toplevel()
        t.wm_title(u"About")
        t.transient()

        photo = ImageTk.PhotoImage(file=u"chameleon.png")
        
##        photo = PhotoImage(file="chameleon.gif")
        w = Label(t, image=photo)
        w.photo = photo
        w.pack(fill=constants.BOTH,side=constants.LEFT,expand=True)
        
        l = Label(t, text=u"OFX Converter\n\n"+
                  u"Convert files in csv format to the\nofx format " +
                  u"which is used by a lot\nof accounting programs " +
                  u"like gnucash\n\n Written in Python 3\nby Floris Groenendijk"
                  )
        l.pack(side=constants.TOP, fill=u"both", expand=False, padx=20, pady=20)

    def onComboboxChanged(self, event):
        if event.widget.get() == u'credit/debit':
            # check which checkbox in which column was changed
            for i in xrange(len(self.comboBoxes)-1):
                if self.comboBoxes[i] == event.widget:
                    break
                
            values = []

            # retrieve the values of the labels in that column
            for j in xrange(len(self.labels)):
                if self.labels[j][i][u'text'] not in values:
                    values.append(self.labels[j][i][u'text'])
            
            self.creditCombo[u'values'] = values
            self.creditCombo.current( 0 )

            if len( values ) > 1:
                self.debitCombo[u'values'] = values
                self.debitCombo.current( 1 )

    def onFrameConfigure(self, event):
        # Reset the scroll region to encompass the inner frame
        self.canvas.configure(scrollregion=self.canvas.bbox(u"all"))

    def initUI(self):
      
        self.parent.title(u"OFX Converter")

        menubar = Menu(self.parent)
        self.parent.config(menu=menubar)
        
        fileMenu = Menu(menubar)
        fileMenu.add_command(label=u"Open", command=self.openFile, accelerator=u"Ctrl-o")
        fileMenu.add_command(label=u"Exit", command=self.onExit, accelerator=u"Ctrl-e", underline=1 )
        menubar.add_cascade(label=u"File", menu=fileMenu)
        helpMenu = Menu(menubar)
        helpMenu.add_command(label=u"About", command=self.help, accelerator=u"Ctrl-i")
        menubar.add_cascade(label=u"Info", menu=helpMenu)

        notebook = ttk.Notebook( self.parent )
        tabFilesMain = Frame( notebook )

        self.tabFiles = Frame( tabFilesMain )
        self.tabFiles.pack(fill=constants.BOTH)

        button = ttk.Button( tabFilesMain, command=self.parseFile, text=u"Process" )
        button.pack(side=u"bottom", fill=constants.X, padx=5, pady=5)
        
        tabLogging = Canvas( notebook )
        tabLogging.grid_rowconfigure(0, weight=1)
        tabLogging.grid_columnconfigure(0, weight=1)

        # begin of custom csv frame

        tabCustomCsv = Frame( notebook )

        verticalScrollFrame = Frame( tabCustomCsv )
        verticalScrollFrame.grid( row=0, column=0, rowspan=3, sticky=u"WNS" )

        tabCustomCsv.grid_columnconfigure(0, weight=0)
        tabCustomCsv.grid_columnconfigure(1, weight=1)
        tabCustomCsv.grid_rowconfigure(2,weight=1)

        self.comboFrame = Frame( tabCustomCsv )
        self.comboFrame.grid( row=1, column=1, sticky=u"WE" )
 
        canvasFrame = Frame( tabCustomCsv)
        canvasFrame.grid( row=2, column=1, sticky=u"NEWS" )

        horizontalScrollFrame = Frame( tabCustomCsv )
        horizontalScrollFrame.grid( row=3, column=1, columnspan=1, sticky=u"WE" )
        
        self.canvas = Canvas( canvasFrame, highlightthickness=0 )

        scrollbar=Scrollbar( horizontalScrollFrame,orient=u"horizontal",command=self.canvas.xview)
        self.canvas.configure(xscrollcommand=scrollbar.set)

        self.canvas.pack(fill=constants.BOTH,expand=True)
        scrollbar.pack(side=u"bottom", fill=constants.X)

        scrollbar=Scrollbar( verticalScrollFrame,orient=u"vertical",command=self.canvas.yview)
        self.canvas.configure(yscrollcommand=scrollbar.set)

        scrollbar.pack(side=u"left", fill=constants.Y)
        self.canvas.pack(fill=constants.BOTH,expand=1,anchor=u"nw")

        # end of custom csv frame

        # begin of config frame

        configurationFrame = Frame( tabCustomCsv )

        Label( configurationFrame, text=u"Values to determine whether the debit field concerns a debit or credit transaction and set the currency" ).pack(anchor=constants.W)

        currencyLine = Frame( configurationFrame )
        currencyLine.pack(fill=constants.X)
        Label( currencyLine, text=u"currency", width=7, anchor=constants.W ).pack(side=constants.LEFT)
        self.currencyCombo = ttk.Combobox( currencyLine,width=30,text=u"currency" )
        self.currencyCombo.pack(side=constants.LEFT)

        config = Config()
        self.currencies = config.getCurrencies()
        self.currencyCombo[u'values'] = list(sorted(self.currencies.keys()))

        Label( configurationFrame, text=u"credit", width=7, anchor=constants.W ).pack(side=constants.LEFT)
        self.creditCombo = ttk.Combobox(configurationFrame,width=10,text=u"credit")
        self.creditCombo.pack(side=constants.LEFT)

        Label( configurationFrame, text=u"debit", width=6, anchor=constants.W ).pack(side=constants.LEFT)
        self.debitCombo = ttk.Combobox( configurationFrame,width=10,text=u"debit" )
        self.debitCombo.pack(side=constants.LEFT)

        Button( configurationFrame, text=u"save configuration", command=self.saveConfig ).pack(side=constants.RIGHT )

        configurationFrame.grid( row=4, column=0, columnspan=2, sticky=u"WES")

        # end of config frame

        self.log = Text(tabLogging, wrap=u'word')
        self.log.grid(row=0,column=0,sticky=u'news')

        hScroll = Scrollbar(tabLogging, orient=constants.HORIZONTAL, command=self.log.xview)
        hScroll.grid(row=1, column=0, sticky=u'we')
        vScroll = Scrollbar(tabLogging, orient=constants.VERTICAL, command=self.log.yview)
        vScroll.grid(row=0, column=1, sticky=u'ns')
        self.log.configure(xscrollcommand=hScroll.set, yscrollcommand=vScroll.set)

        notebook.add( tabFilesMain, text=u"Files to process" )
        notebook.add( tabCustomCsv, text=u"Custom csv" )
        notebook.add( tabLogging, text=u"Logging" )

        notebook.pack(fill=constants.BOTH,expand=1,anchor=constants.N)

        self.tabFiles.grid_columnconfigure( 0, weight=1 ) 

    def addFile(self,filename,ibans):
        if filename != u"" and len(ibans) > 0:
            Label(self.tabFiles, text=filename,
                    borderwidth=3).grid(row=self.row,column=0,sticky=constants.W,padx=1)
            
            ibanList = []
            for iban in ibans:
                ibanList.append( iban[:8] )
            combo = ttk.Combobox(self.tabFiles,values=ibanList)
            combo.current(0)
            if len(ibanList) == 1:
                combo.configure(state=constants.DISABLED)
            combo.grid(row=self.row,column=1,sticky=constants.E,padx=1)
            
            state = IntVar()
            c = Checkbutton(self.tabFiles,variable=state)
            c.grid(row=self.row,column=2)
            self.row += 1
            ttk.Separator(self.tabFiles).grid(row=self.row, sticky=u"ew", columnspan=3 )
            self.row += 1
            self.guiMap.append( [ filename, ibans, combo, c, state ] )

    def addFileToCustomTab(self,filename):
        if filename != u"":

            if self.frame:
                self.frame.pack_forget()
                self.frame.destroy()
            self.frame = Frame( self.canvas )
            self.canvas.create_window((0,0),window=self.frame,anchor=u'nw')
            self.frame.bind(u"<Configure>", self.onFrameConfigure)
             
            file = csv.reader( open(filename) )
            lines = 1

            transaction = Transaction()
            fields = transaction.fields
            fields.insert(0,u"main account")
            fields.insert(0,self.UNUSED)

            self.comboBoxes = []
            self.labels = collections.defaultdict(list)
            
            for row in file:
                column = 0
                for field in row:
                    if lines == 1:
                        combo = ttk.Combobox(self.frame,values=transaction.fields,state=u"readonly")
                        combo.current(0)
                        combo.grid(row=0,column=column,sticky=constants.W)
                        self.comboBoxes.append( combo )
                        combo.bind(u'<<ComboboxSelected>>', self.onComboboxChanged)
                        nextColumn = column + 1
                        ttk.Separator(self.frame,orient=constants.VERTICAL).grid(row=0, column=nextColumn, sticky=u"ns")
                            
                    label = Label(self.frame,text=field,borderwidth=3)
                    label.grid(row=lines,column=column,sticky=constants.W,padx=1)
                    self.labels[lines-1].append( label )
                    column = column + 1
                    ttk.Separator(self.frame,orient=constants.VERTICAL).grid(row=lines, column=column, sticky=u"ns")
                    column = column + 1

                lines = lines + 1
                if lines > 11:
                    break

    def saveConfig(self):
        fields = {}
        memos = []
        for i in xrange( len(self.comboBoxes) - 1 ):
            key = self.comboBoxes[i].get()
            if key == self.UNUSED:
                continue
            elif key == u'credit/debit':
                fields[ key ] = u' '.join( [ unicode(i), self.creditCombo.get(), self.debitCombo.get() ] )
            elif key == u'memo':
                memos.append( unicode(i) )
            elif key == u'main account':
                fields[ key ] = self.labels[0][i][u'text']
            else:
                fields[ key ] = i

        if len(memos) > 0:
            fields[u'memo'] = u' '.join( memos )

        config = Config()
        (bankKey, bankValue) = config.addToConfig( fields )
        self.writeLog( u'key', bankKey, u"with value", bankValue, u"added to config file" ) 

    def openFile(self):
        if sys.version_info >= (3,0):
            filename = filedialog.askopenfilename(parent=self.parent,
                                                filetypes=[(u'Csv files',u'.csv'),
                                                           (u'All Files',u'.*')],
                                                title=u'Select the csv')
        else:
            filename = tkFileDialog.askopenfilename(parent=self.parent,
                                                filetypes=[(u'Csv files',u'.csv'),
                                                           (u'All Files',u'.*')],
                                                title=u'Select the csv')
        if filename != u"":
            self.writeLog( u'File added: ', filename )

            bank = Bank()

            ibans = bank.searchMainIban( filename )

            # If mainIban contains more than one iban,
            # let the user select which one is the main iban
            # Otherwise we know the bank this csv belongs to

            if len( ibans ) > 1:
                self.writeLog( u'there\'s too many ibans, please select one from the list' )
            elif len( ibans ) == 0:
                self.writeLog( u'No ibans found, is the file correct?' )
                ## adding file to custom csv tab
                
            else:
                self.writeLog( u'Found iban: ', ibans[0][:8] )
                ibanType = ibans[0][:8]

            self.addFile(filename,ibans)
            self.addFileToCustomTab( filename )


    def parseFile(self):

        for guiLine in self.guiMap:
            ( filename, ibans, combo, checkButton, state ) = guiLine

            if state.get():
                ibanType = combo.get()
                
                config = Config()
                fields = config.getCurrentBank( ibanType )

                bankStatement = BankStatement()

                bankStatement.account = ibans[0]

                csvReader = CsvReader(fields)
            
                csvReader.readFile( filename, bankStatement )

                ofx = Ofx()

                ofx.createXmlFile( filename, bankStatement )
                checkButton.configure(state=constants.DISABLED)

    def onExit(self):
        quit()
class Scrolling_Area(Frame, object):

    def __init__(self, master, width=None, anchor=N, height=None, mousewheel_speed = 2, scroll_horizontally=True, xscrollbar=None, scroll_vertically=True, yscrollbar=None, outer_background=None, inner_frame=Frame, **kw):
        Frame.__init__(self, master, class_=self.__class__)

        if outer_background:
            self.configure(background=outer_background)

        self.grid_columnconfigure(0, weight=1)
        self.grid_rowconfigure(0, weight=1)
        
        self._width = width
        self._height = height

        self.canvas = Canvas(self, background=outer_background, highlightthickness=0, width=width, height=height)
        self.canvas.grid(row=0, column=0, sticky=N+E+W+S)

        if scroll_vertically:
            if yscrollbar is not None:
                self.yscrollbar = yscrollbar
            else:
                self.yscrollbar = Scrollbar(self, orient=VERTICAL)
                self.yscrollbar.grid(row=0, column=1,sticky=N+S)
        
            self.canvas.configure(yscrollcommand=self.yscrollbar.set)
            self.yscrollbar['command']=self.canvas.yview
        else:
            self.yscrollbar = None

        if scroll_horizontally:
            if xscrollbar is not None:
                self.xscrollbar = xscrollbar
            else:
                self.xscrollbar = Scrollbar(self, orient=HORIZONTAL)
                self.xscrollbar.grid(row=1, column=0, sticky=E+W)
            
            self.canvas.configure(xscrollcommand=self.xscrollbar.set)
            self.xscrollbar['command']=self.canvas.xview
        else:
            self.xscrollbar = None

        self.rowconfigure(0, weight=1)
        self.columnconfigure(0, weight=1)
        
        self.innerframe = inner_frame(self.canvas, **kw)
        self.innerframe.pack(anchor=anchor)
        
        self.canvas.create_window(0, 0, window=self.innerframe, anchor='nw', tags="inner_frame")

        self.canvas.bind('<Configure>', self._on_canvas_configure)

        Mousewheel_Support(self).add_support_to(self.canvas, xscrollbar=self.xscrollbar, yscrollbar=self.yscrollbar)

    @property
    def width(self):
        return self.canvas.winfo_width()

    @width.setter
    def width(self, width):
        self.canvas.configure(width= width)

    @property
    def height(self):
        return self.canvas.winfo_height()
        
    @height.setter
    def height(self, height):
        self.canvas.configure(height = height)
        
    def set_size(self, width, height):
        self.canvas.configure(width=width, height = height)

    def _on_canvas_configure(self, event):
        width = max(self.innerframe.winfo_reqwidth(), event.width)
        height = max(self.innerframe.winfo_reqheight(), event.height)

        self.canvas.configure(scrollregion="0 0 %s %s" % (width, height))
        self.canvas.itemconfigure("inner_frame", width=width, height=height)

    def update_viewport(self):
        self.update()

        window_width = self.innerframe.winfo_reqwidth()
        window_height = self.innerframe.winfo_reqheight()
        
        if self._width is None:
            canvas_width = window_width
        else:
            canvas_width = min(self._width, window_width)
            
        if self._height is None:
            canvas_height = window_height
        else:
            canvas_height = min(self._height, window_height)

        self.canvas.configure(scrollregion="0 0 %s %s" % (window_width, window_height), width=canvas_width, height=canvas_height)
        self.canvas.itemconfigure("inner_frame", width=window_width, height=window_height)
Example #44
0
class Path:
    def __init__(self, root):
        
        self.canvas = Canvas(root, borderwidth=1, background="#ffffff")
        self.frame = Frame(self.canvas, background="#ffffff")
        self.vsb = Scrollbar(root, orient="vertical", command=self.canvas.yview)
        self.canvas.configure(yscrollcommand=self.vsb.set)
        self.vsb.pack(side="right", fill="y")
        self.canvas.pack(side="left", fill="both", expand=True)
        
        self.canvas.create_window((4,4), window=self.frame, anchor="nw", tags="self.frame")

        self.frame.bind("<Configure>", self.OnFrameConfigure)

        self.data()
        
    def data(self): 
        
        global textPath
        textPath = StringVar()
        global text0a
        text0a = StringVar()
        global text0b 
        text0b = StringVar()
        global text2a 
        text2a = StringVar()
        global text3 
        text3 = StringVar()
        global alphaVar
        alphaVar = IntVar()
        global betaVar 
        betaVar = IntVar()
        global allVar
        allVar = IntVar()
        global text6a
        text6a = "0"
        global filterVar
        filterVar = IntVar()
        global text6b
        text6b = StringVar()
        global t1x
        t1x = ""
        global t2x
        t2x = ""
        global t3x
        t3x = ""
        global t4x
        t4x = ""
        global text8_0
        text8_0 = StringVar()
        global text8_1
        text8_1 = StringVar()
        
        Label(self.frame,text="Path ? ").grid(row=0, column=0)
        Entry(self.frame,textvariable=textPath).grid(row=1, column=0)
        Button(self.frame, text="Valider et afficher", command = affiche_recap).grid(row=1, column=1)
    
        Label(self.frame, text="Green function database information file\n (for a certain depth only for the instance) ?").grid(row=3)
        Entry(self.frame, textvariable=text0a).grid(row=4)
        
        Label(self.frame, text="Output directory (parentdir) ?").grid(row=5)
        Entry(self.frame, textvariable=text0b).grid(row=6)
            
        Label(self.frame, text="Phase name ?").grid(row=9)
        Entry(self.frame, textvariable=text3).grid(row=10)
        
        def afficheAlpha():
            seismicPara["text"]="alpha"
            betaVar.set(0)
            allVar.set(0)
        def afficheBeta():
            seismicPara["text"]="beta"
            alphaVar.set(0)
            allVar.set(0)
        def afficheAll():
            seismicPara["text"]="all"
            alphaVar.set(0)
            betaVar.set(0)
        
        seismicPara = Menubutton(self.frame, text="Seismic Parameter", relief=RAISED)
        seismicPara.grid(row=0)
        seismicPara.menu = Menu(seismicPara, tearoff = 0)
        seismicPara["menu"] = seismicPara.menu

        
        seismicPara.menu.add_checkbutton(label="alpha", variable = alphaVar, command = afficheAlpha)
        seismicPara.menu.add_checkbutton(label="beta", variable = betaVar, command = afficheBeta)
        seismicPara.menu.add_checkbutton(label="all", variable = allVar, command = afficheAll)
        seismicPara.grid(row=11)
        
        
        
        Label(self.frame, text="Filter name ?").grid(row=12)
        Entry(self.frame, textvariable=text6b).grid(row=13)
        
        
        
        Label(self.frame, text="time window t1 ?").grid(row=14)
        Labelt1 = Label(self.frame, text="-->").grid(row=15)
        Button(self.frame, text="time 1", command=self.time1).grid(row=15, column=1)
        
        Label(self.frame, text="time window t2 ?").grid(row=16)
        Labelt1 = Label(self.frame, text="-->").grid(row=17)
        Button(self.frame, text="time 2", command=self.time2).grid(row=17, column=1)
        '''
        Label(self.frame, text="time window t3 ?").grid(row=18)
        Labelt1 = Label(self.frame, text="-->").grid(row=19)        
        Button(self.frame, text="time 3", command=self.time3).grid(row=19, column=1)
        
        Label(self.frame, text="time window t4 ?").grid(row=20)
        Labelt1 = Label(self.frame, text="-->").grid(row=21)
        Button(self.frame, text="time 4", command=self.time4).grid(row=21, column=1)
        '''
        def affiche0():
            convertPara["text"]="No conversion"
            text8_1.set(0)
            
        def affiche1():
            convertPara["text"]="Conversion"
            text8_0.set(0)
    
        convertPara = Menubutton(self.frame, text="Geodetic latitude to geocentric latitude conversion", relief=RAISED)
        convertPara.grid(row=0)
        convertPara.menu = Menu(convertPara, tearoff = 0)
        convertPara["menu"] = convertPara.menu

        convertPara.menu.add_checkbutton(label="No conversion", variable = text8_0, command = affiche0)
        convertPara.menu.add_checkbutton(label="Conversion", variable = text8_1, command = affiche1)
        
        convertPara.grid(row=22)
        b = Checkbutton(self.frame, text = "apply filter", variable = filterVar)
        b.grid(row=23, column = 0)
        Button(self.frame, text="continue", command=self.quitter).grid(row=23, column=1)
        
    def time1(self):
        global t1x
        global t1y
        t1x, t1y = Pointage()
        print type(t1x)
        print t1y

    def time2(self):
        global t2x
        global t2y
        t2x, t2y = Pointage()
        print t2x
        print t2y
            
    def time3(self):
        t3x, t3y = Pointage()
        print t3x
        print t3y
            
    def time4(self):
            t4x, t4y = Pointage()
            print t4x
            print t4y
            
            
    def quitter(self):
        root.destroy()
    
    
    def OnFrameConfigure(self, event):
        '''Reset the scroll region to encompass the inner frame'''
        self.canvas.configure(scrollregion=self.canvas.bbox("all"))
def draw_board(root):
    """
      Create the graphical user interface.
    """

    # provide the title that will be shown in the header
    root.title("Bonbon Crumble")

    # Indicate which variables of the program will be altered
    # ! In order to manipulate variables that are part of the program
    # ! but exist outside of the function, you need to indicate that you want
    # ! to use and alter these variables by declaring them as "global"
    global canvas, board, ovals, progress_label, points_label, points_field, \
        max_label, max_field, swaps_left_label, swaps_left_field

    # canvas will be the main board used for mastermind
    # ! to create a canvas, the constructor is called
    # ! (i.e. name of the class and required parameters)
    canvas = Canvas(root, bg="white",
                    height=DIMENSION * (BONBON_SIZE + BONBON_SPACING) + 100,
                    width=DIMENSION * (BONBON_SIZE + BONBON_SPACING))

    # Draw the empty circles representing the guesses
    create_ovals(DIMENSION, DIMENSION)
    # Fill circles with initial colors
    init_board(DIMENSION)

    canvas.create_line(0,
                       bonbon_asked.nb_visible_rows(board) * (BONBON_SIZE + BONBON_SPACING) + 10,
                       bonbon_asked.nb_visible_rows(board) * (BONBON_SIZE + BONBON_SPACING),
                       bonbon_asked.nb_visible_rows(board) * (BONBON_SIZE + BONBON_SPACING) + 10,
                       width=2)

    # Draw the progress label
    progress_label = Label(canvas, text=">> Select first bonbon.")
    canvas.create_window(10, bonbon_asked.nb_visible_rows(board) * (BONBON_SIZE + BONBON_SPACING) + 15,
                         anchor=NW, window=progress_label)

    canvas.create_line(0,
                       bonbon_asked.nb_visible_rows(board) * (BONBON_SIZE + BONBON_SPACING) + 40,
                       bonbon_asked.nb_visible_rows(board) * (BONBON_SIZE + BONBON_SPACING),
                       bonbon_asked.nb_visible_rows(board) * (BONBON_SIZE + BONBON_SPACING) + 40,
                       width=1)

    # Draw the swaps left label and field
    swaps_left_label = Label(canvas, text="Swaps left:")
    canvas.create_window(10, bonbon_asked.nb_visible_rows(board) * (BONBON_SIZE + BONBON_SPACING) + 50,
                         anchor=NW, window=swaps_left_label)
    swaps_left_field = Label(canvas, text=remaining_swaps, bg="white")
    canvas.create_window(2 * (BONBON_SIZE + BONBON_SPACING) + 10,
                         bonbon_asked.nb_visible_rows(board) * (BONBON_SIZE + BONBON_SPACING) + 50,
                         anchor=NW, window=swaps_left_field)

    # Draw the points label and field
    points_label = Label(canvas, text="Score:", font=16)
    canvas.create_window(3 * (BONBON_SIZE + BONBON_SPACING),
                         bonbon_asked.nb_visible_rows(board) * (BONBON_SIZE + BONBON_SPACING) + 50,
                         anchor=NW, window=points_label)
    points_field = Label(canvas, text="0", font=16)
    canvas.create_window(4 * (BONBON_SIZE + BONBON_SPACING) + 10,
                         bonbon_asked.nb_visible_rows(board) * (BONBON_SIZE + BONBON_SPACING) + 50,
                         anchor=NW, window=points_field)

    # Draw the max points label and field
    max_label = Label(canvas, text="Max score:")
    canvas.create_window(5 * (BONBON_SIZE + BONBON_SPACING) + 10,
                         bonbon_asked.nb_visible_rows(board) * (BONBON_SIZE + BONBON_SPACING) + 50,
                         anchor=NW, window=max_label)
    max_field = Label(canvas, text="n/a", bg="white")
    canvas.create_window(7 * (BONBON_SIZE + BONBON_SPACING) + 10,
                         bonbon_asked.nb_visible_rows(board) * (BONBON_SIZE + BONBON_SPACING) + 50,
                         anchor=NW, window=max_field)
    canvas.itemconfig(max_field, fill="red")

    # Draw the quit button
    quit_button = Button(canvas, text="Quit", command=root.destroy)
    quit_button.configure(width=5, relief=FLAT)
    canvas.create_window(10, bonbon_asked.nb_visible_rows(board) * (BONBON_SIZE + BONBON_SPACING) + 75,
                         anchor=NW, window=quit_button)

    # Draw the max button
    max_button = Button(canvas, text="Calculate maximum score", command=get_maximum_score)
    max_button.configure(width=20, relief=FLAT)
    canvas.create_window(100, bonbon_asked.nb_visible_rows(board) * (BONBON_SIZE + BONBON_SPACING) + 75,
                         anchor=NW, window=max_button)

    # draw the canvas
    canvas.pack()
Example #46
0
class TrailUI:
    def __init__(self, parent, trail=None):
        self.parent = parent
        self.trail = trail
        self.alpha_reflection = trail.alpha_reflection
        self.states = []
        self.probabilitylabels = {}
        ## scrollbar
        # create a canvas object and a vertical scrollbar for scrolling it
        self.scrollframe = Frame(parent)
        self.hsb = Scrollbar(self.scrollframe, orient=Tkinter.HORIZONTAL)
        self.hsb.pack(fill=Tkinter.X, side=BOTTOM, expand=Tkinter.FALSE)
        self.scrollcanvas = Canvas(self.scrollframe,
                                   bd=0,
                                   highlightthickness=0,
                                   xscrollcommand=self.hsb.set)
        self.scrollcanvas.pack(side=LEFT, fill=BOTH, expand=Tkinter.TRUE)
        self.hsb.config(command=self.scrollcanvas.xview)

        # reset the view
        self.scrollcanvas.xview_moveto(0)
        self.scrollcanvas.yview_moveto(0)

        # put trailframe into scrollframe and assign configs
        self.trailframe = interior = Frame(self.scrollcanvas)
        self.interior_id = self.scrollcanvas.create_window(10,
                                                           0,
                                                           window=interior,
                                                           anchor=Tkinter.NW)
        interior.bind('<Configure>', self._configure_interior)
        self.scrollcanvas.bind('<Configure>', self._configure_canvas)

        self.scrollframe.pack(fill=Tkinter.X, expand=1)
        self.infoframe = Frame(parent)
        self.infoframe.pack(fill=Tkinter.X, expand=1, side=BOTTOM)
        self.canvas = Canvas(self.infoframe, width=1000, height=200)
        self.canvas.pack()
        self.b = Button(self.infoframe,
                        text='Disable Propagation',
                        command=self.__toggle_prop)
        self.b.pack()
        self.b2 = Button(self.infoframe,
                         text='Make active only',
                         command=self.__activeonly)
        self.b2.pack()
        self.parent.title("ClusterF**k")
        self.enable_propagation = True
        self.trail.updateColorList()
        self.maxgridcol = -1
        self.trail.initUI(self)

        # Multi Cell Selection
        self.multiselection_pressed = False
        self.dynamicselection_pressed = False
        self.selectedcells = []
        self.parent.bind("<Control_L>", self.__selection_start)
        self.parent.bind("<KeyRelease-Control_L>", self.__selection_end)
        self.parent.bind("<Shift_L>", self.__dynamic_selection_start)
        self.parent.bind("<KeyRelease-Shift_L>", self.__dynamic_selection_end)

        self.parent.bind("<Escape>", lambda event: self._clear_selection())
        self.parent.bind("<Return>", lambda event: self.open_cell_dialogue())

    # track changes to the canvas and frame width and sync them,
    # also updating the scrollbar
    # taken from https://gist.github.com/EugeneBakin/76c8f9bcec5b390e45df
    def _configure_interior(self, event):
        # update the scrollbars to match the size of the inner frame
        size = (self.trailframe.winfo_reqwidth(),
                self.trailframe.winfo_reqheight())
        self.scrollcanvas.config(scrollregion="0 0 %s %s" % size)
        if self.trailframe.winfo_reqwidth() != self.scrollcanvas.winfo_width():
            # update the canvas's width to fit the inner frame
            self.scrollcanvas.config(width=self.trailframe.winfo_reqwidth())

    def _configure_canvas(self, event):
        if self.trailframe.winfo_reqwidth() != self.scrollcanvas.winfo_width():
            # update the inner frame's width to fill the canvas
            self.scrollcanvas.itemconfigure(
                self.trailframe, width=self.scrollcanvas.winfo_width())

    def __selection_start(self, event):
        print "Selection start/continue"
        self.multiselection_pressed = True

    def __dynamic_selection_start(self, event):
        print "Dynamic selection start"
        self.dynamicselection_pressed = True

    def __selection_end(self, event):
        print "Selection end"
        self.multiselection_pressed = False

    def __dynamic_selection_end(self, event):
        print "Dynamic selection end"
        self.dynamicselection_pressed = False

    def open_cell_dialogue(self):
        if len(self.selectedcells) is 0:
            return

        # oldstate = self.__clickedcells[0]["oldstate"]
        # oldstatestr = ",".join(["{:x}".format(x) for x in oldstate])
        oldstatestr = ""

        dialog = StatePopup(
            self, oldstatestr,
            self.selectedcells[0]["state_probs"])  # TODO add probs

        self.trailframe.wait_window(dialog.top)

        newstate = dialog.value
        # set each cell of the selection to the new state
        if newstate is not None:
            for i, cell in enumerate(self.selectedcells):
                cell["stateUI"].state.set(cell["row"], cell["col"],
                                          set(newstate))

        # self._clear_selection()
        self.redraw_all()
        self.redraw_selection()

    def _clear_selection(self):
        for cell in self.selectedcells:
            cell["stateUI"].undraw_selection(cell)

        self.selectedcells = []

    def __toggle_prop(self):
        self.enable_propagation = not self.enable_propagation
        if self.enable_propagation:
            self.b.config(text="Disable Propagation")
            self.redraw_all()
        else:
            self.b.config(text="Enable Propagation")

    def __activeonly(self):
        self.trail.makeActiveOnly()
        self.redraw_all()

    def get_stateui_at(self, row, col):
        # retrieve state from specific grid position
        for state in self.states:
            if state._row is row and state._col is col:
                return state

        return self.get_stateui_at(row, col - 1)

    def redraw_selection(self):
        for cell in self.selectedcells:
            cell["stateUI"].draw_selection(cell)

    def redraw_all(self):
        if self.enable_propagation:
            self.trail.propagate()
            self.trail.getProbability(verbose=True)
        self.redrawColorList()
        self.redraw_states()
        self.redraw_selection()
        if self.enable_propagation:
            self.redraw_probablities()

    def redraw_states(self):
        for state in self.states:
            state.redraw_state()

        if PRINT_PROPS is True:
            for state in self.states:
                state.redraw_propagation()

    def redraw_probablities(self):
        if self.alpha_reflection is True:
            for i, prob in enumerate(self.trail.probabilities):
                overallprob, sboxprob, mixcolprob = prob.getProbability()
                if i < self.trail.rounds:
                    self.probabilitylabels["S" + str(i)].textvar.set(
                        "2^{0:.2f}".format(math.log(sboxprob, 2)))
                    self.probabilitylabels["M" + str(i + 1)].textvar.set(
                        "2^{0:.2f}".format(math.log(mixcolprob, 2)))
                elif i >= self.trail.rounds + 1:
                    self.probabilitylabels["S" + str(i + 2)].textvar.set(
                        "2^{0:.2f}".format(math.log(sboxprob, 2)))
                    self.probabilitylabels["M" + str(i + 1)].textvar.set(
                        "2^{0:.2f}".format(math.log(mixcolprob, 2)))
                else:  # inner round
                    self.probabilitylabels["I"].textvar.set("2^{0:.2f}".format(
                        math.log(overallprob, 2)))
        else:
            for i, prob in enumerate(self.trail.probabilities):
                overallprob, sboxprob, mixcolprob = prob.getProbability()
                self.probabilitylabels["S" + str(i + 1)].textvar.set(
                    "2^{0:.2f}".format(math.log(sboxprob, 2)))
                self.probabilitylabels["M" + str(i + 1)].textvar.set(
                    "2^{0:.2f}".format(math.log(mixcolprob, 2)))

    def redrawColorList(self):
        self.canvas.delete("colorlist")
        self.trail.updateColorList()
        for i, (state, color) in enumerate(self.trail.colorlist.items()):
            statestr = ",".join(["{:x}".format(x) for x in state])
            x = 15 + int(i / 5) * 250
            y = 15 + (i % 5) * 40
            self.canvas.create_rectangle(x,
                                         y,
                                         x + 25,
                                         y + 25,
                                         fill=color,
                                         tags="colorlist")

            textx = x + 40
            texty = y + 12
            self.canvas.create_text(textx,
                                    texty,
                                    text=statestr,
                                    tags="colorlist",
                                    fill="black",
                                    anchor="w")

    def cleanup(self):
        self.infoframe.destroy()
        self.trailframe.destroy()
Example #47
0
class LoginFrame(Frame):
    """Class which controls the Login and Register screens of the spelling aid"""
    def __init__(self, parent):

        Frame.__init__(self, parent)
        self.parent = parent
        self.db = self.parent.db
        
        #Create login screen widgets
        font = ("Helvetica", 20)
        self.userEntry = Entry(self.parent, width=15, font=font)
        self.passEntry = Entry(self.parent, width=15, show='*', font=font)
        self.passEntry.bind('<Return>', self.login)
        buttonSubmit = Button(self.parent, text="Login", command=self.login, width=10)
        buttonRegSwitch = Button(self.parent, text="New User",
                                 command=self.viewRegister, width=10)
        
        #Create register screen widgets
        self.userRegEntry = Entry(self.parent, width=15, font=font)
        self.passRegEntry = Entry(self.parent, width=15, show='*',
                                  font=font)
        self.passRegEntry.bind('<Return>', self.register)
        buttonRegister = Button(self.parent, text="Register",
                                command=self.register, width=10)
        buttonBack = Button(self.parent, text="Back",
                            command=self.viewLogin, width=10)
        
        #Create a canvas for each screen and populate
        self.login_canvas = Canvas(self, width=600, height=250, bg="#FFFFFF")
        self.register_canvas = Canvas(self, width=600, height=250, bg="#FFFFFF")
       
        self.login_canvas.create_text(300, 40, text="Login", font=font, fill="#004183")
        self.login_canvas.create_text(170, 80, text="Username:"******"Password:"******"Register", font=font, fill="#004183")
        self.register_canvas.create_text(170, 80, text="Username:"******"Password:"******"Check the user's input and allow access if it is correct"""
        usernameGiven = self.userEntry.get()
        passwordGiven = self.passEntry.get()
        userDetails = self.db.sql("""SELECT * FROM
                                  users WHERE username='******'"""
                                  %(usernameGiven.lower().strip()))
        #Check that the username exists
        if len(userDetails)==1:
            passHash = userDetails[0][2]
            #Check that the password is correct
            if (hashlib.sha1(passwordGiven).hexdigest() == passHash):
                #Details are correct, unlock application
                self.parent.login(User(userDetails[0]))
                loginFailed = False
            else:
                loginFailed = True
        else:
            loginFailed = True
        if loginFailed:
            #If details are incorrect show an error message
            tkMessageBox.showerror("Login Failed",
                                   "Invalid username or password")
            self.userEntry.delete(0, END)
            self.passEntry.delete(0, END)

    def register(self):
        """Register a new user with provided input"""
        username = self.userRegEntry.get()
        passwd = self.passRegEntry.get()
        if username != '' and passwd != '':
            username = username.lower().strip()
            passHash = hashlib.sha1(passwd).hexdigest()
            self.db.sql("""INSERT INTO users (username, passwd) VALUES 
                        ('%s', '%s')"""%(username, passHash))
            self.viewLogin()

    def viewRegister(self):
        """Switch to the register screen"""
        self.login_canvas.pack_forget()
        self.register_canvas.pack()

    def viewLogin(self):
        """Switch to the login screen"""
        self.register_canvas.pack_forget()
        self.login_canvas.pack()
Example #48
0
    def displayFrame(self, data):
        root = Tk()
        root.title('Book Bank')
        root.geometry("380x620")
        yscrollbar = Scrollbar(root)
        canvas = Canvas(root,
                        background="cadetblue4",
                        yscrollcommand=yscrollbar.set)  # BG="#D2D2D2"

        yscrollbar.config(command=canvas.yview)
        yscrollbar.pack(side=RIGHT, fill=Y)
        # Create the frame which will hold the widgets
        canvas.pack(fill="both", expand=1)

        # im = PhotoImage(file='/Users/RaMD/PycharmProjects/Exchange_Borrowing_Books/wall2.gif')

        lf = LabelFrame(
            canvas,
            text=unicode("قائمة الكتب", "utf-8"),
            bg='cadetblue4',
            fg='gray99'
        ).grid(row=1, column=1, padx=80,
               pady=50)  # pack(expand=1, padx=20, pady=30, ipadx=20, ipady=18)
        frame = Frame(lf)

        im = Image.open('wall3.jpg')
        img = ImageTk.PhotoImage(image=im)
        # canvas.create_image(0, 0, anchor=NE, image=img)
        Label(canvas, image=img).grid(row=0, column=0)
        Label(root,
              text=unicode("الكتب المتوفرة", "utf-8"),
              bg='black',
              fg="white",
              width=40).place(x=0, y=0)

        # method for book pic botton
        def take(id, tableName):
            root.destroy()
            from Frame4_randa import BOOK_PROGRAM
            BOOK_PROGRAM().show(id + 1, tableName)

        def insert(tableName, tableIndex):
            print('entered ')
            root.destroy()
            from insertFrame import database
            database().show(tableName, tableIndex)

        def back():
            root.destroy()
            from FrameSpecialty import Framespecialty
            Framespecialty().frame1()

        im = list(range(len(data)))

        # this loop place book name image and price thaat gots from database
        for i in range(len(data)):
            #byteImgIO = io.BytesIO(data[i][1])
            #byteImg = Image.open(byteImgIO)

            #file_like = BytesIO(data[i][1])
            #img1 = PIL.Image.open(file_like, mode='r').convert('RGB')

            file_like = cStringIO.StringIO(data[i][1])
            img1 = PIL.Image.open(file_like, mode='r').convert('RGB')
            im1 = img1.resize((150, 150),
                              PIL.Image.ANTIALIAS)  # to chage image size
            im[i] = ImageTk.PhotoImage(im1)

            Button(frame,
                   text=unicode(" اسم الكتاب: ", "utf-8") + str(data[i][0]) +
                   '\n' + unicode(" سعر الكتاب: ", "utf-8") + str(data[i][2]),
                   compound='top',
                   image=im[i],
                   command=lambda i=i: take(i, self.tableName)).pack()

        # استعارة الكتاب

        # seller button
        Button(canvas,
               text=unicode(" اضافة كتاب: ", "utf-8"),
               command=lambda: insert(self.tableName, self.tableindex)).place(
                   x=230,
                   y=300)  # .pack(side=BOTTOM,anchor=SE)#,padx=107,pady=5
        Button(canvas,
               text=unicode(" عودة إلى قائمة التخصصات: ", "utf-8"),
               command=back).place(
                   x=195,
                   y=350)  # .pack(side=BOTTOM,anchor=SW)#,padx=90,pady=5

        root.update()
        canvas.create_window(0, 0, window=frame, anchor=E)
        canvas.config(scrollregion=canvas.bbox("all"))
        root.mainloop()