Skip to content
Extraits de code Groupes Projets
Valider e35711fb rédigé par Loïc DUBARD's avatar Loïc DUBARD :speech_balloon:
Parcourir les fichiers

Upload the python script

parent 6d92129e
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Pipeline #1244 annulé
#!/usr/bin/python
from tkinter import *
import tkinter.ttk as ttk
import time
import string
from tkinter import messagebox
import sys
cle1=1
cle2=0
def pgcd(nombre1, nombre2):
"""dkfjbg"""
reste = nombre1 % nombre2
while reste != 0:
nombre1 = nombre2
nombre2 = reste
reste = nombre1 % nombre2
return nombre2
def lololol (choix,cle1,cle2,mot):
letters=string.ascii_letters + string.punctuation + string.digits
resultat=""
choix=int(choix)
cle1=int(cle1)
cle2=int(cle2)
mot=str(mot)
if choix==1:
for letter in mot:
if letter==" ":
resultat+=" "
else:
try:
x=(letters.index(letter)*cle1)+cle2
#print ("x="+str(x))
x=x%94
#print "x="+str(x)
resultat+=letters[x]
except:
pass
#print (resultat)
if choix==2:
#trouver le coef de decodage
coef=0
while (coef*cle1)%94!=1:
coef+=1
for letter in mot:
if letter==" ":
resultat+=" "
else:
try:
x=coef*(letters.index(letter)-cle2)
#print "x="+str(x)
x=x%94
#print "x=",str(x)
resultat+=letters[x]
except:
pass
return resultat
def cle_click():
def quitter_fenetre2():
global cle1
global cle2
cle1=int(entrycle1.get())
cle2=int(entrycle2.get())
if cle1<=0 or cle1>94:
messagebox.showerror("erreur cle 1","Veuillez mettre un nombre strictement positif et strictement inferieur a 94")
elif type(cle1)!=type(2):
messagebox.showerror("erreur cle 1","Veuillez utiliser un nombre pour la cle 1 !")
elif type(cle2)!=type(2):
messagebox.showerror("erreur cle 2","Veuillez utiliser un nombre pour la cle 2 !")
elif pgcd(cle1,94)!=1:
messagebox.showerror("erreur cle 1","Veuillez utiliser un nombre premier avec 94 pour la cle 1")
elif cle2>94 or cle2<0:
messagebox.showerror("Erreur cle 2","Veuillez mettre un nombre strictement compris entre 0 et 94")
else:
fenetre2.destroy()
global cle1
global cle2
fenetre2=Tk()
fenetre2.title("modifier la cle")
fenetre2.resizable(False,False)
quitterbouton=Button(fenetre2,text="OK",command=quitter_fenetre2).pack(side=BOTTOM)
labelcle=Label(fenetre2,text="entrer les 2 cles").pack()
entrycle1=Entry(fenetre2,width=5)
entrycle1.pack(side=LEFT)
entrycle2=Entry(fenetre2,width=5)
entrycle2.pack(side=LEFT)
entrycle1.insert(0,cle1)
entrycle2.insert(0,cle2)
def process_click():
lol=0
progress.start()
label3.config(state=NORMAL)
label3.delete("1.0",END)
#print (str(entry.get("1.0",END)))
#print ("choix="+str(choix.get()))
label3.insert(END,lololol(choix.get(),cle1,cle2,entry.get("1.0",END)))
label3.config(state=DISABLED)
#print (progressvar.get())
#"""
while lol<95:
time.sleep(.003)
progress.step("1")
lol+=1
progress.update_idletasks()
#"""
progress.stop()
progressvar.set(0)
def StatusBarUpdate():
if int(choix.get())==1:
statusvar.set("Ready to encode.")
elif int(choix.get())==2:
statusvar.set("Ready to decode.")
else:
statusvar.set("Preparing to do nothing...")
def StatusBarUpdatehelp(event=None):
if fenetre1.call(event.widget, "index", "active") == 0:
statusvar.set("About This Application")
elif fenetre1.call(event.widget, "index", "active") == 1:
statusvar.set("How to use this application")
else:
StatusBarUpdate()
def paste_menu(event=None):
text1=fenetre1.selection_get(selection="CLIPBOARD")
entry.delete("1.0",END)
entry.insert(END,text1)
def copy_menu(event=None):
fenetre1.clipboard_clear()
text1=label3.get("1.0",END)
fenetre1.clipboard_append(text1)
def onAbout():
messagebox.showinfo("A propos :","Par Dudard Loic, libre de droit")
def onHelp(event=None):
messagebox.showinfo("Aide:","comment utiliser le logiciel ? -Si vous voulez copier le contenu du resultat,vous devez faire Ctrl+c directement sans avoir a selectionner le texte.")
def quitter_fenetre1(event=None):
var=messagebox.askokcancel("Quitter ?","Voulez vous vraiment quitter ?")
#print var
if var==True:
fenetre1.destroy()
#definition de la fenetre principale
fenetre1=Tk()
fenetre1.title("Encoder v1.0")
fenetre1["bg"]="green"
#menu
menu=Menu(fenetre1)
fenetre1.config(menu=menu)
filemenu=Menu(menu,tearoff=0)
menu.add_cascade(label="File",menu=filemenu)
filemenu.add_command(label="Exit",command=quitter_fenetre1,accelerator="Ctrl+q")
fenetre1.bind_all("<Control-q>",quitter_fenetre1)
edit=Menu(menu,tearoff=0)
menu.add_cascade(label="Edit",menu=edit)
edit.add_command(label="copy (result)",command=copy_menu,accelerator="Ctrl+c")
edit.add_command(label="paste (in entrybox)",command=paste_menu,accelerator="Ctrl+v")
fenetre1.bind_all("<Control-c>",copy_menu)
fenetre1.bind_all("<Control-v>",paste_menu)
helpmenu=Menu(menu,tearoff=0)
menu.add_cascade(label="Help",menu=helpmenu)
helpmenu.add_command(label="About",command=onAbout)
helpmenu.add_command(label="Help",command=onHelp,accelerator="F11")
helpmenu.bind("<<MenuSelect>>",StatusBarUpdatehelp)
fenetre1.bind_all("<F11>",onHelp)
#status bar
statusvar=StringVar()
status=Label(fenetre1,text="Preparing to do nothing...",bd=1,relief=SUNKEN,anchor=W,textvariable=statusvar)
status.pack(side=BOTTOM,fill=X)
statusvar.set("Preparing to do nothing...")
#frames
cadre1=Frame(fenetre1,borderwidth=2,relief=GROOVE)
cadre1.pack(padx=10,pady=10)
cadre2=Frame(cadre1,relief=GROOVE)
cadre2.pack(side=LEFT,padx=10,pady=10)
cadre3=Frame(cadre1,relief=GROOVE)
cadre3.pack(side=LEFT,padx=20)
#widgets cadre2
label1=Label(cadre2,text="entrez texte :").pack()
entry=Text(cadre2,height=10,width=30)
entry.pack()
label2=Label(cadre2,text="resultat :").pack(pady=20)
label3=Text(cadre2,height=10,bg="white",width=30,state=DISABLED)
label3.pack(pady=5)
#widgets cadre3
cle=Button(cadre3,text="modifier la cle",command=cle_click).pack(pady=20)
choix=IntVar()
choix1=Radiobutton(cadre3,text="Crypter",variable=choix,value=1,command=StatusBarUpdate)
choix1.pack()
choix2=Radiobutton(cadre3,text="Decrypter",variable=choix,value=2,command=StatusBarUpdate)
choix2.pack()
process=Button(cadre3,text="process",command=process_click).pack(pady=30)
progressvar=IntVar()
progress=ttk.Progressbar(cadre3,mode="determinate",variable=progressvar,length=200)
progress.pack()
#gestion du redimensionnement
fenetre1.resizable(False,False)
#loop obligatoire
fenetre1.mainloop()
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter