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)
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)
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
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
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)
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)
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)
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
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
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()
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)
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()
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)
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()
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)
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
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))
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)
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)
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)
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
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()
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)
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)
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)
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)
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()
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
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)
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()
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!")
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)
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)
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.
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()
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()
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)
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)
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()
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")