コード例 #1
0
    def create_tree_bar(self, test, window, depth, row):
        """Create progress bar for a test in an hierarchical form."""
        name = test.data.name
        if test.IS_COMPLEX:
            total = test._expected_time

        else:
            avg_time = test._expected_time
            if avg_time:
                total = int(avg_time) * 10

            else:
                total = 10
                name += " (No statistics)"

        label = tkinter.Label(window, text=name, height=1)
        style = Style()
        style.theme_use('clam')
        style_name = "{}.Horizontal.TProgressbar".format(test.identifier)
        style.configure(style_name, foreground='red', background='red')
        progress = Progressbar(window,
                               orient=tkinter.HORIZONTAL,
                               maximum=total,
                               length=self.BAR_WIDTH,
                               mode='determinate',
                               style=style_name)

        test.progress_bar = ProgressContainer(test, progress, style_name)

        label.grid(column=depth, row=row)
        progress.grid(column=depth + 1, row=row)
コード例 #2
0
def checkPE():

    filePath = filedialog.askopenfilename(filetypes=(("All Files", "*.exe"),
                                                     ("File", "*.exe")))

    progress = Progressbar(win,
                           orient=HORIZONTAL,
                           length=250,
                           mode='determinate')
    progress.grid(row=0, sticky="N", padx=90, pady=420)

    progress['value'] = 30
    win.update_idletasks()
    time.sleep(1)

    fileName = ""
    for c in reversed(filePath):
        if c == '/':
            break
        else:
            fileName = fileName + c

    fileName = fileName[::-1]

    progress['value'] = 80
    win.update_idletasks()
    time.sleep(1)

    win.update()

    os.system("python checkpe.py " + fileName)

    progress.grid(pady=1000)
コード例 #3
0
class Gui:
    def __init__(self):
        self.Window = Tk()
        self.Window.geometry('{0}x{1}'.format(400, 200))

        self.progress = StringVar()
        self.progress.set(0)
        self.progressBar = Progressbar(self.Window,
                                       maximum=100,
                                       orient=HORIZONTAL,
                                       variable=self.progress)
        self.progressBar.grid(row=10, column=300, sticky=W + E)

        self.startButton = Button(self.Window,
                                  text='Iniciar',
                                  command=self.start)
        self.startButton.grid(row=10, column=80)
        self.progress_count = 0

    def start(self):
        self.progress.set(self.progress_count)
        self.progress_count += 1
        if self.progress_count < 100:
            self.Window.after(100, self.start)

    def run(self):
        self.Window.mainloop()
        return 0
コード例 #4
0
 def build(self, results, featuresets):
     row = 1
     maxweight = sorted([f['score'] for f in results['weights']],
                        reverse=True)[0]
     maxwidth = sorted([len(f['feature']) for f in results['weights']],
                       reverse=True)[0]
     for s in sorted(featuresets):
         if any([f['featureset'] == s for f in results['weights']]):
             lbl = Label(self.tab,
                         text=s,
                         font=('Monaco', 16),
                         anchor=W,
                         width=25,
                         justify=LEFT)
             lbl.grid(columnspan=2, row=row, sticky='w')
             row += 1
         for f in sorted(results['weights'],
                         key=lambda f: f['score'],
                         reverse=True):
             if f['featureset'] == s:
                 bar = Progressbar(self.tab,
                                   length=200,
                                   style='black.Horizontal.TProgressbar')
                 bar['value'] = f['score'] * (100.0 / maxweight)
                 bar.grid(column=0, row=row)
                 lbl = Label(self.tab,
                             text=f['feature'],
                             font=("Monaco", 12),
                             anchor=W,
                             width=maxwidth,
                             justify=LEFT)
                 lbl.grid(column=1, row=row)
                 row += 1
コード例 #5
0
class SensorPanel:
    def __init__(self, name, min_val, max_val, parent, row, column, padx):
        # Sensor properties
        self.name = name
        self.min_val = min_val
        self.max_val = max_val

        # Append to Tk parent panel
        self.panel = Frame(parent, width=170, height=10, pady=3)
        if name:
            self.name_label = Label(self.panel, text=name)
            self.name_label.grid(row=0, column=0, columnspan=2, pady=5)
        self.pb = Progressbar(self.panel,
                              orient=HORIZONTAL,
                              mode="determinate",
                              length=140)
        self.pb.grid(row=1, column=0, sticky=(W, E))
        self.value_label = Entry(self.panel, width=7, justify=RIGHT)
        self.value_label.grid(row=1, column=1, padx=5, sticky=(W, E))
        self.panel.grid(row=row, column=column, padx=padx)
        self.set_sensor_value(0)

    def set_sensor_value(self, value):
        self.pb['value'] = map_value(value, self.min_val, self.max_val)
        self.value_label.delete(0, END)
        self.value_label.insert(0, '%.2f' % value)
コード例 #6
0
    def load_to_serv(self):
        """ Загрузить что-то на сервер """
        try:
            file_name: str = filedialog.askopenfilename(
                initialdir="/home/snorcros",
                title="Select a File",
                filetypes=(("Text files", "*.txt*"), ("all files", "*.*")))
            if file_name:
                print(file_name)
                progressbar = Progressbar(self,
                                          orient='horizontal',
                                          length=200,
                                          mode='indeterminate')
                progressbar.grid(row=2, column=2)
                progressbar.config(maximum=100, value=0)

                load_thread = threading.Thread(target=self.client.load,
                                               args=(file_name, ))
                load_thread.start()

                progressbar.start(interval=50)
                while load_thread.is_alive():
                    self.master.update_idletasks()
                    time.sleep(0.05)

                file_name = file_name.split(sep='/')[-1]
                progressbar.stop()
                progressbar.destroy()
                ft_done("File " + file_name + " was load to server")
                self.add_file_to_root(file_name)
        except ConnectionResetError:
            ft_error("Server died :c")
            self.disconnect()
        except Exception as e:
            ft_error(e)
コード例 #7
0
def easy_game_window(window, Gamer_name, fileBackground2):
    # destroy the old widgets
    global GameInfoDict
    for widget in window.winfo_children():
        widget.destroy()
    background_label = Label(window, image=fileBackground2)
    background_label.place(x=0, y=0, relwidth=1, relheight=1)
    frame = Frame(window, bg="white")
    frame.grid(row=1, column=1)

    frame.grid_columnconfigure(0, weight=1)
    frame.grid_rowconfigure(0, weight=1)
    # get game in thread
    t = threading.Thread(target=getGameInfoDict, args=(Gamer_name, ))
    t.start()

    message1 = Label(frame,
                     text='You will see facts about an artist',
                     fg='black',
                     bg="white",
                     font=("Comic Sans MS", 14))
    message1.grid(row=0, column=0, pady=(15, 5), padx=(10, 10))
    message1 = Label(
        frame,
        text="Try memorized all of them because you will be asked about them",
        fg='black',
        bg="white",
        font=("Comic Sans MS", 14))
    message1.grid(row=1, column=0, pady=(0, 5), padx=(10, 10))
    message1 = Label(frame,
                     text='Prepare yourself...',
                     fg='black',
                     bg="white",
                     font=("Comic Sans MS", 16))
    message1.grid(row=2, column=0, pady=(15, 5), padx=(10, 10))
    progress = Progressbar(frame,
                           orient=HORIZONTAL,
                           length=100,
                           mode='indeterminate')
    progress.grid(row=3, column=0, pady=(5, 5))
    bar(progress, frame)  # start progress bar

    listt = frame.grid_slaves()
    for l in listt:
        l.destroy()

    message1 = Label(frame,
                     text='your artist is: ' + GameInfoDict['artist_name'],
                     fg='black',
                     bg="white",
                     font=("Comic Sans MS", 16))
    message1.grid(row=0, column=0, pady=(5, 5))
    message2 = Label(frame,
                     text='the game will start  in 5 second',
                     fg='black',
                     bg="white",
                     font=("Comic Sans MS", 14))
    message2.grid(row=1, column=0, pady=(5, 5))
    frame.after(5000, showAttribute, Gamer_name, window, frame, GameInfoDict,
                0, fileBackground2)
コード例 #8
0
        def _create_progress_bar(self, key_and_range):
            key = key_and_range[0]

            to = key_and_range[2] if len(key_and_range) > 2 else 100
            default = key_and_range[3] if len(key_and_range) > 3 else 'abc'

            sty = tkinter.ttk.Style()
            sty.theme_use('clam')
            sty.configure('gray.Horizontal.TProgressbar')
            wdg = Progressbar(self.frm_param,
                              value=default,
                              maximum=to,
                              style='gray.Horizontal.TProgressbar',
                              orient='horizontal',
                              length=98,
                              mode='determinate')
            wdg.grid(column=0, row=self.i_row, padx=10, pady=pady)
            self.widgets[key] = (wdg, None)
            tkinter.Label(self.frm_param,
                          text=key,
                          width=lbl_width,
                          anchor='w').grid(column=1,
                                           row=self.i_row,
                                           padx=10,
                                           pady=pady)
            self.i_row += 1
コード例 #9
0
def show_progress(root):
    # Progress bar widget
    progress = Progressbar(root,
                           orient=HORIZONTAL,
                           length=500,
                           mode='determinate')

    # Function responsible for the updating
    # of the progress bar value
    progress.grid(row=5, column=1, columnspan=3, sticky=W + E)

    progress['value'] = 20
    root.update_idletasks()
    time.sleep(1)

    progress['value'] = 40
    root.update_idletasks()
    time.sleep(1)

    progress['value'] = 50
    root.update_idletasks()
    time.sleep(1)

    progress['value'] = 60
    root.update_idletasks()
    time.sleep(1)

    progress['value'] = 80
    root.update_idletasks()
    time.sleep(1)
    progress['value'] = 100
コード例 #10
0
ファイル: run.py プロジェクト: gavjan/image_gen
    def start_scraping():

        k = 0
        new_cats = {}
        for cat in all_cats:
            j = 0
            new_cats[cat] = []
            states = list(cat_boxes[k].state())
            for sub_cat in all_cats[cat]:
                if states[j]:
                    new_cats[cat].append(sub_cat.copy())
                j += 1

            k += 1
            if not new_cats[cat]:
                del new_cats[cat]

        overall = sum([len(new_cats[cat]) for cat in new_cats])
        if overall == 0:
            return

        progress = Progressbar(canvas, orient=HORIZONTAL, length=200, mode='determinate')
        progress.grid(row=max_row, column=1, pady=10)
        root.update_idletasks()
        step = 100 / overall
        i = 0
        for cat in new_cats:
            for sub_cat in new_cats[cat]:
                do_sub_category(cat, sub_cat)
                i += step
                progress["value"] = i
                root.update_idletasks()

        root.quit()
コード例 #11
0
    def save(self, file_name, row):
        """ Скачать что-то с сервера """
        try:
            path: str = filedialog.askdirectory(
                initialdir="/home/snorcros",
                title="Select a dir for download",
                mustexist=1)

            if path:
                progressbar = Progressbar(self,
                                          orient='horizontal',
                                          length=150,
                                          mode='indeterminate')
                progressbar.grid(row=row, column=4)
                progressbar.config(maximum=100, value=0)

                save_thread = threading.Thread(target=self.client.save,
                                               args=(file_name, path))
                save_thread.start()

                progressbar.start(interval=50)
                while save_thread.is_alive():
                    self.master.update_idletasks()
                    time.sleep(0.05)

                progressbar.stop()
                progressbar.destroy()
                ft_done("File " + file_name + " was download to " + path)
        except ConnectionResetError:
            ft_error("Server died :c")
            self.disconnect()
        except Exception as e:
            ft_error(e)
コード例 #12
0
ファイル: ytcm-gui.py プロジェクト: fizzywhizbang/YTCM-GUI
    def update_chans(self, archive=0):
        self.center = Frame(root,
                            bg=config.bgcolor,
                            width=50,
                            height=40,
                            padx=3,
                            pady=3)

        # layout all of the main containers
        root.grid_rowconfigure(1, weight=1)
        root.grid_columnconfigure(0, weight=1)
        self.center.grid(row=1, sticky="nsew")

        #run through channel check's
        channels = database.get_channels(archive)
        number_of_channels = len(channels) + .1
        pgbar = Progressbar(self.center,
                            orient=HORIZONTAL,
                            length=700,
                            mode="determinate")
        pgbar["maximum"] = number_of_channels

        tbox = Text(self.center, height=25, width=100)
        tbox.grid(column=0, row=0)
        pgbar.grid(column=0, row=1)
        for item in channels:
            pgbar.step()
            tbox.insert(END, "checking " + item.displayname + "\n")
            self.center.update()
コード例 #13
0
class JDScrapperGUI:
    def __init__(self, master):
        self.master = master

        self.label_query = Label
        self.entry_query = Entry

        self.label_location = Label
        self.entry_location = Entry

        self.label_file_name = Label
        self.entry_file_name = Entry

        self.label_progress = Label
        self.button_start = Button

        # Progress bar widget
        self.progress = Progressbar

    def start_scrapping(self):
        query = self.entry_query.get()
        location = self.entry_location.get()
        file_name = self.entry_file_name.get()
        scrapper = ScrapperLogic(query, location, file_name, self.progress,
                                 self.label_progress)
        t1 = threading.Thread(target=scrapper.start_scrapping_logic, args=[])
        t1.start()

    def start(self):
        self.label_query = Label(self.master, text='Query')
        self.label_query.grid(row=0, column=0)

        self.entry_query = Entry(self.master, width=23)
        self.entry_query.grid(row=0, column=1)

        self.label_location = Label(self.master, text='Location')
        self.label_location.grid(row=1, column=0)

        self.entry_location = Entry(self.master, width=23)
        self.entry_location.grid(row=1, column=1)

        self.label_file_name = Label(self.master, text='File Name')
        self.label_file_name.grid(row=2, column=0)

        self.entry_file_name = Entry(self.master, width=23)
        self.entry_file_name.grid(row=2, column=1)

        self.label_progress = Label(self.master, text='0%')
        self.label_progress.grid(row=3, column=0)

        self.button_start = Button(self.master,
                                   text="Start",
                                   command=self.start_scrapping)
        self.button_start.grid(row=3, column=1)

        self.progress = Progressbar(self.master,
                                    orient=HORIZONTAL,
                                    length=350,
                                    mode='determinate')
        self.progress.grid(row=4, columnspan=2)
コード例 #14
0
def run():
    # initialize window
    window = Tk()
    window.title("The memory game of a funny name")
    window.geometry("800x600")
    window.minsize(width=800, height=600)
    window.grid_columnconfigure(1, weight=1)
    window.grid_rowconfigure(1, weight=1)

    backgroundName = sys.path[0] + '\\View\\background.png'

    fileBackground = PhotoImage(file=backgroundName)

    backgroundName2 = sys.path[0] + '\\View\\bg2.png'
    fileBackground2 = PhotoImage(file=backgroundName2)

    # initialize frame
    frame = Frame(window)
    frame.grid(row=1, column=1)
    frame.grid_columnconfigure(0, weight=1)
    frame.grid_rowconfigure(0, weight=1)

    message1 = Label(frame, text='Please Wait...', fg='black', font='Ariel 16 bold')
    message1.grid(row=0, column=0, pady=(5, 5))
    progress = Progressbar(frame, orient=HORIZONTAL, length=100, mode='indeterminate')
    progress.grid(row=1, column=0, pady=(5, 5))
    bar(progress, frame)  # start progress bar

    # login page- the first page that the user see
    login_page.login_window(window, fileBackground, fileBackground2)
    window.mainloop()
コード例 #15
0
    def __init__(self, parent, controller):
        Frame.__init__(self, parent)
        lbl = Label(self, text="Deepfake Detector", font=("Arial Bold", 30))
        lbl.grid(column=2, row=1, ipadx=20)

        verNbr = Label(self, text="Version 1.0.0")
        verNbr.grid(column=3, row=4)

        def nextPage():

            controller.show_frame(ResultsPage)

        #Creating progress bar
        bar = Progressbar(self, length=200)

        bar['value'] = 100

        bar.grid(column=2, row=3, padx=200, pady=10)

        nxt = ttk.Button(self, text="Next", width=10, command=nextPage)

        if bar['value'] == 100:

            nxt.grid(column=2, row=4, pady=10)

        else:

            nxt.grid_remove()

        logo = PhotoImage(file='SP_Mascot.png')
        logo.image = logo
        labelLogo = Label(self, image=logo)

        labelLogo.grid(row=2, column=2, pady=8)
コード例 #16
0
 def build(self, results):
     row = 1
     maxfqmethodname = sorted([len(m['fqmethodname']) for m in results['methods'] ],reverse=True)[0]
     maxjars = sorted([len(m['jarnames']) for m in results['methods'] ],reverse=True)[0]
     for m in sorted(results['methods'],key=lambda m:m['score'],reverse=True):
         seqlabel = Label(self.label_frame,text=str(row),font=('Monaco',12),
                              anchor=W,width=2,justify=RIGHT,padx=5)
         self.seqlabels.append(seqlabel)
         seqlabel.grid(column=0,row=row)
         bar = Progressbar(self.label_frame,length=200,style='black.Horizontal.TProgressbar')
         bar['value'] = m['score'] * 100.0
         self.progressbars.append(bar)
         bar.grid(column=1,row=row)
         methodlabel = ExtendedLabel(m['package'] + '.' + m['classname'], m['methodname'],
                             self.label_frame, text=m['fqmethodname'],
                             font=('Monaco',12),
                             anchor=W,width=maxfqmethodname,
                             justify=LEFT,padx=5)
         jarlabel = Label(self.label_frame,text=m['jarnames'],
                              font=('Monaco',12),
                              anchor=W,
                              width=maxjars,justify=LEFT)
         self.methodlabels.append(methodlabel)
         self.jarlabels.append(jarlabel)
         methodlabel.grid(column=2,row=row)
         methodlabel.bind("<Button-1>", self.methodlabelclick)
         jarlabel.grid(column=3,row=row)
         row += 1
コード例 #17
0
def leaderboard_window(window, Gamer_name):
    global leaderboard
    for widget in window.winfo_children():
        widget.destroy()
    frame = Frame(window)
    frame.grid(row=1, column=1)

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

    t = threading.Thread(target=getleaderboard)
    t.start()
    message1 = Label(frame,
                     text='Please Wait...',
                     fg='black',
                     font='Ariel 16 bold')
    message1.grid(row=0, column=0, pady=(5, 5))
    progress = Progressbar(frame,
                           orient=HORIZONTAL,
                           length=100,
                           mode='indeterminate')
    progress.grid(row=1, column=0, pady=(5, 5))
    bar(progress, frame)
    listt = frame.grid_slaves()
    for l in listt:
        l.destroy()

    name = Label(frame, text='Leaderboard', fg='black', font='Ariel 16 bold')
    name.grid(row=0, column=0, pady=(10, 10))

    i = 1
    for key in leaderboard.keys():
        i += 1
        name1 = Label(frame, text=key, fg='black', font='Ariel 10 bold')
        name1.grid(row=i, column=0, pady=(5, 5))
        tv = Treeview(frame, height=len(leaderboard[key]) - 1)
        tv['columns'] = (leaderboard[key][0][1])
        tv.heading("#0", text=leaderboard[key][0][0])
        tv.column("#0", anchor="center", width=100)
        tv.heading(leaderboard[key][0][1], text=leaderboard[key][0][1])
        tv.column(leaderboard[key][0][1], anchor='center', width=100)
        tv.grid(sticky=(N, S))
        treeview = tv
        for j in range(len(leaderboard[key]) - 1):
            j += 1
            treeview.insert('',
                            'end',
                            text=leaderboard[key][j][0],
                            values=(leaderboard[key][j][1]))
        i += 1
        treeview.grid(row=i, column=0, pady=(10, 10))

    bottonEasy = Button(frame,
                        text='Go back',
                        bg="green",
                        fg="white",
                        font='Ariel 12 bold',
                        command=lambda: start(window, Gamer_name))
    bottonEasy.grid(row=i + 1, column=0, pady=(5, 5))
コード例 #18
0
def clicked():
    global clicks
    clicks = clicks + 1
    trelbl = Label(window, text=clicks)
    trelbl.grid(column=0, row=5)
    bar = Progressbar(window, length=200)
    bar['value'] = clicks
    bar.grid(column=1, row=2)
コード例 #19
0
class SomeClass1(threading.Thread):
    def __init__(self, q, root, total_rows, loop_time=1.0 / 60):
        self.q = q
        self.timeout = loop_time
        self.total_rows = 50
        self.root1 = tk.Tk()
        self.root_ref = root
        self.processed = 0
        self.progress = Progressbar(root,
                                    orient=HORIZONTAL,
                                    variable=1,
                                    length=120)
        self.progress.config(maximum=MAX, mode='determinate', value=1)
        self.progress.step(1)
        self.progress.grid(row=0, column=1)
        super(SomeClass1, self).__init__()

    def onThread(self, function, *args, **kwargs):
        self.q.put((function, args, kwargs))

    def run(self):
        while True:
            try:
                function, args, kwargs = self.q.get(timeout=self.timeout)
                function(*args, **kwargs)
                print("run processed")
            except queue.Empty:
                self.idle()
                print("run empty")

    def idle(self):
        # put the code you would have put in the `run` loop here
        print("idle")
        self.progress = Progressbar(self.root_ref,
                                    orient=HORIZONTAL,
                                    variable=self.processed,
                                    length=120)
        self.progress.config(maximum=MAX, mode='determinate', value=1)

    def doSomething(self, processed_row):
        global processed
        print("waiting in increment_progress_bar...", processed_row, ":",
              self.total_rows)
        #int_processed_row = int(processed_row,10)
        if (processed_row >= self.total_rows):
            print("in progress stop")
            self.progress.stop()
            self.progress.grid_forget()
        else:
            print("in progress step")
            #self.progress.step(processed_row)
            self.processed = processed_row
            print("updated progress bar...")

    def doSomethingElse(self, b):
        print("doSomethingElse", b)
        self.progress.step(1)
        time.sleep(2)
コード例 #20
0
ファイル: gui.py プロジェクト: yfedberts/DocuBots
    def __init__(self, parent, controller):
        ttk.Frame.__init__(self, parent)
        label = ttk.Label(self, text="Check for similarities with contents found online", font = LARGE_FONT)
        label.grid(row=0, columnspan=2,sticky="ns")

        #Display the uploaded file
        displayLlabel = ttk.Label(self, text="Uploaded File", font = MEDIUM_FONT)
        displayLlabel.grid(row=1,column=0, pady=0, sticky="nsew")

        docxDisplay = tk.Text(self, height = 25, width = 50)
        docxDisplay.grid(row=2, column =0, rowspan=4, pady=0, sticky="nsew")
        docxDisplay.configure(state='disable')

        #Results Display
        scoreLabel = ttk.Label(self, text="Similarity Score", font = MEDIUM_FONT)
        scoreLabel.grid(row=1, column=1, pady=0, sticky="nsew")

        scoreDisplay = tk.Text(self, height = 5, width = 50)
        scoreDisplay.grid(row=2,column=1,pady=0, sticky="nsew")
        scoreDisplay.configure(state='disable')

        #Similar Links
        similinksLabel = ttk.Label(self, text="Websites with similar content", font=MEDIUM_FONT)
        similinksLabel.grid(row=3, column=1,pady=0,sticky="nsew")

        simiLinksDisplay = tk.Text(self, height = 18, width = 50)
        simiLinksDisplay.grid(row=4, column=1,pady=0, ipady=0, sticky="nsew")
        simiLinksDisplay.configure(state='disable')

        #Sensitivity Option
        OptionList = ["1", "2", "3"]
        var = tk.StringVar(self)
        var.trace("w", lambda x,y,z: self.set_sens(var))
        var.set("2")

        sensLabel = ttk.Label(self, text="          Set Sensitivity \n(1: Low, 2: Medium, 3: High)",font=MEDIUM_FONT)
        sensLabel.grid(row=5, column=1,pady=0)

        sens_option = ttk.OptionMenu(self, var, OptionList[1], *OptionList)
        sens_option.grid(row=6, column=1,pady=0)

        progress = Progressbar(self, orient=HORIZONTAL,length=100,  mode='determinate')
        progress.grid(row=7, columnspan=2, pady=5,sticky="ew")

        checkButton = ttk.Button(self, text="Check Similarity", command= lambda: run_online_check(DOC_SOURCE, docxDisplay, scoreDisplay, simiLinksDisplay, progress))
        checkButton.grid(row=8,column=1,pady=0, sticky="nsew")

        uploadButton = ttk.Button(self, text="Upload File", command= lambda: upload_file(docxDisplay, 1))
        uploadButton.grid(row=8,column=0,pady=0, sticky="nsew")

        homeButton = ttk.Button(self, text="Home", command= lambda: controller.show_frame(StartPage))
        homeButton.grid(row=9, columnspan=2,pady=0, sticky="nsew")

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

        self.grid_columnconfigure(0, weight=1)
        self.grid_columnconfigure(1, weight=1)
コード例 #21
0
class GeneratorWidget:
  def __init__(self, root):
    self.root = root
    self.helv16 = TkFont.Font(self.root, family="Helvetica",size=16)
    self.helv22 = TkFont.Font(self.root, family="Helvetica",size=26)
    self.number_of_points = tk.StringVar(root, value='1000')

    self.points = None
    self.createGUI(self.root)


  def generateCommand(self):
    n = int(self.number_of_points.get())
    self.points = generator.get_land_coordinates(self.generator_progress, number = n)
  
  def loadCommand(self):
    self.points = generator.load_points(self.generator_progress)

  def getNewCommand(self):
    n = int(self.number_of_points.get())
    self.points = generator.get_new_points(self.generator_progress, n)

  def createGUI(self, root):
    #---------------------- GENERATOR FRAME ----------------------
    generator_frame = tk.Frame(root)
    generator_frame.grid(row=1, column=1, sticky=tk.E)
    #------------------- GENERATOR SUB FRAME 1 -------------------
    generator_sub_frame_1 = tk.Frame(generator_frame)
    generator_sub_frame_1.grid(row=1, column=1, sticky=tk.E)

    generator_label = tk.Label(generator_sub_frame_1, text='GENERATOR', font=self.helv22)
    generator_label.grid(row=1, column=1, sticky=tk.E)

    self.generator_progress = Progressbar(generator_sub_frame_1, orient=tk.HORIZONTAL, length=400, mode='determinate') 
    self.generator_progress.grid(row=1, column=2, sticky=tk.E)

    #------------------- GENERATOR SUB FRAME 2 -------------------
    generator_sub_frame_2 = tk.Frame(generator_frame)
    generator_sub_frame_2.grid(row=2, column=1, sticky=tk.E)

    self.n_of_points_label = tk.Label(generator_sub_frame_2, text='Number of points', font=self.helv16)
    self.n_of_points_label.grid(row=2, column=1, sticky=tk.E)

    self.n_of_points_area = tk.Entry(generator_sub_frame_2, textvariable=self.number_of_points, width=10, font=self.helv16, borderwidth=1, relief="solid")
    self.n_of_points_area.grid(row=2, column=2, sticky=tk.E)

    self.generate_button = tk.Button(generator_sub_frame_2, text='GENERATE', height=2, width=15, font=self.helv16, command = self.generateCommand)
    self.generate_button.grid(row=2, column=3, sticky=tk.E)

    self.load_button = tk.Button(generator_sub_frame_2, text='LOAD', height=2, width=15, font=self.helv16, command = self.loadCommand)
    self.load_button.grid(row=2, column=4, sticky=tk.E)

    self.get_new_button = tk.Button(generator_sub_frame_2, text='GET NEW', height=2, width=15, font=self.helv16, command = self.getNewCommand)
    self.get_new_button.grid(row=2, column=5, sticky=tk.E)

  def getPoints(self):
    return self.points
コード例 #22
0
def create_npz():
    #the size of the pictures
    target_size = (112, 112)
    source = filedialog.askdirectory(title="select source image folder") + "/"
    files = [('npz Files', '*.npz')]
    destination = filedialog.asksaveasfile(filetypes=files,
                                           defaultextension=files)
    # get all the file names
    file_list = glob.glob(source + '*.jpg')
    file_list.extend(glob.glob(source + '*.jpeg'))
    file_list.extend(glob.glob(source + '*.png'))
    # set up the image and names array
    images = []
    file_names = []
    list_length = len(file_list)
    #set up temporary progress bar and message
    temp_lbl = Label(console_frame, text="creating npz file")
    temp_lbl.grid(column=0, row=8, padx=5, pady=5)
    progress = Progressbar(console_frame,
                           orient=HORIZONTAL,
                           length=600,
                           mode='determinate')
    progress.grid(column=0, row=9, padx=5, pady=5)

    for i in range(list_length):
        print(str(i), str(i / list_length) + "% done")
        #update progress bar
        done = int((i / list_length) * 60)
        progress['value'] = done
        window.update()
        try:
            read = cv2.imread(file_list[i])
            shape_length = len(np.shape(read))
            #if image is grayscale
            if shape_length < 3:
                img_arr = cv2.cvtColor(read, cv2.COLOR_GRAY2BGR)
            #if image is a png
            elif shape_length > 3:
                img_arr = read[:, :, 0:3]
            #if regular jpg image
            else:
                img_arr = read
            resize = cv2.resize(img_arr, target_size)
            images += [resize]
            file_names += [file_list[i]]
        except:
            print("image read error trying another image")
            continue
    #remove tempory windows
    progress.destroy()
    temp_lbl.configure(text="converting images to numpy arrays")
    image = np.array(images)
    temp_lbl.configure(text="converting file paths to numpy arrays")
    file_names = np.array(file_names)
    temp_lbl.configure(text="saving arrays")
    np.savez(destination.name, images=images, file_names=file_names)
    temp_lbl.destroy()
コード例 #23
0
    def inicializar_gui(self):
        pbr_proceso = Progressbar(self.master, orient='horizontal', mode='indeterminate', length=300)
        pbr_proceso.grid(column=0, row=0, columnspan=2, padx=10, pady=10)

        btn_iniciar = Button(self.master, text='Iniciar', command=pbr_proceso.start)
        btn_iniciar.grid(row=1, column=0, padx=10, pady=10, sticky=E)

        btn_detener = Button(self.master, text='Detener', command=pbr_proceso.stop)
        btn_detener.grid(row=1, column=1, padx=10, pady=10, sticky=W)
コード例 #24
0
class CalculationFrame(LabelFrame):
	
	def __init__(self,parent):
		LabelFrame.__init__(self,parent,text="Calculate",borderwidth=5)       
		 
		self.startCalculationB = Button(self,text="Start calculation",width=20)
		self.startCalculationB.grid(row=0,column=0,padx=10,pady=5)
		self.endCalculationB = Button(self,text="Cancel calculation",width=20)
		self.endCalculationB.grid(row=1,column=0,padx=10,pady=5)
		self.calculationPB = Progressbar(self, mode="indeterminate",length=128)
		self.calculationPB.grid(row=2,column=0,padx=10,pady=5)
コード例 #25
0
def recur(a, root_1, top_frame, bottom_frame):
    label_name = Label(top_frame, text="Name")
    label_enroll = Label(top_frame, text="Enroll. No.")
    label_mob = Label(top_frame, text="Contact")
    label_email = Label(top_frame, text="Email")
    label_branch = Label(top_frame, text="Branch")

    entry_name = Entry(top_frame)
    entry_enroll = Entry(top_frame)
    entry_mob = Entry(top_frame)
    entry_email = Entry(top_frame)
    entry_branch = Entry(top_frame)

    label_name.grid(row=0, column=0, sticky="E")
    label_enroll.grid(row=2, column=0, sticky="E")
    label_mob.grid(row=4, column=0, sticky="E")
    label_email.grid(row=6, column=0, sticky="E")
    label_branch.grid(row=8, column=0, sticky="E")

    entry_name.grid(row=0, column=1)
    entry_enroll.grid(row=2, column=1)
    entry_mob.grid(row=4, column=1)
    entry_email.grid(row=6, column=1)
    entry_branch.grid(row=8, column=1)

    #name_1 = entry_name.get()
    #enroll_1 = entry_enroll.get()
    #mob_1 = entry_mob.get()
    #email_1 = entry_email.get()
    #branch_1 = entry_branch.get()

    style = ttk.Style()
    style.theme_use('default')
    style.configure("blue.Horizontal.TProgressbar", background='blue')
    bar = Progressbar(bottom_frame, length=100, mode='determinate')

    submit_button = Button(
        bottom_frame,
        text="SUBMIT",
        fg="blue",
        command=lambda: enter(a, root_1, top_frame, bottom_frame, bar,
                              entry_name, entry_enroll, entry_mob, entry_email,
                              entry_branch))
    reset_button = Button(
        bottom_frame,
        text="RESET",
        fg="blue",
        command=lambda: recur(a, root_1, top_frame, bottom_frame))

    submit_button.grid(row=10, column=0, sticky="E")
    reset_button.grid(row=10, column=1)

    bar.grid(row=11, columnspan=2)
コード例 #26
0
ファイル: main.py プロジェクト: ShreyasDobhal/FaceLens
class ProgressFrame(Frame):

    img = None
    pgbar = None
    imgLabel = None

    def __init__(self, parent, controller):
        Frame.__init__(self, parent)
        self.controller = controller
        self.controller.progressFrameChild = self

        Label(self,
              font=("times new roman", 20),
              bg=color['Background'],
              width=35).grid(row=5,
                             columnspan=3,
                             sticky=W + E + N + S,
                             padx=5,
                             pady=5)

        self.img = Image.open(tempFile)
        self.img = self.img.resize((200, 200))
        self.img = ImageTk.PhotoImage(self.img)
        self.imgLabel = Label(self, image=self.img)
        self.imgLabel.grid(row=6,
                           columnspan=3,
                           sticky=W + E + N + S,
                           padx=5,
                           pady=5)
        self.controller.imgLabel = self.imgLabel

        self.pgbar = Progressbar(self, length=100, value=0)
        self.pgbar.grid(row=7,
                        columnspan=3,
                        sticky=W + E + N + S,
                        padx=5,
                        pady=5)
        self.controller.copyingProgressBar = self.pgbar

        Button(self,
               text="Exit",
               font=("times new roman", 15),
               bg=color['ButtonBG'],
               fg=color['NormalText'],
               command=lambda: controller.exitApplication()).grid(row=9,
                                                                  columnspan=3,
                                                                  sticky=W +
                                                                  E + N + S,
                                                                  padx=5,
                                                                  pady=5)
コード例 #27
0
def startsong():
	lsl=len(d)
	t=random.randint(0,lsl-1)
	#u = StringVar(f1,value =e[t])
	#q = player.audio_get_time(e[t])
	#print(q)
	songtex = Label(f1,font=('arial',16,"bold"),text=e[t] ,bd = 10,bg = "powder blue",justify ='right').grid(row=1,column=1)
	pb_hD = Progressbar(f1, orient='horizontal', mode='determinate')
	pb_hD.grid(row=2,column=1)
	#if(player.is_playing == 1):
	pb_hD.start(1000)
	media = instance.media_new(d[t])
	player.set_media(media)
	player.play()	
コード例 #28
0
ファイル: Module.py プロジェクト: matty-l/Lilac
	def average_normals( self ):
		""" Applies Gouraud normalization to the module		
		"""
		# Set up updater
		top = Toplevel()
		pb = Progressbar(top,orient ="horizontal",length = 200, mode ="determinate")
		pb['maximum'] = len(self.__elements__)
		pb['value'] = 10
		pb.grid(row=0,column=0)
		tx = Label(top)
		tx.grid(row=1,column=0)
		top.update_idletasks()
		top.lift()
		t0 = time.time()
				
		# run the loop, if we're visible and phong shading
		if not self.invisible == 'gouroud':
			try:
				buf = np.array([0,0,0,1])
				for i,polygon in enumerate(self.__elements__):
					if not ispoly(polygon): continue
					polygon._onorms = np.array([polygon.normals.astype(float)+buf for i in range(len(polygon.coordinates))])
					
					# Update the user as to what's going on
					if i % 50 == 0 and i > 0:
						pb['value'] = i
						tmp = i/len(self.__elements__)
						estimation =  int(tmp*(time.time()-t0) * (1-tmp)/tmp)
						tx.configure(text=str(int(100*i/len(self.__elements__)))+"%"+' Estimated time: '+str(estimation)+'s' )
						top.update_idletasks()
						
					for c,coordinate in enumerate(polygon.coordinates):
						for j,opolygon in enumerate(self.__elements__):
							if i == j or not ispoly(opolygon): continue
							for k,ocoordinate in enumerate(opolygon.coordinates):
								if all(coordinate == ocoordinate): # same vertex, finally
									polygon._onorms[c] += (opolygon.normals+buf)
					polygon._onorms /= polygon._onorms[:,3,None]
					
				for polygon in self.__elements__:
					if ispoly(polygon): 
						polygon.normals = polygon._onorms
						del polygon._onorms
			except IndexError as ie: pass
		
		top.destroy()
		
		if self.invisible == 'gouroud':
			self.invisible = False
		return self # for chaining
コード例 #29
0
ファイル: GUI.py プロジェクト: MatsProg/GUI-Server-Client
	def MainWindow(self):
		self.app.title('Manager')

		self.app.geometry('700x400')

		self.app.image = tk.PhotoImage(file='2.png')
		self.label = tk.Label(self.app, image=self.app.image, bg='white')
		self.app.wm_attributes("-transparentcolor", "white")  # TRANSPARENCY
		self.label.pack()
		self.app.lift()
		self.app.mainloop()
		bar = Progressbar(self.app, length=200, style='black.Horizontal.TProgressbar')
		bar['value'] = 70
		bar.grid(column=0, row=0)
コード例 #30
0
    def progress(self, column, thread):
        progressbar = Progressbar(self,
                                  orient='horizontal',
                                  length=150,
                                  mode='indeterminate')
        progressbar.grid(column=column)
        progressbar.config(maximum=100, value=0)

        progressbar.start()
        while thread.is_alive():
            self.master.update_idletasks()
            time.sleep(0.05)
        progressbar.stop()
        progressbar.destroy()
コード例 #31
0
class Progress:

    kill_threads = False  # variable to see if threads should be killed

    def __init__(self, ft, maxval=100, r=0, c=0):
        self.val = IntVar()
        self.ft = ft
        self.pb = Progressbar(self.ft,
                              length=500,
                              orient="horizontal",
                              maximum=maxval,
                              mode="determinate",
                              variable=self.val)
        self.pb.grid(row=r, column=c, pady=30)
        self.maxval = maxval
        self.IsThRun = False
        #self.check_thread()

    def check_thread(self):
        if not self.IsThRun:
            self.IsThRun = True
            self.setStep0()
            threading.Thread(target=self.check_progress).start()

    def check_progress(self):
        while True:
            if self.kill_threads:  # if window is closed
                return  # return out of thread
            val = self.val.get()

            if val >= self.maxval:
                self.finish()
                self.IsThRun = False
                return
            time.sleep(1)  #테스트용 코드
            self.step(10)  #테스트용 코드

    def setStep0(self):
        self.val.set(0)

    def setStep(self, val):
        self.val.set(val)

    def step(self, val):
        self.val.set(self.val.get() + val)

    def finish(self):
        #self.ft.pack_forget()
        print("Finish!")
コード例 #32
0
def main_app(window):
    global progress, psql, pg_dump
    label1 = Label(window, text="DataBase Name: ", background='#E05E08')
    label1.grid(row=1, column=0, padx=5, pady=5)

    dbname = Entry(window, state=DISABLED, width=55, textvariable=dbn)
    dbname.grid(row=1, column=1, padx=5, pady=5)

    label2 = Label(window, text="DataBase Port: ", background='#E05E08')
    label2.grid(row=2, column=0, padx=5, pady=5)

    dbport = Entry(window, state=DISABLED, width=55, textvariable=dbp)
    dbport.grid(row=2, column=1, padx=5, pady=5)

    label3 = Label(window, text="DataBase Path: ", background='#E05E08')
    label3.grid(row=3, column=0, padx=5, pady=5)

    dbpath = Entry(window, state=DISABLED, width=55, textvariable=dbdir)
    dbpath.grid(row=3, column=1, padx=5, pady=5)

    label4 = Label(window,
                   text="Enter Path to save Backup: ",
                   background='#E05E08')
    label4.grid(row=4, column=0, padx=5, pady=5)

    destination = Entry(window,
                        state=DISABLED,
                        width=55,
                        textvariable=downpath)
    destination.grid(row=4, column=1, padx=5, pady=5)

    browsebutton1 = Button(window,
                           text="BROWSE",
                           command=lambda: folder('path'))
    browsebutton1.grid(row=4, column=3, padx=5, pady=5)

    editprop = Button(window,
                      text="Edit Property File",
                      command=lambda: edit("main"))
    editprop.grid(row=5, column=0, padx=5, pady=5)

    submitbutton = Button(window, text=" BACKUP ", command=destination_check)
    submitbutton.grid(row=5, column=3, padx=5, pady=5)

    progress = Progressbar(window,
                           orient=HORIZONTAL,
                           length=400,
                           mode='indeterminate')
    progress.grid(row=6, column=1, padx=5, pady=5)
コード例 #33
0
ファイル: dual_lang_gui.py プロジェクト: ali-185/DualLang
    def convert(self):
        """ Runs the parallel_text converter in a thread with the current input. """
        if not self.valid_input():
            return
        
        popup = Toplevel(self)
        # Disable closing of the popup window
        popup.protocol('WM_DELETE_WINDOW', lambda : None)

        progress = IntVar()
        Label(popup, text='Converting Epub. This cannot be interrupted. Please wait...').grid(row=0, column=0)
        progressbar = Progressbar(popup, orient=HORIZONTAL, length=200, mode='determinate', variable=progress)
        progressbar.grid(row=1, column=0)
        # Run converter in thread
        converter = Converter(self.languages[self.input_language.get()], self.languages[self.output_language.get()])
        self._error = False
        def target():
            try:
                converter.convert_epub(self.input_file.get(), self.output_file.get())
            except Exception as e:
                self._error = True
                self._message = str(e)
        
        thread = Thread(target=target)
        thread.start()
        # Keep updating progress bar
        def update_progressbar():
            progress.set(converter.percent_complete)
            if thread.is_alive():
                popup.after(500, update_progressbar)
            else:
                progressbar.stop()
                popup.destroy()
                if self._error:
                    showinfo(title="Conversion failed", message=self._message)
                else:
                    showinfo(title="Conversion complete", message="Conversion complete.")
        
        popup.after(500, update_progressbar)
        # Disable the main window
        popup.transient(self)
        popup.grab_set()
        self.wait_window(popup)
コード例 #34
0
ファイル: auto_mailer.py プロジェクト: pokk/Mailer
class AppGUI(Frame):
    def __init__(self, master=None):
        # Avoiding to send it continuously.
        self.lock = False

        Frame.__init__(self, master)
        self.grid()
        self.master = master
        # Setting for ComboBox.
        self.url_lang_combobox_str = StringVar()
        self.url_lang_combobox_list = lang_list
        # UI components.
        self.receiver_email_text = Label(self, text="Receiver:")
        self.receiver_email_field = Entry(self, width=50)
        self.subject_text = Label(self, text='Subject:')
        self.subject_field = Entry(self, width=50)
        self.receiver_name_text = Label(self, text='Name:')
        self.receiver_name_field = Entry(self, width=50)
        self.url_lang_text = Label(self, text='Link lang:')
        self.url_lang_combobox = Combobox(self, textvariable=self.url_lang_combobox_str, values=self.url_lang_combobox_list, state='readonly')
        self.send_progressbar = Progressbar(self, orient='horizontal', length=500, mode='determinate', maximum=300)
        self.send_button = Button(self, text='Send', command=self._send_mail)
        self.quit_button = Button(self, text='Exit', command=self.__exit)
        self.log_msg_text = ScrolledText(self)
        # Attachment.
        self.mail_attachment_list = attachment_list[:]
        self.url_lang_link_title = None
        self.url_lang_link = copy.deepcopy(content_link)
        # Mailer
        self._mailer = None

        # Let Mailer can control components.
        Mailer.window_content = self

        self.__create_widgets()

    def _send_mail(self):
        if not self.lock:
            threading.Thread(target=self.__send_mail).start()
        else:
            messagebox.showinfo('Warning', "Now it's processing...")

    def _choose(self, event):
        # arr = self.url_lang_link.get(self.url_lang_combobox_str.get())  # Get the array by choosing language.
        pass

    def _modify_content_url_link(self):
        link_arr = self.url_lang_link.get(self.url_lang_combobox_str.get())
        content = self._mailer.content
        for index in range(len(link_arr)):
            content_index = content.index(self.url_lang_link_title[index]) + len(self.url_lang_link_title[index])
            content = content[:content_index] + '\n' + link_arr[index] + content[content_index:]

        self._mailer.content = content
        return False

    def _make_mailer(self):
        self.mail_attachment_list = attachment_list[:]  # Clone a list.
        if atta_lang_list[self.url_lang_combobox.current()]:
            for i in range(len(self.mail_attachment_list)):
                # Only from the third file to the end file can change language.
                if i > 2:
                    # Modify the file name.
                    att = self.mail_attachment_list[i].split('.')
                    self.mail_attachment_list[i] = ''.join([' ', atta_lang_list[self.url_lang_combobox.current()], '.']).join(att)

        # ** IMPORTANT, we set the content path here!!
        path = 'content.docx'
        if self.url_lang_combobox.get() == lang_list[2] or self.url_lang_combobox.get() == lang_list[3]:
            path = 'content chinese.docx'
        if debug_log:
            print(self.mail_attachment_list)

        # ** IMPORTANT, we have to new an object here. Otherwise, we couldn't check the error checking.
        return Mailer(content_path=path, attachment_list=self.mail_attachment_list)

    def __create_widgets(self):
        """
        Construct all of the UI components.
        """

        self.receiver_email_text.grid(row=0, column=0)
        self.receiver_email_field.grid(row=0, column=1, columnspan=6)
        self.subject_text.grid(row=1, column=0)
        self.subject_field.grid(row=1, column=1, columnspan=6)
        self.subject_field.insert(0, 'Osaka Mariko Apartment Location & Condition')
        self.receiver_name_text.grid(row=2, column=0)
        self.receiver_name_field.grid(row=2, column=1, columnspan=6)
        self.url_lang_text.grid(row=3, column=0)
        self.url_lang_combobox.grid(row=3, column=2, columnspan=2)
        self.send_progressbar.grid(row=4, column=0, columnspan=7)
        self.send_button.grid(row=5, column=2)
        self.quit_button.grid(row=5, column=3)
        self.log_msg_text.grid(row=6, column=0, columnspan=7)

        # Default setting.
        self.url_lang_combobox.current(0)
        self.url_lang_combobox.bind("<<ComboboxSelected>>", self._choose)

    def __exit(self):
        if not self.lock:
            self.log_msg_text.insert(END, '\n\n -- Bye Bye --\n')
            self.master.quit()
        else:
            messagebox.showinfo('Error', "Now it's processing...please wait it ;)")

    @DecoratorThreadLockerApp()
    @DecoratorErrorCheckAndInitApp()
    def __send_mail(self):
        self.send_progressbar.start()  # Start processing the progress.
        ending = 'Welcome to use my application :)' if self._mailer.send_mail() \
            else '** Your sending was failed :( please send it again!'
        self.log_msg_text.insert(END, ending)
        self.send_progressbar.stop()  # Stop processing the progress.
コード例 #35
0
class WorkingWindow(Frame):

    STATE_NONE = 0
    STATE_CLICK = 1

    def __init__(self,  parent, controller):
        Frame.__init__(self, parent)

        self.controller = controller

        self.frameCanvas = Label(self, width=Settings.outputWidth, height=Settings.outputHeight)
        self.frameCanvas.grid(row=0, column=0, columnspan=5, pady=10)
        self.frameCanvas.bind("<Button-1>", self.markPosition)

        self.labelCanvas = Label(self, width=Settings.labelWidth, height=Settings.labelHeight)
        self.labelCanvas.grid(row=0, column=5, pady=10)
        self.labelCanvas.bind("<Button-1>", self.unmarkPosition)

        self.prevButton = Button(self, text="<<", command=self.showPrev)
        self.prevButton.grid(row=1, column=0, sticky="nesw")

        self.saveButton = Button(self, text="Save", command=self.save)
        self.saveButton.grid(row=1, column=2, sticky="nesw")

        self.nextButton = Button(self, text=">>", command=self.showNext)
        self.nextButton.grid(row=1, column=4, sticky="nesw")

        self.progressBar = Progressbar(self, orient=HORIZONTAL)
        self.progressBar.grid(row=2, column=0, columnspan=5, sticky="nesw", pady=10)

        self.stateLabel = Label(self, text="Loading...")
        self.stateLabel.grid(row=3, column=0, pady=10)

        self.frames = []
        self.labels = []
        self.currentFrame = 0

        self.loadVideo()
        self.showCurrentFrame()

        self.clickedPos = (0,0)
        self.drawState = WorkingWindow.STATE_NONE


    def loadVideo(self):
        file = Settings.movieFile

        cap = cv2.VideoCapture(file)
        index = 0
        while cap.isOpened() and index < Settings.nrFrames:
            ret, frame = cap.read()

            if frame is None:
                break
            else:
                self.frames.append(
                    cv2.cvtColor(
                        cv2.resize(
                            frame,
                            (int(Settings.outputWidth), int(Settings.outputHeight))
                        ),
                        cv2.COLOR_BGR2RGBA
                    )
                )
                self.labels.append(
                    cv2.cvtColor(
                        np.zeros(
                            (int(Settings.labelHeight), int(Settings.labelWidth), 1),
                            np.uint8
                        ),
                        cv2.COLOR_GRAY2RGBA
                    )
                )
            index += 1


    def showCurrentFrame(self):
        image = Image.fromarray(self.frames[self.currentFrame])
        image2 = ImageTk.PhotoImage(image=image)
        self.frameCanvas.image = image2
        self.frameCanvas.configure(image=image2)

        label = Image.fromarray(self.labels[self.currentFrame])
        label2 = ImageTk.PhotoImage(image=label)
        self.labelCanvas.image = label2
        self.labelCanvas.configure(image=label2)

        self.stateLabel.configure(text=("Frame {} / {}".format(self.currentFrame, len(self.frames))))


    def showPrev(self):
        if self.currentFrame > 0:
            self.currentFrame -= 1
        self.updateButtons()
        self.showCurrentFrame()

    def showNext(self):
        if self.currentFrame + 1 < len(self.frames):
            self.currentFrame += 1
        self.updateButtons()
        self.showCurrentFrame()

    def updateButtons(self):
        if self.currentFrame <= 0:
            self.prevButton.configure(state="disable")
        else:
            self.prevButton.configure(state="normal")

        if self.currentFrame+1 >= len(self.frames):
            self.nextButton.configure(state="disabl")
        else:
            self.nextButton.configure(state="normal")

    def markPosition(self, event):
        wFactor, hFactor = Settings.getOutputLabelFactors()

        if self.drawState == WorkingWindow.STATE_NONE:
            self.clickedPos = (int(event.x * wFactor), int(event.y * hFactor))
            self.drawState = WorkingWindow.STATE_CLICK
            self.stateLabel.configure(text=("Frame {} / {} - Wfsp!".format(self.currentFrame, len(self.frames))))
        elif self.drawState == WorkingWindow.STATE_CLICK:
            cv2.rectangle(self.labels[self.currentFrame], self.clickedPos, (int(event.x * wFactor), int(event.y * hFactor)), (255,255,255), -1)
            self.drawState = WorkingWindow.STATE_NONE
            self.showNext()
           # self.showCurrentFrame()


    def unmarkPosition(self, event):
        cv2.circle(self.labels[self.currentFrame], (event.x, event.y), 8, (0, 0, 0, 255), -1)
        self.showCurrentFrame()

    def convertFrames(self):
        convertedFrames = []
        for index in range(0, self.currentFrame+1):
            convertedFrames.append(
                np.transpose(
                    cv2.cvtColor(
                        self.frames[index],
                        cv2.COLOR_RGBA2BGR
                    ).astype("float"),
                    (2,0,1)
                )
            )

            for x in range(0, convertedFrames[len(convertedFrames)-1].shape[1]):
                for y in range(0, convertedFrames[len(convertedFrames)-1].shape[2]):
                    for c in range(0, convertedFrames[len(convertedFrames)-1].shape[0]):
                        convertedFrames[len(convertedFrames)-1][c][x][y] = float(convertedFrames[len(convertedFrames)-1][c][x][y])/255.0

        return convertedFrames

    def convertLabels(self):
        convertedLabels = np.zeros((self.currentFrame+1, int(Settings.labelHeight), int(Settings.labelWidth)))
        for index in range(0, self.currentFrame+1):
            for x in range(0, self.labels[index].shape[1]):
                for y in range(0, self.labels[index].shape[0]):
                    if self.labels[index][y][x][0] != 0 and self.labels[index][y][x][1] != 0 and self.labels[index][y][x][2] != 0:
                        convertedLabels[index][y][x] = 1
                    else:
                        convertedLabels[index][y][x] = 0

        return convertedLabels


    def save(self):
        convertedFrames = self.convertFrames()
        convertedLabels = self.convertLabels()

        h5f = h5py.File("data-{}.h5".format(strftime("%d-%b-%Y-%H-%M-%S", gmtime())), "w")
        h5f.create_dataset("data", (self.currentFrame+1, 3, Settings.outputHeight, Settings.outputWidth), dtype="float")
        h5f.create_dataset("label", (self.currentFrame+1, 1, Settings.labelHeight, Settings.labelWidth), dtype="float")

        for index in range(0, self.currentFrame+1):
            h5f["data"][index] = convertedFrames[index]
            h5f["label"][index] = convertedLabels[index]

        h5f.close()
コード例 #36
0
ファイル: main_gui.py プロジェクト: nishimaomaoxiong/pyDEA
class MainFrame(Frame):
    ''' This class implements main GUI of the application.

        Attributes:
            parent (Tk object): parent of this frame (Tk()).
            params_frame (ParamsFrame): frame with parameters.
            data_frame (DataFrame): frame with data and solution.
            progress_bar (Progressbar): progress bar widget.
            increment (int): progress bar increment, it is modified
                in other classes that are responsible for solving
                the problem and update progress.
            weights_status_lbl (Label): label that displays if weight
                restrictions are feasible.
            weights_status_str (StringVar): StringVar object used for
                tracking if weight restrictions are feasible.
            current_categories (list of str): list of current categories.

        Args:
            parent (Tk object): parent of this frame (Tk()).
    '''
    def __init__(self, parent, *args, **kwargs):
        Frame.__init__(self, parent, *args, **kwargs)
        self.parent = parent
        self.params_frame = None
        self.data_frame = None
        self.progress_bar = None
        self.increment = 0
        self.weights_status_lbl = None
        self.weights_status_str = StringVar()
        self.weights_status_str.trace('w', self.on_weights_status_change)
        self.current_categories = []
        self.create_widgets()

    def create_widgets(self):
        ''' Creates all widgets that belong to this frame.
        '''
        self.parent.title('pyDEA')
        self.pack(fill=BOTH, expand=1)

        self.columnconfigure(0, weight=1, pad=5)
        self.columnconfigure(1, weight=0, pad=5)
        self.rowconfigure(0, pad=3, weight=1)
        self.rowconfigure(1, pad=3)
        self.rowconfigure(2, pad=3)
        self.rowconfigure(3, pad=3)

        self.current_categories = []
        data_from_params_file = StringVar()
        str_var_for_input_output_boxes = ObserverStringVar()
        self.params_frame = ParamsFrame(self, self.current_categories,
                                        data_from_params_file,
                                        str_var_for_input_output_boxes,
                                        self.weights_status_str)
        data_frame = DataFrame(self, self.params_frame, self.current_categories,
                               data_from_params_file,
                               str_var_for_input_output_boxes)
        self.data_frame = data_frame
        data_frame.grid(row=0, column=0, sticky=N+S+W+E, padx=15, pady=15)

        self.params_frame.grid(row=0, column=1, sticky=W+E+S+N, padx=15,
                               pady=15, columnspan=2)

        lbl_progress = Label(self, text='Progress')
        lbl_progress.grid(row=1, column=0, sticky=W, padx=10, pady=5)

        self.progress_bar = Progressbar(self, mode='determinate', maximum=100)
        self.progress_bar.grid(row=2, column=0, sticky=W+E, padx=10, pady=5)

        run_btn = Button(self, text='Run', command=self.run)
        run_btn.grid(row=2, column=1, sticky=W, padx=10, pady=10)

        self.weights_status_lbl = Label(self, text='', foreground='red')
        self.weights_status_lbl.grid(row=2, column=2, padx=10, pady=5, sticky=W)

    def on_weights_status_change(self, *args):
        ''' This method is called when weight restrictions status is changed.
        '''
        self.weights_status_lbl.config(text=self.weights_status_str.get())

    def run(self):
        ''' This method is called when the user presses Run button.
            Solves the problem and displays solution.
        '''
        clean_up_pickled_files()
        params = self.params_frame.params
        run_method = RunMethodGUI(self)
        run_method.run(params)

    def construct_categories(self):
        ''' Returns current categories.

            Returns:
                (list of str): list of current categories
        '''
        return [category.strip() for category in self.current_categories
                if category]

    def on_dmu_change(self, *args):
        ''' Updates progress bar.
        '''
        self.progress_bar.step(self.increment)
        self.progress_bar.update()
コード例 #37
0
class SolutionTabFrame(Frame):
    ''' This class is responsible for displaying solution on the screen.
        It extends Frame class.

        Attributes:
                parent (Tk object that can contain Frame): parent that can
                        contain Frame, MUST implement method
                        change_solution_tab_name(str).
                data_from_file_lbl (Label): label that contains file name
                    with data if specified.
                solution_tab (SolutionFrameWithText): notebook with tabs
                    describing solution.
                model_solutions (list of Solution): list with one or more
                    solutions that have been generated after running algorithm.
                param_strs (list of str): list with strings that should appear
                    before printing every solution from model_solutions.
                ranks (list of list of int): list of ranks corresponding to
                    every solution from model_solutions, ranks are generated
                    by peel-the-onion algorithm.
                categorical (str): name of the categorical variable used in
                    categorical analysis.
                progress_bar (Progressbar): progress bar to show how solution
                    is loaded or saved to file.
                status_lbl (Label): label for displaying solution status.
                solution_format_var (IntVar): IntVar object that tracks which
                    file format is chosen for solution.
    '''
    def __init__(self, parent, *args, **kw):
        super().__init__(parent, *args, **kw)
        self.parent = parent
        self.data_from_file_lbl = None
        self.solution_tab = None
        self.model_solutions = None
        self.param_strs = None
        self.ranks = None
        self.params = None
        self.categorical = None
        self.run_date = None
        self.total_seconds = 0
        self.progress_bar = None
        self.status_lbl = None
        self.solution_format_var = IntVar()
        self.create_widgets()

    def create_widgets(self):
        ''' Creates appropriate widgets on this frame.
        '''
        self.columnconfigure(0, weight=1)
        self.rowconfigure(3, weight=1)
        frame_for_save_btn = Frame(self)
        frame_for_save_btn.columnconfigure(1, weight=1)
        self.status_lbl = Label(frame_for_save_btn, text='')
        self.status_lbl.grid(row=0, column=1, sticky=N+W)
        save_solution_btn = Button(frame_for_save_btn, text='Save solution',
                                   command=self.on_save_solution)
        save_solution_btn.grid(row=1, column=0, sticky=W+N, padx=5, pady=5)
        self.progress_bar = Progressbar(frame_for_save_btn,
                                        mode='determinate', maximum=100)
        self.progress_bar.grid(row=1, column=1, sticky=W+E, padx=10, pady=5)

        frame_for_save_btn.grid(sticky=W+N+E+S, padx=5, pady=5)

        frame_for_btns = Frame(self)
        self._create_file_format_btn('*.xlsx', 1, frame_for_btns, 0)
        self._create_file_format_btn('*.xls', 2, frame_for_btns, 1)
        self._create_file_format_btn('*.csv', 3, frame_for_btns, 2)
        self.solution_format_var.set(1)

        frame_for_btns.grid(row=1, column=0, sticky=W+N+E+S, padx=5, pady=5)
        self.data_from_file_lbl = Label(self, text=TEXT_FOR_FILE_LBL, anchor=W,
                                        justify=LEFT,
                                        wraplength=MAX_FILE_PARAMS_LBL_LENGTH)
        self.data_from_file_lbl.grid(row=2, column=0, padx=5, pady=5,
                                     sticky=W+N)

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

    def _create_file_format_btn(self, btn_text, var_value, parent, column):
        ''' Creates and grids Radiobutton used for choosing solution file
            format.

            Args:
                btn_text (str): text displayed next to the Radiobutton.
                var_value (int): value of the IntVar associated with this
                    Radiobutton.
                parent (Tk object): parent of this Radiobutton.
                column (int): column index where this Radiobutton
                    should be gridded.
        '''
        sol_format_btn = Radiobutton(parent, text=btn_text,
                                     variable=self.solution_format_var,
                                     value=var_value)
        sol_format_btn.grid(row=2, column=column, sticky=W+N, padx=2)

    def on_save_solution(self):
        ''' Saves solution to file.

            This method is called when save solution button is pressed.
            If there is a solution, this method will ask user to provide
            a file name where solution should be stored. If a valid name
            is provided,
            solution is saved to that file. Allowed file formats are:
            .xls and .xlsx.
            Default file extension is .xlsx.

            If the user checked 'csv' as solution output format, then
            the user will be asked to choose a directory where all csv files
            will be written.
        '''
        if self.model_solutions is not None:
            assert(self.param_strs is not None)
            if (self.solution_format_var.get() == 1 or
                    self.solution_format_var.get() == 2):
                file_name = self.ask_file_name_to_save(
                    self.solution_format_var.get())
                dir_name = ''
            else:
                dir_name = askdirectory()
                file_name = ''
            if file_name or dir_name:
                print(file_name)
                self.status_lbl.config(text='Saving solution to file...')
                if file_name.endswith('.xls'):
                    work_book = xlwt.Workbook()
                elif file_name.endswith('.xlsx'):
                    work_book = XlsxWorkbook()
                else:
                    # all not supported formats will be written to csv
                    assert(dir_name)
                    work_book = TxtWriter(dir_name)
                writer = XLSWriter(self.params, work_book, self.run_date,
                                   self.total_seconds,
                                   ranks=self.ranks,
                                   categorical=self.categorical)
                nb_models = len(self.model_solutions)
                # +1 for parameters sheet, it is stored separately
                nb_sheets = len(writer.worksheets) + 1
                progress_recorder = GuiProgress(self.progress_bar, nb_models,
                                                nb_sheets)

                try:
                    for count, sol in enumerate(self.model_solutions):
                        writer.write_data(sol, self.param_strs[count],
                                          progress_recorder)
                    work_book.save(file_name)
                except ValueError:
                    # can happen if maximum number of rows is exceeded
                    self.status_lbl.config(
                        text='File is too large for xls format,'
                        ' it will be saved to csv instead')
                    work_book = TxtWriter(os.path.splitext(file_name)[0])
                    writer = XLSWriter(self.params, work_book, self.run_date,
                                       self.total_seconds,
                                       ranks=self.ranks,
                                       categorical=self.categorical)
                    progress_recorder.set_position(0)
                    for count, sol in enumerate(self.model_solutions):
                        writer.write_data(sol, self.param_strs[count],
                                          progress_recorder)
                    work_book.save(file_name)
                progress_recorder.set_position(100)
                self.parent.change_solution_tab_name('Solution')
                self.status_lbl.config(text='Solution saved')

    def ask_file_name_to_save(self, ext_code):
        ''' Calls asksaveasfilename dialogue to ask the user where file
            should be saved.
            If file without extension is entered, default extension
            will be used (.xlsx).
            This method is used to mock this object for unit tests.

            Args:
                ext_code (int): code for file extension 1 - xlsx, 2 - xls.
        '''
        if ext_code == 1:
            filetype = SOLUTION_XLSX_FILE
        else:
            filetype = SOLUTION_XLS_FILE
        return asksaveasfilename(filetypes=filetype, defaultextension='xlsx')

    def show_solution(self, solutions, params, param_strs, run_date,
                      total_seconds, ranks=None, categorical=None):
        ''' Displays solution on the screen.

            Args:
                solutions (list of Solution): list of solutions (might
                    contain just one solution)
                    that have been generated after running algorithm.
                params (Parameters): object with parameters that will
                    be written to file on the Parameters page.
                param_strs (list of str): list with strings that
                    should appear before
                    printing every solution from model_solutions.
                ranks (list of list of int): list of ranks corresponding
                    to every solution from model_solutions, ranks are
                    generated by peel-the-onion algorithm.
                categorical (str): name of the categorical variable used
                    in categorical analysis.
        '''
        self.status_lbl.config(text='')
        self.model_solutions = solutions
        self.param_strs = param_strs
        self.ranks = ranks
        self.params = params
        self.categorical = categorical
        self.run_date = run_date
        self.total_seconds = total_seconds
        self.status_lbl.config(text='Loading solution...')
        self.solution_tab.show_solution(solutions, params, param_strs, run_date,
                                        total_seconds, ranks, categorical)
        self.parent.change_solution_tab_name('Solution*')
        self.status_lbl.config(text='Solution loaded')

    def update_data_file_name(self, new_data_file_name):
        ''' Updates label with data file name.

            Args:
                new_data_file_name (str): new value of the data file name
        '''
        self.data_from_file_lbl.config(text=TEXT_FOR_FILE_LBL
                                       + new_data_file_name)
コード例 #38
0
class qbtConvertor(Tk):
    """ GUI Application for migration from uTorrent to qBittorrent """
    def __init__(self):
        Tk.__init__(self)
        self.title("uT to qBt convertor")

        #main frame
        self.main_frame = Frame(self, padding="3 3 12 12")
        self.main_frame.grid(column=0, row=0, sticky=(N, W, E, S))
        self.main_frame.columnconfigure(0, weight=1)
        self.main_frame.rowconfigure(0, weight=1)

        #uT part
        self.ut_data = StringVar()
        self.ut_label = Label(self.main_frame, text="uT data")
        self.ut_label.grid(column=0, row=1, sticky=(W))
        self.ut_entry = Entry(self.main_frame, width=100, textvariable=self.ut_data)
        self.ut_entry.grid(column=1, row=1, sticky=(W))
        self.ut_button = Button(self.main_frame, text="Browse", command=self.load_file)
        self.ut_button.grid(column=2, row=1)

        #qBt part
        self.qbt_folder = StringVar()
        self.qbt_label = Label(self.main_frame, text="qBt folder")
        self.qbt_label.grid(column=0, row=4, sticky=(W))
        self.qbt_entry = Entry(self.main_frame, width=100, textvariable=self.qbt_folder)
        self.qbt_entry.grid(column=1, row=4, sticky=(W))
        self.qbt_button = Button(self.main_frame, text="Browse", command=self.open_dir)
        self.qbt_button.grid(column=2, row=4, sticky=(W, E))


        #convertor
        self.convertor_button = Button(self.main_frame, text="Convert", command=self.convert,
                                       width=50)
        self.convertor_button.grid(column=1, columnspan=2, row=5)

        self.progress_bar = Progressbar(self.main_frame, orient=HORIZONTAL, length=300, mode="indeterminate")
        self.progress_bar.grid(column=1, columnspan=3, row=6)

        #set padding for each element
        for child in self.main_frame.winfo_children():
            child.grid_configure(padx=5, pady=5)

    def convert(self):
        message = messagebox
        if not self.qbt_folder.get() or not self.ut_data.get():
            message.showerror("ERROR", "Specify paths!")
            return
        self.progress_bar.start()
        convertor(self.ut_data.get(), self.qbt_folder.get())
        self.progress_bar.stop()

    def load_file(self):
        file_name = filedialog.askopenfilename(filetypes=(("UT resume file", "*.dat"),
                                                          ("All", "*")))
        if file_name:
            self.ut_data.set(file_name)

    def open_dir(self):
        dir_name = filedialog.askdirectory()

        if dir_name:
            self.qbt_folder.set(dir_name)
コード例 #39
0
ファイル: lautaloader103.py プロジェクト: lautaloader/lloader
class Main:
    def __init__(self, master):  # we will define everything in the UI below
        logger.info("Program start")
        self.master = master
        self.master.wm_title("Lautaloader v.1.03")  # title of window
        self.master.resizable(width=FALSE, height=FALSE)  # window is not resizable
        self.master.geometry('420x240')  # resolution of the window in pixels
        self.master.grid_propagate(False)  # window will not resize in any case

        self.r_selection = IntVar()  # these are radiobuttons and checkbuttons
        self.c1_selection = IntVar()
        self.c2_selection = IntVar()
        self.c1_selection.set(0)  # checkbuttons will be off at launch
        self.c2_selection.set(0)
        self.r_selection.set(1)  # we need one radiobutton selected at start

        self.status_text = StringVar()  # status text is visible at the bottom of GUI
        self.status_text.set('Ready to work')  # we can (and will) set the status text like this
        self.save_folder = ''  # we will save into this folder
        self.filenames = []  # this is our folder filenames list
        self.url_text = StringVar()
        self.num_pics = 0
        self.num_mp4 = 0
        self.num_mp3 = 0
        self.image_url = ''
        self.name_of_file = ''
        self.res = ''
        self.imagefile = ''
        self.filesize = ''
        self.imagewritten = False
        self.read_timeout = 1.0
        self.headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) '
            'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36',
            'Upgrade-Insecure-Requests': '1',
            'Referer': '',
            'DNT': '1',
            'Accept-Language': 'fi-FI,fi;q=0.8,en-US;q=0.6,en;q=0.4',
            'Accept-Encoding': 'gzip, deflate, sdch',
            'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'
        }  # need to send some headers or server refuses connection

        self.lf = LabelFrame(master, text=' Get ')
        self.lf.grid(row=1, column=1, rowspan=4)

        self.lf2 = LabelFrame(master, text=' Options ')
        self.lf2.grid(row=1, column=2)

        self.R1 = Radiobutton(self.lf, text="All", variable=self.r_selection, value=1)
        self.R1.grid(row=1, column=1, sticky=W)

        self.R2 = Radiobutton(self.lf, text="only img", variable=self.r_selection, value=2)
        self.R2.grid(row=2, column=1, sticky=W)

        self.R3 = Radiobutton(self.lf, text="only mp4", variable=self.r_selection, value=3)
        self.R3.grid(row=3, column=1, sticky=W)

        self.R4 = Radiobutton(self.lf, text="only mp3", variable=self.r_selection, value=4)
        self.R4.grid(row=4, column=1, sticky=W)

        self.C1 = Checkbutton(self.lf2, text="Create new filenames", variable=self.c1_selection,
                              state=NORMAL, onvalue=1, offvalue=0)
        self.C1.grid(row=1, column=2, sticky=W)

        self.C2 = Checkbutton(self.lf2, text="Overwrite if found", variable=self.c2_selection,
                              state=NORMAL, onvalue=1, offvalue=0)
        self.C2.grid(row=2, column=2, sticky=W)

        self.folder_label = Label(master, text="Folder: ")
        self.folder_label.grid(row=5, sticky=E)

        self.url_label = Label(root, text="URL: ")
        self.url_label.grid(row=6, sticky=E)

        self.folder_entry = Entry(master, textvariable=self.save_folder, state="readonly", width=50)
        self.folder_entry.grid(row=5, column=1, columnspan=2)

        self.url_entry = Entry(master, textvariable=self.url_text, width=50)
        self.url_entry.grid(row=6, column=1, columnspan=2)

        self.selectbutton = Button(master, text="Select..", state=NORMAL, command=self.get_folder)
        self.selectbutton.grid(row=5, column=3, sticky=W)

        self.openfolderbutton = Button(master, text="Open folder", state=DISABLED, command=self.openfolder)
        self.openfolderbutton.grid(row=3, column=2, sticky=W, padx=22)

        self.urlbutton = Button(master, text="Download", state=DISABLED, command=self.logic)
        self.urlbutton.grid(row=6, column=3, sticky=W)

        self.status = Label(master, textvariable=self.status_text, wraplength=300)
        self.status.grid(row=9, columnspan=4, sticky=W)

        self.progressbar = Progressbar(master, orient="horizontal", length=100, mode="determinate")
        self.progressbar.grid(row=8, sticky='we', columnspan=3, pady=3)

        self.manage_config()  # process through config file

        self.url_1 = config.get('basic_config', 'url_1')
        logging.debug("url_1 set to %s" % self.url_1)
        self.url_2 = config.get('basic_config', 'url_2')
        logging.debug("url_2 set to %s" % self.url_2)

        if self.save_folder != '':  # if save folder is not empty, we probably have a valid folder
            self.urlbutton['state'] = 'normal'   # so we can enable urlbutton already
            self.openfolderbutton['state'] = 'normal'  # and we can also enable open folder button

    def manage_config(self):
        if not os.path.isfile(os.path.expanduser("~\\documents\\lloader_cfg.ini")):
            with open((os.path.expanduser("~\\documents\\lloader_cfg.ini")), 'w') as cfgfile:
                config.add_section('basic_config')  # cfg file not exists so we make it
                config.set('basic_config', 'save_folder', self.save_folder)
                config.set('basic_config', 'html_tag1', ".filecontainer figcaption a")
                config.set('basic_config', 'html_tag2', ".filecontainer .file a")
                config.set('basic_config', 'url_1', "ylilauta.org")
                config.set('basic_config', 'url_2', "www.ylilauta.org")
                # .filecontainer .file a = ALL images (np included) but not mp4
                # .filecontainer figcaption a = not np images, but all uploaded images & mp4
                config.write(cfgfile)
                logger.debug("Created a config file")
        else:
            try:
                config.read(os.path.expanduser('~\\documents\\lloader_cfg.ini'))
                self.folder_entry['state'] = 'normal'  # make the folder field writable
                self.folder_entry.delete(0, END)
                self.save_folder = config.get('basic_config', 'save_folder')  # get save folder from file
                self.folder_entry.insert(0, self.save_folder)  # write to folder field
                self.folder_entry['state'] = 'readonly'  # make it read-only again
                logger.debug("Read from config")

            except (IOError, OSError):
                logger.exception("Config error")
            except (configparser.MissingSectionHeaderError, configparser.NoSectionError):  # correct section not found from file
                os.remove(os.path.expanduser("~\\documents\\lloader_cfg.ini"))
                self.manage_config()  # delete file and try to create it from start

    def get_folder(self):
        dir_opt = options = {}  # define options for get folder function
        options['initialdir'] = self.save_folder
        options['mustexist'] = False
        options['parent'] = self.master
        options['title'] = 'Choose a directory'

        self.save_folder = filedialog.askdirectory(**dir_opt)  # actual function to get the folder name

        with open((os.path.expanduser("~\\documents\\lloader_cfg.ini")), 'w') as cfgfile:
            config.set('basic_config', 'save_folder', self.save_folder)
            config.write(cfgfile)  # write new save folder to config file

        self.folder_entry['state'] = 'normal'  # make the folder field writable
        self.folder_entry.delete(0, END)
        self.folder_entry.insert(0, self.save_folder)  # update folder field
        self.folder_entry['state'] = 'readonly'  # make it read-only again

        self.clear_savefolder_list()

        self.openfolderbutton['state'] = 'normal'  # we can now press the open folder and url buttons
        self.urlbutton['state'] = 'normal'  # because we have defined a save folder

    def openfolder(self):
        os.startfile(self.save_folder)  # opens the save folder

    def clear_savefolder_list(self):
        del self.filenames[:]  # clears the list of files in a folder
        self.filenames.append(next(os.walk(self.save_folder))[2])  # adds every file in folder to list

    def check_for_url(self):
        parse = urlparse(self.url_texti.lower())  # checks if url is ylilauta
        logging.debug("url started with %s" % parse.netloc)
        if (parse.netloc.startswith(self.url_1) or
                parse.netloc.startswith(self.url_2)):
            return True
        else:
            return False

    def is_image(self):
        if (self.image_url.lower().endswith(".jpg") or
                self.image_url.lower().endswith(".jpeg") or
                self.image_url.lower().endswith(".png")):  # link seems to be image
            return True
        else:
            return False

    def is_mp4(self):
        if self.image_url.lower().endswith(".mp4"):  # link ends in mp4 so its mp4
            return True
        else:
            return False

    def is_mp3(self):
        if self.image_url.lower().endswith(".mp3"):  # link ends in mp3 so its mp3
            return True
        else:
            return False

    def we_want_it_anyway(self):
        if self.c2_selection.get() == 1:  # checkbutton2 is selected so we want all files
            return True
        else:
            return False

    def getting_both(self):
        if self.r_selection.get() == 1:  # first radio button is selected so dl both
            return True
        else:
            return False

    def getting_img(self):
        if self.r_selection.get() == 2:  # second radio button is selected so dl images only
            return True
        else:
            return False

    def getting_mp4(self):
        if self.r_selection.get() == 3:  # third radio button is selected so dl mp4 only
            return True
        else:
            return False

    def getting_mp3(self):
        if self.r_selection.get() == 4:  # fourth radio button is selected so we get mp3 only
            return True
        else:
            return False

    def rename_file(self):
        get_filetype = os.path.splitext(os.path.basename(self.image_url))[1]  # get filetype
        new_file_name_start = ''

        for i in range(0, 15):
            new_file_name_start += str(random.randint(0, 9))  # create random string of numbers

        self.name_of_file = (new_file_name_start + get_filetype)  # create the whole new name

    def write_file(self):
        self.status_text.set('Downloading %s' % self.name_of_file)
        logger.info('Downloading %s' % self.name_of_file)
        self.master.update()
        self.res = requests.get(self.image_url)
        self.res.raise_for_status()
        try:
            with open(os.path.join(self.save_folder,
                                   self.name_of_file), 'wb') as self.imagefile:
                for chunk in self.res.iter_content(100000):
                    self.imagefile.write(chunk)
            self.imagewritten = True
        except IOError:
            logger.exception("Exception with file write")
            self.status_text.set('File error')
            self.master.update()



    def file_get_logic(self):
        self.clear_savefolder_list()  # need to update this list between files
        self.imagewritten = False  # need to change this here because if same thread has same pictures
        if self.c1_selection.get() == 1:  # if want new random name
                self.rename_file()
        else:
            self.name_of_file = os.path.basename(self.image_url)  # using default filename

        if self.name_of_file in self.filenames[0]:  # file exists
            if self.c2_selection.get() == 1:  # we want to overwrite
                self.write_file()
            else:
                pass

        elif self.name_of_file not in self.filenames[0]:  # file does not exist in folder
            self.write_file()  # so we take it in

        self.master.update()

    def connect_logic(self):
        try:
            self.res = requests.get(self.url_texti, headers=self.headers,
                                    timeout=(10.0, self.read_timeout))
            self.res.raise_for_status()
        except (requests.exceptions.ReadTimeout, requests.exceptions.HTTPError):
            logger.exception("Connection exception")
            self.status_text.set("Network error %s" % self.res.status_code)
            self.master.update()

    def logic(self):
        self.clear_savefolder_list()
        self.num_pics = 0  # make these 0 because we just called the function
        self.num_mp4 = 0
        self.num_mp3 = 0
        self.imagewritten = False
        self.url_texti = ''
        self.progressbar["value"] = 0
        done = False

        if self.url_text != '':
            self.url_texti = (self.url_text.get())  # if url text is not empty we will set it to variable

        if not self.url_text or self.check_for_url() is False:  # if url is wrong or empty
            self.status_text.set('URL not supported')
            logger.debug("URL is false: %s" % self.url_texti)

        while not done and self.check_for_url() is True:
            self.urlbutton['state'] = 'disabled'  # disable buttons so they cant be pressed while run
            self.selectbutton['state'] = 'disabled'  # we will enable them again in the end
            self.R1['state'] = 'disabled'
            self.R2['state'] = 'disabled'
            self.R3['state'] = 'disabled'
            self.R4['state'] = 'disabled'
            self.C1['state'] = 'disabled'
            self.C2['state'] = 'disabled'
            self.url_entry['state'] = 'readonly'

            self.status_text.set(("Getting from %s" % self.url_texti))
            self.progressbar['value'] = 0
            self.master.update()

            self.connect_logic()

            soup = bs4.BeautifulSoup(self.res.text, 'html.parser')  # create soup
            total_stuff = 0
            html_tag1 = config.get('basic_config', 'html_tag1')  # we will fetch from these tags
            html_tag2 = config.get('basic_config', 'html_tag2')

            list_of_links = []

            for imglink in soup.select(html_tag1):  # grab items from tags and put them to list
                if imglink.get('href') not in list_of_links:
                    list_of_links.append(str(imglink.get('href')))

            for imglink in soup.select(html_tag2):
                if imglink.get('href') not in list_of_links:
                    list_of_links.append(str(imglink.get('href')))

            try:
                list_of_links = [x for x in list_of_links if x != "None"]  # clear "none"s from list

            except ValueError:  # there is no "none" in list
                pass

            total_stuff = len(list_of_links)  # variable helps with progressbar
            logger.debug("total stuff is: %s" % total_stuff)

            for link in list_of_links:  # iterate through list of links
                link = 'http:' + link  # make item a valid link
                self.image_url = link  # file get logic still uses global variable lol
                if (link.lower().endswith('.jpg') or
                    link.lower().endswith('png') or
                        link.lower().endswith('jpeg')):  # we have an image
                    if self.getting_both() or self.getting_img():  # we want an image
                        self.file_get_logic()  # we get an image
                        if self.imagewritten:  # logic is complete and image is written
                            self.num_pics += 1
                if link.lower().endswith('.mp4'):  # same as above but with mp4
                    if self.getting_both() or self.getting_mp4():
                        self.file_get_logic()
                        if self.imagewritten:
                            self.num_mp4 += 1
                if link.lower().endswith('.mp3'):
                    if self.getting_both() or self.getting_mp3():
                        self.file_get_logic()
                        if self.imagewritten:
                            self.num_mp3 += 1

                self.progressbar['value'] += 100 / total_stuff  # progressbar fills

            self.status_text.set('Downloaded %s images, %s mp4, %s mp3.' % (self.num_pics,
                                                                            self.num_mp4,
                                                                            self.num_mp3))
            self.urlbutton['state'] = 'normal'
            self.url_entry['state'] = 'normal'
            self.selectbutton['state'] = 'normal'
            self.R1['state'] = 'normal'
            self.R2['state'] = 'normal'
            self.R3['state'] = 'normal'
            self.R4['state'] = 'normal'
            self.C1['state'] = 'normal'
            self.C2['state'] = 'normal'  # we have enabled all buttons to be used again
            logger.info("Done.")

            break

        logging.shutdown()
コード例 #40
0
ファイル: 1_calculating_pi.py プロジェクト: chengyi818/kata
class Example(Frame):
    def __init__(self, parent, q):
        Frame.__init__(self, parent)
        self.queue = q
        self.parent = parent
        self.initUI()

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

        self.grid_columnconfigure(4, weight=1)
        self.grid_rowconfigure(3, weight=1)

        lbl1 = Label(self, text="Digits:")
        lbl1.grid(row=0, column=0, sticky=E, padx=10, pady=10)

        self.ent1 = Entry(self, width=10)
        self.ent1.insert(END, "4000")
        self.ent1.grid(row=0, column=1, sticky=W)

        lbl2 = Label(self, text="Accuracy:")
        lbl2.grid(row=0, column=2, sticky=E, padx=10, pady=10)

        self.ent2 = Entry(self, width=10)
        self.ent2.insert(END, "100")
        self.ent2.grid(row=0, column=3, sticky=W)

        self.startBtn = Button(self, text="Start",
                               command=self.onStart)
        self.startBtn.grid(row=1, column=0, padx=10, pady=5, sticky=W)

        self.pbar = Progressbar(self, mode='indeterminate')
        self.pbar.grid(row=1, column=1, columnspan=3, sticky=W+E)

        self.txt = scrolledtext.ScrolledText(self)
        self.txt.grid(row=2, column=0, rowspan=4, padx=10, pady=5,
                      columnspan=5, sticky=E+W+S+N)

    def onStart(self):
        self.startBtn.config(state=DISABLED)
        self.txt.delete("1.0", END)

        self.digits = int(self.ent1.get())
        self.accuracy = int(self.ent2.get())

        self.p1 = Process(target=self.generatePi, args=(self.queue,))
        self.p1.start()
        self.pbar.start(DELAY2)
        self.after(DELAY1, self.onGetValue)

    def onGetValue(self):
        if (self.p1.is_alive()):
            self.after(DELAY1, self.onGetValue)
            return
        else:
            try:
                self.txt.insert('end', self.queue.get(0))
                self.txt.insert('end', "\n")
                self.pbar.stop()
                self.startBtn.config(state=NORMAL)
            except queue.Empty:
                print("queue is empty")

    def generatePi(self, queue):
        getcontext().prec = self.digits
        time.sleep(10)

        pi = Decimal(0)
        k = 0
        n = self.accuracy

        while k < n:
            pi += (Decimal(1)/(16**k))*((Decimal(4)/(8*k+1)) -
                                        (Decimal(2)/(8*k+4)) -
                                        (Decimal(1)/(8*k+5)) -
                                        (Decimal(1)/(8*k+6)))
            k += 1
            print(self.p1.is_alive())

        queue.put(pi)
        print("end")