Beispiel #1
0
    def _actions(self):
        """Luo painikkeet muihin näkymiin siirtymistä varten."""

        wrapper = Frame(self._frame, pady = 30, bg = "#FFFFEA")
        action_frame = LabelFrame(wrapper, text = "Toiminnot", padx = 20, pady = 20, bg = "#FFFFEA")

        back = Button(
            action_frame,
            text = "Palaa takaisin",
            command = self._views[0],
            bg = "#FFFFEA",
            activebackground = "#FFFFFF")
        end_session = Button(
            action_frame,
            text = "Lopeta",
            command = self._views[3],
            bg = "#FFFFEA",
            activebackground = "#FFFFFF")
        logout = Button(
            action_frame,
            text = "Kirjaudu ulos",
            command = lambda: self._process_logout(),
            bg = "#FFFFEA",
            activebackground = "#FFFFFF")

        back.grid(row = 0, column = 0, padx = 15)
        end_session.grid(row = 0, column = 2, padx = 15)
        logout.grid(row = 0, column = 1, padx = 15)

        action_frame.pack()
        wrapper.pack()
Beispiel #2
0
    def login(self):
        """Frame for logging into Password Manager using master password."""

        # frame
        loginFrame = LabelFrame(self.master, text='Login To Your Account')
        loginFrame.pack()

        # widget
        loginLabel = Label(loginFrame, text='Enter your master password: '******'*')
        Spacer = Label(loginFrame, text='')
        loginBtn = Button(
            loginFrame,
            text='Log In',
            command=lambda: self.loginCheck(mLoginEntry.get(), loginFrame))
        loginResetBtn = Button(loginFrame,
                               text='Reset Password',
                               command=lambda: self.showPasswordReset())

        # widget pack
        loginLabel.grid(row=0, column=0)
        mLoginEntry.grid(row=0, column=1)
        Spacer.grid(row=1, column=0)
        loginBtn.grid(row=2, column=1, sticky='e')
        loginResetBtn.grid(row=2, column=0, sticky='w')

        # widget bind
        mLoginEntry.bind(
            '<Return>',
            lambda x: self.loginCheck(mLoginEntry.get(), loginFrame))
Beispiel #3
0
    def initUI(self):
        self.centerWindow()
        self.pack(fill=BOTH, expand=True)
        self.parent.title('Выберите параметры для анализа')

        container1 = Frame(self)

        group = LabelFrame(container1, text='Шрифт')
        group.pack(side=TOP, fill=BOTH, expand=True)

        group2 = LabelFrame(container1, text='Абзац')
        group2.pack(side=TOP, fill=BOTH, expand=True)

        i = 0
        for param_id, param in PARAMS.items():
            if i < 4:
                but = Checkbutton(group,
                                  text=param.name,
                                  variable=self.user_selected[param_id])
                but.grid(row=i, sticky=W, padx=(5, 25))
            else:
                but = Checkbutton(group2,
                                  text=param.name,
                                  variable=self.user_selected[param_id])
                but.grid(row=i, sticky=W, padx=(5, 25))
            i += 1

        container1.pack(side=LEFT, fill=BOTH)

        quitButton = Button(self, text="Продолжить", command=self.goAnalyse)
        quitButton.pack(padx=15, side=LEFT)
    def __setup__(self):
        frame_timezone = LabelFrame(self._root, text='Timezone')
        frame_timezone.pack()

        label1 = Label(frame_timezone, text='UTC+')
        label1.grid(row=0, column=0, padx=(5, 0), pady=5)
        self.entry1 = Entry(frame_timezone)
        self.entry1.grid(row=0, column=1, padx=(0, 5), pady=5)
        self.entry1.delete(0, 'end')
        self.entry1.insert(0, str(self._main.time_offset))

        frame_orientation = LabelFrame(self._root, text='Orientation')
        frame_orientation.pack()

        self.switch_variable = IntVar(value=self._main.gps_sign)
        east_button = Radiobutton(frame_orientation,
                                  text='East',
                                  variable=self.switch_variable,
                                  value=True,
                                  width=8)
        west_button = Radiobutton(frame_orientation,
                                  text='West',
                                  variable=self.switch_variable,
                                  value=False,
                                  width=8)
        east_button.grid(row=0, column=0)
        west_button.grid(row=0, column=1)

        save_button = Button(self._root, text='Save', command=self.save_gps)
        save_button.pack()
Beispiel #5
0
    class NeighboursOptions:
        def __init__(self, master, default):
            self.frame = LabelFrame(master, text="Neighbour option")
            self.check_boxes = []

            for i in range(3):
                check_box = CheckBox(self.frame, default[i])
                self.check_boxes.append(check_box)
                check_box.cb.grid(row=0, column=i)
            check_box = CheckBox(self.frame, default[3])
            self.check_boxes.append(check_box)
            check_box.cb.grid(row=1, column=0)
            check_box = CheckBox(self.frame, 0)
            check_box.cb['state'] = DISABLED
            check_box.cb.grid(row=1, column=1)
            check_box = CheckBox(self.frame, default[4])
            self.check_boxes.append(check_box)
            check_box.cb.grid(row=1, column=2)
            for i in range(3):
                check_box = CheckBox(self.frame, default[i + 5])
                self.check_boxes.append(check_box)
                check_box.cb.grid(row=2, column=i)

            self.frame.pack(side=LEFT)

        def get_values(self):
            return [cb.value.get() for cb in self.check_boxes]
def ui():
    global files
    window = Tk()
    window.geometry('290x190')
    files = [StringVar(window), StringVar(window)]
    inframe = LabelFrame(text='Файл ссылок')
    outframe = LabelFrame(text='Папка вывода')
    Entry(inframe, textvariable=files[0], width=35).pack(side=LEFT,
                                                         padx=(10, 5),
                                                         pady=10)
    Button(inframe, text='...',
           command=lambda x=0: choose_file(x)).pack(side=LEFT, padx=(0, 10))
    Entry(outframe, textvariable=files[1], width=35).pack(side=LEFT,
                                                          padx=(10, 5),
                                                          pady=10)
    Button(outframe, text='...',
           command=lambda x=1: choose_file(x)).pack(side=LEFT, padx=(0, 10))
    inframe.pack(side=TOP, padx=10, pady=10)
    outframe.pack(side=TOP, padx=10, pady=10)
    Button(window, text='Запустить', command=thread_launch).pack(side=TOP,
                                                                 padx=10,
                                                                 pady=(0, 10))
    window.protocol("WM_DELETE_WINDOW", lambda f=window: on_closing(f))
    on_load()
    window.mainloop()
Beispiel #7
0
    class FieldOptions:
        def __init__(self, master, width, height):
            self.frame = LabelFrame(master, text="Field option")
            self.width = IntVar(value=width)
            self.height = IntVar(value=height)
            label_x = Label(self.frame, text="X: ")
            label_x.pack(side=LEFT)
            self.spin_box_width = Spinbox(self.frame,
                                          text="width",
                                          textvariable=self.width,
                                          wrap=True,
                                          to=2000,
                                          from_=10)
            self.spin_box_width.pack(side=LEFT, fill="x", expand=True)
            label_y = Label(self.frame, text="Y: ")
            label_y.pack(side=LEFT)
            self.spin_box_height = Spinbox(self.frame,
                                           text="height",
                                           textvariable=self.height,
                                           wrap=True,
                                           to=2000,
                                           from_=10)
            self.spin_box_height.pack(side=LEFT, fill="x", expand=True)
            self.frame.pack(side=TOP, fill="x", expand=True)

        def get_values(self):
            return self.width.get(), self.height.get()
Beispiel #8
0
    def __init__(self):
        super().__init__()
        # -----------------------------------------INPUT--------------------------------------------------
        global inputText
        inputFrame = LabelFrame(self, bd=0, text='Ввод текста')
        inputText = Text(inputFrame, height=8, width=80, wrap=WORD)
        # -------------------------------------------OUTPUT------------------------------------------------
        global outputText
        outputFrame = LabelFrame(self, bd=0, text='Вывод словаря')
        outputText = Listbox(outputFrame, height=10, width=120)
        scrollb = Scrollbar(outputFrame, command=outputText.yview)
        scrollb.grid(row=4, column=5, sticky='nsew')
        outputText.grid(row=4, column=0, sticky='nsew', columnspan=5)
        outputText.configure(yscrollcommand=scrollb.set)
        # ------------------------------------------MENU---------------------------------------------------
        mainMenu = Menu(self)
        fileSubMenu = Menu(mainMenu, tearoff=0)
        fileSubMenu.add_command(label="Новый файл", command=newFile)
        fileSubMenu.add_command(label="Открыть...", command=openFile)
        fileSubMenu.add_command(label="Сохранить...", command=saveFile)
        fileSubMenu.add_command(label="Печать...", command=printFile)
        fileSubMenu.add_command(label="Выход", command=self.exitFile)

        helpSubMenu = Menu(mainMenu, tearoff=0)
        helpSubMenu.add_command(label="Помощь", command=helpMenu)
        helpSubMenu.add_command(label="О программе", command=aboutProgramMenu)

        mainMenu.add_cascade(label="Файл", menu=fileSubMenu)
        mainMenu.add_cascade(label="Справка", menu=helpSubMenu)
        self.config(menu=mainMenu)
        # ------------------------------------------Buttons---------------------------------------------------
        buttonsFrame = Frame(self, bd=5)
        addWordsButton = Button(buttonsFrame,
                                text='Добавить',
                                width=25,
                                height=2)
        addWordsButton.config(command=addWord)
        addWordsButton.pack(side='left')
        spaceLabel1 = Label(buttonsFrame, width=7, height=2)
        spaceLabel1.pack(side='left')
        addWordsButton = Button(buttonsFrame,
                                text='Очистить',
                                width=25,
                                height=2)
        addWordsButton.config(command=cleanWord)
        addWordsButton.pack(side='left')
        spaceLabel2 = Label(buttonsFrame, width=7, height=2)
        spaceLabel2.pack(side='left')
        generateNewWordsButton = Button(buttonsFrame,
                                        text='Сгенерировать',
                                        width=25,
                                        height=2)
        generateNewWordsButton.config(command=generateWord)
        generateNewWordsButton.pack(side='left')
        self.title('Lab 1')
        outputFrame.pack()
        inputFrame.pack()
        inputText.pack()
        buttonsFrame.pack()
        self.geometry('800x400')
    def gui_check_version():
        task = BackgroundTask(mainWindow, check_version,
                              guivars['checked_version'].get())
        while task.running:
            mainWindow.update()

        if task.status:
            versionCheckLabel = LabelFrame(versionCheckFrame,
                                           text="New Version Available!")
            versionCheckText = Label(versionCheckLabel,
                                     justify=LEFT,
                                     text=task.status[(task.status.find(' ') +
                                                       1):])
            versionCheckLink = Label(
                versionCheckLabel,
                justify=LEFT,
                text='Click here and download the current version.',
                fg='blue',
                cursor='hand2')
            versionCheckLink.bind(
                "<Button-1>", lambda event: webbrowser.open_new(
                    r"https://github.com/TestRunnerSRL/OoT-Randomizer/tree/Dev"
                ))
            versionCheckText.pack(anchor=NW, padx=5, pady=0)
            versionCheckLink.pack(anchor=NW, padx=5, pady=0)
            versionCheckLabel.pack(anchor=NW,
                                   fill=X,
                                   expand="yes",
                                   padx=5,
                                   pady=5)
Beispiel #10
0
    def __init__(self, boss):
        #Magasin d'améliorations (cadre)
        LabelFrame.__init__(self, boss, text='Magasin')
        frameAmel = LabelFrame(self, text='Amelioration')
        frameAmel.pack(side='left')

        #Cadre objets
        frameObjets = LabelFrame(self, text='Objets')
        frameObjets.pack(side='right')

        #Statistiques possibles pour les améliorations (contenu)
        #listeStat = [[nom, nomAmel, max, prix par niveau, icone]]
        listeStat = [['Points de vie', 'pv', 50, 75, 5, 'pv'],
                     ['Dégats', 'atk', 75, 75, 5, 'atk'],
                     ['Mana', 'mana', 50, 50, 5, 'mana'],
                     ['Armure (%)', 'deff', 25, 15, 1, 'deff'],
                     ['Dégats critiques (%)', 'critDmg', 20, 50, 5, 'critDmg'],
                     ['Chance de critique (%)', 'critChc', 10, 40, 5, 'critChc'],
                     ["Multiplicateur d'or (%)", 'multOR', 20, 100, 10, 'multOR']]
        chargerImages()
        for i in range(len(listeStat)):
            Amel(frameAmel, listeStat[i][0], listeStat[i][1], listeStat[i][2], listeStat[i][3], listeStat[i][4], listeStat[i][5]).pack(fill=X)

        #Magasin d'objets (contenu)
        self.listComboBox = []
        for typ in range(len(listdir('Objets'))):
            Label(frameObjets, text=listdir('Objets')[typ]).pack()
            self.listComboBox.append(ComboboxObjet(frameObjets, listdir('Objets')[typ]))
            self.listComboBox[typ].pack()
class App_Progressbar(object):
    """docstring for App_Progressbar"""
    def __init__(self, master, root, below, styles):
        super(App_Progressbar, self).__init__()
        self.master = master
        self.root = root
        self.styles = styles
        self.below = below

        self.putProgressbar()

    def putProgressbar(self):
        self.bar = LabelFrame(self.master,
                              width=0,
                              bg=self.styles['fg'],
                              height=10,
                              borderwidth=0)

    def set_pct(self, pct):
        window_width = self.root.winfo_width()
        desired_px = int(window_width * pct * 0.01)
        self.bar.config(width=desired_px)

    def show(self, *args, **kwargs):
        self.bar.pack()
        self.bar.place(x=0, y=self.below.winfo_height())

    def hide(self, *args, **kwargs):
        self.bar.place_forget(*args, **kwargs)
Beispiel #12
0
    def __init__(self, boss):
        #Magasin d'améliorations (cadre)
        LabelFrame.__init__(self, boss, text='Magasin')
        frameAmel = LabelFrame(self, text='Amelioration')
        frameAmel.pack(side='left')

        #Cadre objets
        frameObjets = LabelFrame(self, text='Objets')
        frameObjets.pack(side='right')

        #Statistiques possibles pour les améliorations (contenu)
        #listeStat = [[nom, nomAmel, max, prix par niveau, icone]]
        listeStat = [
            ['Points de vie', 'pv', 50, 75, 5, 'pv'],
            ['Dégats', 'atk', 75, 75, 5, 'atk'],
            ['Mana', 'mana', 50, 50, 5, 'mana'],
            ['Armure (%)', 'deff', 25, 15, 1, 'deff'],
            ['Dégats critiques (%)', 'critDmg', 20, 50, 5, 'critDmg'],
            ['Chance de critique (%)', 'critChc', 10, 40, 5, 'critChc'],
            ["Multiplicateur d'or (%)", 'multOR', 20, 100, 10, 'multOR']
        ]
        chargerImages()
        for i in range(len(listeStat)):
            Amel(frameAmel, listeStat[i][0], listeStat[i][1], listeStat[i][2],
                 listeStat[i][3], listeStat[i][4],
                 listeStat[i][5]).pack(fill=X)

        #Magasin d'objets (contenu)
        self.listComboBox = []
        for typ in range(len(listdir('Objets'))):
            Label(frameObjets, text=listdir('Objets')[typ]).pack()
            self.listComboBox.append(
                ComboboxObjet(frameObjets,
                              listdir('Objets')[typ]))
            self.listComboBox[typ].pack()
Beispiel #13
0
    def build_gui(self, master):
        master.title("Export Things 3 to Taskpaper v%s" % VERSION)

        file_frame = Frame(master)
        file_frame.pack(anchor=NW, fill=X)

        self.make_file_frame(file_frame)

        # buttons: convert
        buttons_frame = Frame(master)
        buttons_frame.pack(anchor=NW, fill=X)
        self.button_convert = Button(buttons_frame,
                                     text="Export",
                                     command=self.cmd_things2tp)
        self.button_convert.pack(anchor=NW, side=LEFT)

        T = Text(buttons_frame,
                 height=2,
                 width=90,
                 font=("Helvetica", 13, "normal"))
        T.pack(anchor=NW, padx=10, pady=5)
        T.insert(END, self.EXPORT_EXPLANATION)

        logger_frame = LabelFrame(master,
                                  text="Exporter Output:",
                                  padx=5,
                                  pady=5)
        logger_frame.pack(anchor=NW, fill=X, padx=10, pady=10)
        self.console = ConsoleUi(logger_frame, master)
Beispiel #14
0
    def _init_sidebar(self, parent):
        self.sidebar = Frame(parent, relief=tk.RAISED, bd=2, bg="gray")

        sidebar = self.sidebar
        sidebar.pack(fill=tk.BOTH, side=tk.RIGHT)

        timestamp = Button(sidebar, text="Hotkeys...")
        directory = Button(sidebar, text="League Directory...", bg="gray80")
        delete = Button(sidebar, text="Delete All Games", bg="#e3aaaa")

        timestamp.pack(side="top", fill="x", padx=10, pady=(5, 0))
        directory.pack(side="top", fill="x", padx=10, pady=(5, 0))
        delete.pack(side="top", fill="x", padx=10, pady=(5, 0))

        timestamp.config(command=self.hotkey_panel)
        directory.config(command=self.set_league_path)
        delete.config(command=self.delete_games)

        self.league_path_view = Entry(sidebar)
        self.league_path_view.pack(side="top", fill="x", padx=10, pady=5)
        self.league_path_view.insert(0, self.league_directory)

        # Entry(sidebar, text="Test", state="disabled").pack(padx=10)

        label_frame = LabelFrame(sidebar, text="Dialogue:")
        label_frame.pack(side="bottom", padx=10, pady=5)

        self.dialogue = Text(label_frame,
                             width=20,
                             height=3,
                             borderwidth="1",
                             font=("device", 8))
        self.dialogue.pack()
        self.dialogue.insert(tk.END, "...")
        self.dialogue.configure(state="disabled")
Beispiel #15
0
def reagendarCita():
    paciente=clinica_objeto.buscarPaciente(rut_entry.get())[0]
    medico= lista_medicos_listbox.get(ACTIVE).split()

    medico.pop()
    aux=""
    for palabra in medico:
        aux+=palabra+" "
    aux=aux[:-1]
    medico=clinica_objeto.buscarMedico(aux)[0]

    busqueda= ingresar_codigo_entry.get()
    def reagendarCita():
        fecha= dt.datetime(int(seleccion_Año.get()), int(seleccion_Mes.get()), int(seleccion_Dia.get()),int(seleccion_hora.get()),int(seleccion_minutos.get()))
 
        for paciente in clinica_objeto.getPacientes():
            if paciente.modificarCita(fecha,busqueda):
                buscarCodigo()

                elegir_fecha.destroy()
                messagebox.showinfo(message="La cita ha sido reagendada con exito", title="Éxito")
    



    elegir_fecha=Toplevel()
    escoger_fecha_frame=LabelFrame(elegir_fecha, text="Datos Cita",bg=Charade,font=subtitulo_font, labelanchor=N)
    temp=LabelFrame(elegir_fecha)

    #seleccionar fecha cita
    disponibilidad_citas_frame=LabelFrame(escoger_fecha_frame, text="Seleccionar fecha:", bg=Charade, font=subtitulo2_font, labelanchor=N)
    disponibilidad_citas_frame.pack(fill=BOTH, expand=True, padx=30, pady=10)
    seleccion_Dia=Spinbox(disponibilidad_citas_frame,width=10,state="readonly" ,values=("01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31"))
    seleccion_Dia.grid(row=1, column=1)
    dia_label=Label(disponibilidad_citas_frame,text="Día",bg=Charade, font=subtitulo4_font)
    dia_label.grid(row=1,column=0)
    seleccion_Mes=Spinbox(disponibilidad_citas_frame,width=10 ,values=("01","01","03","04","05","06","07","08","09","10","11","12"),state="readonly" )
    seleccion_Mes.grid(row=2,column=1)
    dia_label=Label(disponibilidad_citas_frame,text="Mes",bg=Charade, font=subtitulo4_font)
    dia_label.grid(row=2,column=0)
    seleccion_Año=Spinbox(disponibilidad_citas_frame,width=10,state="readonly"  ,values=("2021","2022","2023","2024","2025","2026","2027","2028","2029","2030","2031"))
    seleccion_Año.grid(row=3,column=1)
    dia_label=Label(disponibilidad_citas_frame,text="Año",bg=Charade, font=subtitulo4_font)
    dia_label.grid(row=3,column=0)
    #seleccionar hora cita
    seleccion_hora=Spinbox(disponibilidad_citas_frame,width=10,state="readonly" ,values=("8","9","10","11","12","13","14","15","16","17","18","19","20","21","22"))
    seleccion_minutos=Spinbox(disponibilidad_citas_frame,width=10 ,values=("00","30"))
    seleccion_hora.grid(row=4,column=1)
    seleccion_minutos.grid(row=5,column=1)
    dia_label=Label(disponibilidad_citas_frame,text="Hora",bg=Charade, font=subtitulo4_font)
    dia_label.grid(row=4,column=0)
    dia_label=Label(disponibilidad_citas_frame,text="Minutos",bg=Charade, font=subtitulo4_font)
    dia_label.grid(row=5,column=0)
    
   
    boton_hora=Button(disponibilidad_citas_frame,text="Reservar Hora",command=lambda:reagendarCita(), image = reservar_hora_ic)
    boton_hora.grid(row=6,column=0, columnspan=2)
    escoger_fecha_frame.pack()
    actualizarDatosCitas()
    def _create_filters(self):
        filter_frame = LabelFrame(self)
        filter_frame.pack(side=LEFT, anchor=W, fill=X)
        self._create_range_filter(filter_frame)
        self._create_occurrence_filter(filter_frame)

        for child in filter_frame.winfo_children():
            child.grid_configure(padx=PAD_X, pady=PAD_Y, sticky=W)
    def _set_up_settings_frame(self):
        """
                        Set up settings frame.
		
                        :param self:            (self)
                """

        # Set toplevel frame

        settingsFrame = Toplevel(self.root)

        # Set dialog

        # Try count setup
        lblFrameTryCount = LabelFrame(settingsFrame, text="Try count")
        lblFrameTryCount.pack(fill="both", expand="yes", padx=15, pady=5)
        lblFrameTryCount.columnconfigure(0, weight=1)
        lbl = Label(lblFrameTryCount, text="Set count")
        lbl.grid(row=0, column=0, padx=10, pady=(2, 0))
        entryTryCount = Entry(lblFrameTryCount, justify=CENTER)
        entryTryCount.insert(0, self.settings_try_count.get())
        entryTryCount.grid(row=1, column=0, padx=10, pady=10)

        # Timer setup
        lblFrameTimer = LabelFrame(settingsFrame, text="Timer")
        lblFrameTimer.pack(fill="both", expand="yes", padx=15, pady=5)
        lblFrameTimer.columnconfigure(0, weight=1)
        lbl = Label(lblFrameTimer, text="Set timer (in second)")
        lbl.grid(row=0, column=0, padx=10, pady=(2, 0))
        entryTimer = Entry(lblFrameTimer, justify=CENTER)
        entryTimer.insert(0, self.settings_timer.get())
        entryTimer.grid(row=1, column=0, padx=10, pady=10)

        # Apply settings
        lbl = Label(settingsFrame, text="NB: 0 <=> Unlimited")
        lbl.pack(pady=3)
        applyBtn = Button(
            settingsFrame,
            text="Apply",
            command=lambda: self.set_settings(entryTryCount.get(),
                                              entryTimer.get(), settingsFrame))
        applyBtn.pack(side=LEFT, expand=True, pady=(0, 5))
        cancelBtn = Button(settingsFrame,
                           text="Cancel",
                           command=settingsFrame.destroy)
        cancelBtn.pack(side=RIGHT, expand=True, pady=(0, 5))

        # Show dialog

        settingsFrame.transient(self.root)
        settingsFrame.parent = self.root
        settingsFrame.protocol("WM_DELETE_WINDOW", settingsFrame.destroy)
        settingsFrame.geometry("+{0}+{1}".format(self.root.winfo_rootx(),
                                                 self.root.winfo_rooty()))
        settingsFrame.title("Settings")
        settingsFrame.focus_set()
        settingsFrame.grab_set()
        settingsFrame.mainloop()
Beispiel #18
0
 def add_row(self):
     addit_photo_row = LabelFrame(self.photo_container,
                                  bg=self.styles['bg'],
                                  borderwidth=0)
     addit_photo_row.pack()
     self.photo_row_arr.append(addit_photo_row)
     self.curr_photo_row_width = 0
     if len(self.photo_row_arr) > 1:
         self.photo_row_index += 1
Beispiel #19
0
    def init_area_log(self):
        # 日志区
        frm_log = LabelFrame(self.master, text='日志', padx=5, pady=5)
        frm_log.grid(row=1, column=0, columnspan=3, sticky='ew')
        frm_log.pack(fill='both', expand=True)

        # 日志
        self.log_text = Text(frm_log, borderwidth=1, highlightcolor='#ddd')
        self.log_text.pack(fill='both', expand=True)
Beispiel #20
0
    def criaTelaConfigurações(self):
        self.config_window = Toplevel(self)
        # cria o frame
        frame = LabelFrame(self.config_window, text="Configurações")
        # poe imagem de configurações
        img = PhotoImage(file='./icons/gear.png')
        img = img.subsample(8, 8)
        img_lbl = Label(frame, image=img)
        img_lbl.image = img
        img_lbl.grid(row=0, column=0, columnspan=2, pady=20)
        # insere labels
        Label(frame, text='Carrier (5 espaços): ').grid(row=1,
                                                        column=0,
                                                        sticky=W)
        Label(frame, text='Battleship (4 espaços): ').grid(row=2,
                                                           column=0,
                                                           sticky=W)
        Label(frame, text='Submarine (3 espaços): ').grid(row=3,
                                                          column=0,
                                                          sticky=W)
        Label(frame, text='Destroyer (2 espaços): ').grid(row=4,
                                                          column=0,
                                                          sticky=W)
        Label(frame, text='Percentual de água: ').grid(row=5,
                                                       column=0,
                                                       sticky=W)
        Label(frame, text='Tamanho do tabuleiro').grid(row=6,
                                                       column=0,
                                                       sticky=W)
        # insere entradas
        self.carrier_entry = Entry(frame)
        self.carrier_entry.insert(0, str(self.navios[0]))
        self.carrier_entry.grid(row=1, column=1)
        self.battleship_entry = Entry(frame)
        self.battleship_entry.insert(0, str(self.navios[1]))
        self.battleship_entry.grid(row=2, column=1)
        self.submarine_entry = Entry(frame)
        self.submarine_entry.insert(0, str(self.navios[2]))
        self.submarine_entry.grid(row=3, column=1)
        self.destroyer_entry = Entry(frame)
        self.destroyer_entry.insert(0, str(self.navios[3]))
        self.destroyer_entry.grid(row=4, column=1)
        self.n_entry = Entry(frame)
        self.n_entry.insert(0, str(self.n))
        self.n_entry.grid(row=6, column=1)
        # insere slider de pma
        self.pma_slider = Scale(frame, from_=10, to=60, orient=HORIZONTAL)
        self.pma_slider.set(self.pma * 100)
        self.pma_slider.grid(row=5, column=1)

        # insere botao de ok
        ok_button = Button(frame, text="Salvar", command=self.getNumeros)
        ok_button.grid(row=7, column=0, columnspan=2, sticky=W + E)
        # poe o frame na tela
        frame.pack(padx=5, pady=5)
        pass
Beispiel #21
0
    def make_widgets(self):

        self.label = Label(
            self, text="TTS-Prefetch", font=Font(size=14, weight="bold")
        )
        self.label.pack()

        leftpane = Frame(self)
        leftpane.configure(bg="black")

        homedir = os.path.expanduser("~")
        self.settings = EntryFrame(
            leftpane,
            (
                "infile",
                FileEntry,
                dict(
                    label="Input file",
                    initialdir=libtts.GAMEDATA_DEFAULT,
                    filetypes=[("JSON-file", "*.json")],
                    action="open",
                    default=self.args.infile,
                ),
            ),
            (
                "gamedata",
                DirEntry,
                dict(
                    label="Gamedata path",
                    default=libtts.GAMEDATA_DEFAULT,
                    initialdir=homedir,
                    mustexist=True,
                ),
            ),
            ("dry_run", ToggleEntry, dict(label="Dry run")),
            ("refetch", ToggleEntry, dict(label="Refetch")),
            ("relax", ToggleEntry, dict(label="Relax")),
            ("user_agent", TextEntry, dict(label="User-agent")),
            text="Settings",
            width=60,
        )
        self.settings.pack(fill=X)

        control = LabelFrame(leftpane, text="Control")
        self.buttons = ButtonFrame(control, "Run", "Stop", "Quit")
        self.buttons.pack()
        self.buttons.on("Run", self.run)
        self.buttons.on("Stop", self.stop)
        self.buttons.on("Quit", self.quit)
        control.pack(fill=X)

        leftpane.pack(side=LEFT, anchor=N)

        self.output = OutputFrame(self, text="Output")
        self.output.pack(expand=True, fill=BOTH)
Beispiel #22
0
    def setup_catalog_item(self):
        catalog = LabelFrame(
            master=self.window,
            text="Catalog Item",
            font=font.Font(size=14, weight=font.BOLD),
        )

        frm = Frame(master=catalog)

        lbl_number = Label(master=frm, text="Number:", font=self.font_style)
        ent_number = Entry(
            master=frm,
            font=self.font_style,
            width=20,
        )
        lbl_qtt = Label(master=frm, text="Quantity:", font=self.font_style)
        spin_qtt = Spinbox(
            master=frm,
            from_=1,
            to_=100,
            width=4,
        )
        lbl_cost = Label(
            master=frm,
            text="Cost/item:",
            font=self.font_style,
        )
        ent_cost = Entry(
            master=frm,
            font=self.font_style,
            width=14,
            state="readonly",
        )
        lbl_total = Label(
            master=frm,
            text="Total:",
            font=self.font_style,
        )
        ent_total = Entry(
            master=frm,
            font=self.font_style,
            width=14,
            state="readonly",
        )
        lbl_number.pack(side=LEFT, padx=2, pady=5)
        ent_number.pack(side=LEFT, padx=2, pady=5)
        lbl_qtt.pack(side=LEFT, padx=2, pady=5)
        spin_qtt.pack(side=LEFT, padx=2, pady=5)
        lbl_cost.pack(side=LEFT, padx=2, pady=5)
        ent_cost.pack(side=LEFT, padx=2, pady=5)
        lbl_total.pack(side=LEFT, padx=2, pady=5)
        ent_total.pack(side=LEFT, padx=2, pady=5)

        frm.pack(fill=BOTH, padx=10, pady=10)
        catalog.pack(fill=X, padx=20, pady=5)
Beispiel #23
0
    def add_edge(self, side='top', width=2, palette=None):
        """Add Edge Frame and add side_field, width_field & color_field

        Elements:
            - LabelFrame
        """
        current_edges = self.edges.children
        edge_n = len(current_edges)
        if edge_n < 4:
            master = self.edges

            edge = LabelFrame(master,
                              text=f'Edge {edge_n + 1}',
                              padx=5,
                              pady=5)
            edge.pack()

            edge_settings = {'side': None, 'width': None, 'palette': []}

            edge_dims = Frame(master=edge)
            edge_dims.pack(side=TOP)

            edge_color_setup = LabelFrame(master=edge,
                                          text="Edge Colors",
                                          padx=5,
                                          pady=5)
            edge_color_setup.pack(side=BOTTOM)

            edge_color_group = Frame(master=edge_color_setup)
            edge_color_group.pack(side=TOP)

            self.add_side_field(master=edge_dims,
                                edge_settings=edge_settings,
                                side=side)

            self.add_width_field(master=edge_dims,
                                 edge_settings=edge_settings,
                                 width=width)

            if palette is not None:
                for color in palette:
                    self.add_color_field(color_group=edge_color_group,
                                         edge_settings=edge_settings,
                                         color=color)
            else:
                self.add_color_field(color_group=edge_color_group,
                                     edge_settings=edge_settings,
                                     color=None)

            self.add_color_buttons(master=edge_color_setup,
                                   color_group=edge_color_group,
                                   edge_settings=edge_settings)

            self.edge_data.append(edge_settings)
Beispiel #24
0
def LabelFrame(root, style="", text="", **options):

    props = {'fill': 'both', 'expand': 'yes'}

    props.update(**options)

    lf = TKLabelFrame(root, text=text, bg=load_color(style)['bgColor'])

    lf.pack(props)

    return lf
Beispiel #25
0
    def create_top_frame(self):
        top_frame = LabelFrame(self.master)

        label_string = "Huejacking tool made by Port 25565\nLuuk Schuurmans, Mart Hagedoorn, Max van Mulken"
        label = Label(top_frame,
                      text=label_string,
                      fg=self.green_color,
                      bg='black')
        label.pack()

        top_frame.pack()
        return top_frame
Beispiel #26
0
    def init_area_target(self):
        # 输出区
        frm_target = LabelFrame(self.master, text='输出结果', padx=5, pady=5)
        frm_target.pack(fill='both', expand=True)

        # 处理结果展示
        self.res_data = Text(frm_target,
                             width=50,
                             height=10,
                             borderwidth=1,
                             highlightcolor='#ddd')
        self.res_data.pack(fill='both', expand=True)
Beispiel #27
0
    def _create_recording_frame(self, subject):
        """
        creates the recordings frames
        :param subject: Audio/ Video
        :return: None
        """
        rec_label_frame = LabelFrame(master=self,
                                     text=subject,
                                     font=FONT_MEDIUM,
                                     bd=5)
        left_side = Frame(master=rec_label_frame)

        # 4 buttons in a button frame
        buttons_frame = Frame(master=left_side)
        Button(master=buttons_frame,
               text=f"Record {subject}",
               height=2,
               width=13,
               font=FONT_SMALL,
               command=lambda: self._start_rec_by_subject(subject)).pack(
                   side=LEFT, padx=10)

        Button(master=buttons_frame,
               text="Pause",
               height=2,
               width=10,
               font=FONT_SMALL,
               command=lambda: self._pause_recording(subject)).pack(side=LEFT,
                                                                    padx=10)

        Button(master=buttons_frame,
               text="Resume",
               height=2,
               width=10,
               font=FONT_SMALL,
               command=lambda: self._resume_recording(subject)).pack(side=LEFT,
                                                                     padx=10)

        Button(master=buttons_frame,
               text="Finish",
               height=2,
               width=10,
               font=FONT_SMALL,
               command=lambda: self._finish_rec_by_subject(subject)).pack(
                   side=LEFT, padx=10)

        buttons_frame.pack(pady=30)
        left_side.pack(side=LEFT)

        # time and name labels
        self._create_time_and_name_labels(left_side, subject)

        rec_label_frame.pack(fill=BOTH, pady=30)
Beispiel #28
0
class Actions(GUIElement):
    ''' Collection of radio buttons to select the actions to perform on the
    retrived taxonomical list'''

    # the file where the selected actions are stored
    choice_file = "./settings/choice.txt"

    # possible actions
    possible_actions = [
        "Authority list", "Authority file", "Label table", "Synonym list"
    ]

    def __init__(self, root_frame):
        super().__init__(root_frame)

        self.lFrame = LabelFrame(self.pFrame, text="Actions")
        self.lFrame.pack()

        # prepare the dictionary that holds the selected values
        self.action_choice = {}
        for action in self.possible_actions:
            self.action_choice[action] = False

        # reads the file of previously chosen actions
        if os.path.isfile(self.choice_file):
            self.read()

        # creates the radio button
        for action in self.possible_actions:

            ab = ActionButton(self.lFrame, action, self)
            ab.pFrame.pack()

            self.write()

    def read(self):
        with open(self.choice_file, "r") as f:
            lines = f.readlines()

        for line in lines:
            parts = line.split("=")

            choice = True if parts[1].strip() == "1" else False
            self.action_choice[parts[0].strip()] = choice

    def write(self):
        with open(self.choice_file, "w") as f:
            for name, choice in self.action_choice.items():
                if choice:
                    f.write(f"{name}=1\n")
                else:
                    f.write(f"{name}=0\n")
Beispiel #29
0
class MainApp:
    def __init__(self):
        self.pre = None
        #model to predict
        self.model = Model()
        #creating root
        self.root = Tk()
        self.root.title("Digit Recognizer")
        self.root.resizable(0,0)
        #Gui elements
        self.lbl_drawhere = LabelFrame(text = 'Draw Here With Mouse')
        self.area_draw = Canvas(self.lbl_drawhere, width = 504,
                                height = 504, bg ='black')
        self.area_draw.bind('<B1-Motion>',self.draw)
        
        self.btn_reset = Button(self.lbl_drawhere, text = "Reset Drawing",
                                bg = "lightblue",command = self.reset_drawing)
        self.btn_predict = Button(self.root, text = 'Predict Digit',
                                  bg = "blue", command = self.predict_digit)
        
        #Fitting in th Gui
        self.lbl_drawhere.pack(in_=self.root, side = LEFT, fill = X)
        self.area_draw.pack()
        self.btn_reset.pack()
        self.btn_predict.pack(in_=self.root, side = LEFT)
        
    def draw(self,event):
        self.area_draw.create_oval(event.x,event.y,event.x+27,event.y+27,
                                   outline='white',fill = 'white')
        self.area_draw.create_rectangle(event.x,event.y,event.x+25,event.y+25,
                                        outline = 'white',fill = 'white')
        self.pre = 'D'
    
    def run(self):
        self.root.mainloop()
        
    def reset_drawing(self):
        self.area_draw.delete('all')
    
    def predict_digit(self):
        if(self.pre == None):
            messagebox.showerror(title = 'No Images',
                                 messgae = 'First Draw a number')
        else:
            x = self.root.winfo_rootx() + self.area_draw.winfo_x()
            y = self.root.winfo_rooty() + self.area_draw.winfo_y()
            x1 = x + self.area_draw.winfo_width()
            y1 = y + self.area_draw.winfo_height()
            ImageGrab.grab(bbox = (x,y+10,x1,y1)).save('image.png')
            messagebox.showinfo(
                    title = 'Prediction' , 
                    message = "Number: {}".format(self.model.predict()))
Beispiel #30
0
    class SurviveOptions:
        def __init__(self, master, default):
            count = len(default)
            self.frame = LabelFrame(master, text="Survive option")
            self.check_boxes = []
            for i in range(count):
                check_box = CheckBox(self.frame, default[i], str(i))
                self.check_boxes.append(check_box)
                check_box.cb.pack(side=LEFT)
            self.frame.pack(side=TOP, fill="x", expand=True)

        def get_values(self):
            return [cb.value.get() for cb in self.check_boxes]
Beispiel #31
0
    def init_area_source(self):
        # 待处理区
        frm_source = LabelFrame(self.master, text='待处理数据', padx=5, pady=5)
        frm_source.pack(fill='both', expand=True)

        # 待处理文本
        self.init_data_Text = Text(frm_source,
                                   width=50,
                                   height=10,
                                   borderwidth=1,
                                   highlightcolor='#ddd',
                                   insertborderwidth=1)
        self.init_data_Text.pack(fill='both', expand=True)
Beispiel #32
0
class MiniSedGUI(Frame):

    def __init__(self, master=None):
        Frame.__init__(self, master)

        self.cfg = MiniSedConfig()

        self.source_directory = None
        self.target_directory = None

        self.create_widgets()
        self.pack(anchor=CENTER, fill=BOTH, expand=1)

        self.files_with_content = []

        self.cfg.directory.trace('w', self.disable_apply)
        self.cfg.glob.trace('w', self.disable_apply)
        self.cfg.search.trace('w', self.disable_apply)
        self.cfg.replace.trace('w', self.disable_apply)
        self.cfg.ignore_case.trace('w', self.disable_apply)

    def disable_apply(self, *args):
        self.run_btn["state"] = 'disabled'

    def create_widgets(self):

        self.directory_frame = Frame(self)
        self.directory_frame.pack(side=TOP, fill=X, expand=0, padx=4, pady=4)
        self.directory_frame.grid_columnconfigure(1, weight=1)

        self.directory_label = Label(self.directory_frame, text="Directory:")
        self.directory_label.grid(column=0, row=0)

        self.directory_entry = Entry(self.directory_frame, textvariable=self.cfg.directory)
        self.directory_entry.grid(column=1, row=0, sticky=W + E)
        self.directory_entry.bind('<Return>', lambda arg: self.do_preview())

        self.directory_button = Button(self.directory_frame, text="Browse")
        self.directory_button["command"] = lambda: do_ask_directory(self.cfg.directory)
        self.directory_button.grid(column=2, row=0)

        self.glob_label = Label(self.directory_frame, text="Glob:")
        self.glob_label.grid(column=0, row=1, stick=E)

        self.glob_entry = Entry(self.directory_frame, textvariable=self.cfg.glob)
        self.glob_entry.bind('<Return>', lambda arg: self.do_preview())
        self.glob_entry.grid(column=1, row=1, sticky=N + S + W)

        self.search_replace_frame = Frame(self)
        self.search_replace_frame.grid_columnconfigure(1, weight=1)
        self.search_replace_frame.pack(anchor=N, side=TOP, fill=X, expand=0, padx=4, pady=4)

        self.search_label = Label(self.search_replace_frame, text="Search:")
        self.search_label.grid(column=0, row=0, sticky=E)
        self.search_entry = Entry(self.search_replace_frame, textvariable=self.cfg.search)
        self.search_entry.grid(column=1, row=0, sticky=N + S + W + E)
        self.search_entry.bind('<Return>', lambda arg: self.do_preview())

        self.replace_label = Label(self.search_replace_frame, text="Replace:")
        self.replace_label.grid(column=0, row=1, sticky=E)
        self.replace_entry = Entry(self.search_replace_frame, textvariable=self.cfg.replace)
        self.replace_entry.grid(column=1, row=1, sticky=N + S + W + E)
        self.replace_entry.bind('<Return>', lambda arg: self.do_preview())

        self.option_frame = Frame(self)
        self.option_frame.pack(side=TOP, fill=X, expand=0, pady=4)

        self.work_frame = LabelFrame(self.option_frame, text="Options")
        self.work_frame.pack(side=LEFT, padx=4, pady=4)

        self.ignore_case_checkbutton = Checkbutton(
            self.work_frame, text="ignore case", variable=self.cfg.ignore_case)
        self.ignore_case_checkbutton.pack(side=TOP, anchor=W, expand=0)

        self.create_backups_checkbutton = Checkbutton(
            self.work_frame, text="create backups", variable=self.cfg.create_backups)
        self.create_backups_checkbutton.pack(side=TOP, anchor=W, expand=0)

        self.preview_frame = LabelFrame(self.option_frame, text="Preview")
        self.preview_frame.pack(side=LEFT, padx=4, pady=4)
        self.show_full_content_checkbutton = Checkbutton(
            self.preview_frame, text="show full content", variable=self.cfg.show_full_content)
        self.show_full_content_checkbutton.pack(side=TOP, anchor=W, expand=0)

        self.show_original_checkbutton = Checkbutton(
            self.preview_frame, text="show original", variable=self.cfg.show_original)
        self.show_original_checkbutton.pack(side=TOP, anchor=W, expand=0)

        self.text_frame = Frame(self)
        self.text_frame.pack(side=TOP, fill=BOTH, expand=1, pady=4)

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

        self.scrollbar = Scrollbar(self.text_frame)
        self.scrollbar.grid(column=1, row=0, sticky=N + S)

        self.text = Text(self.text_frame, yscrollcommand=self.scrollbar.set, width=120, height=20)

        self.text.tag_config("file", background="lightgray", foreground="black")
        self.text.tag_config("search", background="lightblue", foreground="black")
        self.text.tag_config("replace", background="orange", foreground="black")
        self.text.tag_config("hollow", foreground="gray")
        self.text.tag_config("highlight", background="lightyellow")

        self.text.config(state=DISABLED)
        self.text.grid(column=0, row=0, sticky=N + S + W + E)
        self.scrollbar.config(command=self.text.yview)

        self.confirm_button_frame = Frame(self)
        self.confirm_button_frame.pack(side=BOTTOM, anchor=E)

        self.cancel_btn = Button(self.confirm_button_frame)
        self.cancel_btn["text"] = "Quit"
        self.cancel_btn["command"] = self.quit
        self.cancel_btn.grid(column=1, row=0, sticky=S, pady=8, padx=8)

        self.preview_btn = Button(self.confirm_button_frame)
        self.preview_btn["text"] = "Preview"
        self.preview_btn["command"] = self.do_preview
        self.preview_btn.grid(column=2, row=0, sticky=S, pady=8, padx=8)

        self.run_btn = Button(self.confirm_button_frame)
        self.run_btn["text"] = "Apply"
        self.run_btn["command"] = self.do_execute
        self.run_btn.grid(column=3, row=0, sticky=S, pady=8, padx=8)
        self.run_btn["state"] = 'disabled'

    def do_preview(self):
        directory = self.cfg.directory.get()

        self.text.config(state=NORMAL)
        self.text.delete("1.0", END)
        self.text.config(state=DISABLED)

        self.files_with_content = []
        for path, dirs, files in os.walk(directory):
            for fname in files:
                filename = os.path.join(path, fname)

                if not self.cfg.glob.get() or fnmatch.fnmatch(fname.lower(), self.cfg.glob.get().lower()):
                    with open(filename, 'rt', encoding='latin-1') as fin:
                        lines = fin.read().splitlines()
                    lines = minised_on_lines(lines, self.cfg.search.get(), self.cfg.replace.get(),
                                             self.cfg.ignore_case.get())
                    self.files_with_content.append((filename, lines))

                    self.text.config(state=NORMAL)
                    self.text.insert(END, "%s:\n" % filename, "file")
                    for line in lines:
                        if isinstance(line, tuple):
                            if self.cfg.show_original.get():
                                self.text.insert(END, "%s" % line[0], "hollow")
                                self.text.insert(END, "%s" % line[1], "search")
                                self.text.insert(END, "%s\n" % line[3], "hollow")

                            self.text.insert(END, "%s" % line[0], "highlight")
                            self.text.insert(END, "%s" % line[2], "replace")
                            self.text.insert(END, "%s" % line[3], "highlight")
                            self.text.insert(END, "\n")
                        elif self.cfg.show_full_content.get():
                            self.text.insert(END, "%s\n" % line)
                    self.text.insert(END, "\n")
                    self.text.config(state=DISABLED)

                    self.master.update()
        self.run_btn["state"] = 'normal'

    def do_execute(self):
        for filename, lines in self.files_with_content:
            if self.cfg.create_backups.get():
                os.rename(filename, filename + "~")

            with open(filename, 'wt', encoding='latin-1', newline='\r\n') as fout:
                for line in lines:
                    if isinstance(line, tuple):
                        fout.write(line[0])
                        fout.write(line[2])
                        fout.write(line[3])
                    else:
                        fout.write(line)
                    fout.write("\n")

        self.run_btn["state"] = 'disabled'
        tkinter.messagebox.showinfo("Replacement successful",
                                    "Replacements have been performed successfully on the files")
class Editor:
    def __init__(self):
        # Initialize the text editor
        self.root = tk.Tk(className='Tekstieditori')

        # Text editor text area
        self.textpad = tkst.ScrolledText(self.root,
                                         width=100,
                                         height=36,
                                         highlightthickness=0)

        # Text area, inner padding and font config added
        self.textpad.config(font=('tkDefaultFont', 16, 'normal'),
                            padx=10,
                            pady=10)

        # Add text area to parent
        self.textpad.pack()

        # Create a file menu in menu bar
        self.menu = Menu(self.root)
        self.filemenu = Menu(self.menu)
        self.file_menu_conf()

        self.file = {}

        # Initialize the selection index class variable
        self.sel_index = [0, 1]

        # Configurate click events
        self.event_config()

    def open(self):
        """ File open dialog, used via a file menu in menu bar

            TODO(maybe): open when no file is opened
        """
        # Redirect user to save when there's data in textarea
        if len(self.textpad.get("1.0", tk.END+'-1c')) == 0:
            # Ask the user for a file to open
            userinput = tk.filedialog.askopenfilename(parent=self.root,
                                                      title='Valitse tiedosto')
            # Wait for user input
            if userinput is None or userinput is "":
                self.open()
            else:
                # Use the fileSystem class for all file operations
                self.file = File(userinput)
                contents = self.file.read()

                # Empty the editor
                self.textpad.delete('1.0', tk.END+'-1c')

                # Insert the contents to the editor
                self.textpad.insert('1.0', contents)

                # Populate with existing tags
                self.populate_tags()
        else:
            self.save()

    def file_menu_conf(self):
        """ File menu configuration,
            add the menu buttons.
        """
        self.root.config(menu=self.menu)
        self.menu.add_cascade(label="Tiedosto", menu=self.filemenu)
        self.filemenu.add_command(label="Avaa..", command=self.open)
        self.filemenu.add_command(label="Tallenna", command=self.save)
        self.filemenu.add_separator()
        self.filemenu.add_command(label="Poistu", command=self.exit)

    def create_window(self, event):
        """ Popup window which is used for adding and reading tags.
            Opened with a right click on selected text, contains an
            entry field, which shows existing tags, and can be used
            to add new ones.
        """
        if hasattr(self.file, 'path'):
            # Create a new popup window
            self.t = Toplevel(self.root)
            self.t.title("Lisää tägi")

            # Get the selection index before
            # inserting its tags in the entry field
            self.get_index()

            # Get existing tags
            self.get_this_tag_list()

            # Tag entry field
            self.e = Entry(self.t)
            self.e.pack()

            # Tag submit button
            self.b = Button(self.t,
                            text="Lisää tägi",
                            command=self.entry_callback)
            self.b.pack()
        else:
            self.save()

    def save(self):
        """ Save the original file or create a new one,
            if there's no file opened already.
        """
        # Open the file dialog
        userinput = tk.filedialog.asksaveasfilename()

        # Wait for user input
        if userinput is not None:

            self.file = File(userinput)

            # Get text editor contents
            data = self.textpad.get('1.0', tk.END+'-1c')

            # Write data to file
            self.file.write(data)

    def exit(self):
        """ Exit command, which is
            called whenever user
            wants to close the whole editor.
        """
        self.root.protocol('WM_DELETE_WINDOW', self.exit)
        if tk.messagebox.askokcancel("Poistu", "Haluatko todella poistua?"):
            self.root.destroy()

    def populate_tags(self):
        """ Get existing tags from the tag
            file, and print them with tkinter
            tag_add as yellow highlighted
            areas in the text.
        """
        for tag in self.textpad.tag_names():
            self.textpad.tag_delete(tag)
        for tag in self.file.readtags():
            if len(tag) > 0:
                for contents in tag["tag"]:
                    print(contents)
                    print(tag["index"])

                    self.textpad.tag_add(contents,
                                         tag["index"][0],
                                         tag["index"][1])
                    # Muted yellow accent for tags
                    self.textpad.tag_config(contents,
                                            background="yellow",
                                            bgstipple="gray50")
                    # Lower all incoming tags,
                    # so that selection always shows
                    self.textpad.tag_lower(contents)

    def get_this_tag_list(self):
        if hasattr(self, "taglist"):
            self.taglist.destroy()
        self.taglist = LabelFrame(self.t)
        self.taglist.pack()
        # Get existing tags
        try:
            existing_tags = [Button(self.taglist,
                             text=tag,
                             background="yellow",
                             command=lambda: self.delete_existing_tag(tag, self.sel_index))
                             for tag
                             in self.file.get_tags_by_index(self.sel_index)]
            for tag in existing_tags:
                tag.pack()
        except TypeError:
            # Greeting, if no tags are present
            print("No tags in this index")

    def entry_callback(self):
        """ Callback event for adding a tag.
            Called when the tag submit button
            is pressed, because tkinter button
            event can't have any input.
        """
        self.add_tag(self.e.get())
        self.get_this_tag_list()

    def add_tag(self, description):
        """ GUI implementation of tagging.
            Uses the filesystem for saving
            tags to a file, and saves new tags
            graphically with tkinter tag_add()
        """
        try:
            # Add the tag(s) graphically to the text
            self.textpad.tag_add(description,
                                 self.sel_index[0],
                                 self.sel_index[1])
            # Muted yellow accent for tags
            self.textpad.tag_config(description,
                                    background="yellow",
                                    bgstipple="gray50")
            # Lower all incoming tags,
            # so that selection always shows
            self.textpad.tag_lower(description)

            # Add the tag(s) to original file's tag file in data/
            self.file.tag(description, self.sel_index)
        except Exception:
            # When something goes wrong...
            print("...Whoooops...")

    def delete_existing_tag(self, description, index):
        self.file.remove_tag(description, index)
        self.get_this_tag_list()
        self.populate_tags()

    def get_index(self):
        """ Get the indeces of selected text.
            Used whenever and before any new
            tags are added.
        """
        try:
            self.sel_index = [self.textpad.index("sel.first"),
                              self.textpad.index("sel.last")]
        except tk.TclError:
            # Error, which is raised when no selection indeces are present.
            print("You need to select something + \
                   before getting selection index!")

    def event_config(self):
        # self.textpad.bind("<Button-2>", self.create_window)
        # Remove unnecessary copy and paste on second mouse click
        self.root.bind_class("Text",
                             sequence='<Button-2>',
                             func=self.create_window)