1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
|
from tkinter import *
from tkinter import ttk
from tkinter import filedialog
import os
import boto3
import threading
from threading import Thread
import time
root = Tk()
root.geometry("1000x400")
dict_value = {'chemin': 'filename','percentage': 0}
pb_var = IntVar(value=0)
def update(callback,avancement):
value = 0
while value < 100:
callback(value)
value += avancement
time.sleep(0.1)
def choix_file():
chemin = filedialog.askopenfilename(initialdir='C:/Users/caudo/Videos/', title="Select File",
filetypes=[("All files", "*")], typevariable=StringVar)
labels_chf.configure(text=f'Fichier a traiter : {chemin}')
dict_value['chemin'] = (chemin)
def upload():
def update_progress(percentage):
my_progress['value'] = percentage
s3 = boto3.client(
service_name='s3',
aws_access_key_id='AKIAYZGTB4U45F25VHP3',
aws_secret_access_key='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',
)
class ProgressPercentage(object):
def __init__(self, filename):
self._filename = filename
self._size = float(os.path.getsize(filename))
self._seen_so_far = 0
self._lock = threading.Lock()
def __call__(self, bytes_amount):
# To simplify, assume this is hooked up to a single filename
with self._lock:
self._seen_so_far += bytes_amount
percentage = (self._seen_so_far / self._size) * 100
dict_value['percentage']= (percentage)
#sys.stdout.write(
# "\r%s %s / %s (%.2f%%)" % (
# self._filename, self._seen_so_far, self._size,
# percentage))
#sys.stdout.flush()
def do_start():
def do_it(root, variable,avancement):
def inner(value):
root.after_idle(variable.set, value+avancement)
return inner
z = Thread(target=update, args=(do_it(root, pb_var,dict_value['percentage']), dict_value['percentage']))
z.daemon=True
z.start()
do_start()
new_filename = chemin = os.path.basename(dict_value['chemin'])
s3.upload_file(
dict_value['chemin'], 'testbein', f'video/{new_filename}',
Callback=ProgressPercentage(dict_value['chemin'])
)
# Thread
# Boutton
b_file = ttk.Button(root, text="Choose file", command=choix_file)
b_file.place(x=450, y=10)
b_upload = ttk.Button(root, text="Upload file", command=upload)
b_upload.place(x=450, y=200)
# Label
labels_chf = Label(root, bd=3, text='Fichier a traiter : ', font='Arial 12 bold') # -> Texte + Police
labels_chf.place(x=200, y=50) # -> Position label
label_percent = Text(root, width=30, height=3, background='red')
label_percent.place(x=200, y=190)
my_progress = ttk.Progressbar(root, orient=HORIZONTAL, length=300, mode="determinate")
my_progress.place(x=330, y=150)
root.mainloop() |
Partager