[Débutant] éviter les variables globales
Bonjour,
J'ai fait une petite interface avec tkinter qui permet d'envoyer des commandes à ffmpeg afin de réencoder des fichiers.
Ce programme marche, mais j'ai utiliser des variables globales partout, suite à une vielle habitude de la programmation sous qbasic.
Je tente maintenant d'avoir une ré-écriture complète et plus "pythonesque", sauf que je bute sur la récupération du contenu des fonctions master et srt (les srt sont des fichiers sous titres).
Je cherche à afficher leur valeur dans la fonction encodage.
Voilà le code, en version allégé :
Code:
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
| def master():
master_file = askopenfilename()
return master_file
def srt():
srt_file = askopenfilename(filetypes = [("srt","*.srt")])
return srt_file
def encodage(master_file, srt_file):
print (master_file)
print (srt_file)
#------ Programme principal -------
# Création du widget principal ("maître") :
fenetre = Tk()
fenetre.title('Incrustation')
fenetre.geometry("300x200")
# création des boutons :
bou1 = Button(fenetre,text='fichier master',command=master)
bou2 = Button(fenetre,text='fichier srt',command=srt)
bou3 = Button(fenetre,text='encoder',command=lambda:encodage(master_file,srt_file))
bou4 = Button(fenetre,text='Quitter',command=fenetre.quit)
bou1.grid(row =1, column =1, padx=100,pady=5)
bou2.grid(row =2, column =1, padx=100,pady=5)
bou3.grid(row =3, column =1, padx=100,pady=5)
bou4.grid(row =4, column =1, padx=100,pady=5)
fenetre.mainloop() # démarrage du réceptionnaire d'événements
fenetre.quit() # destruction (fermeture) de la fenêtre |
J'ai utiliser "command=lambda:encodage(master_file,srt_file)" car après une recherche j'ai vu que "command" ne pouvais pas prendre de paramètre, mais même avec cela je ne vois pas comment envoyer les paramètres de master et srt dans encodage.
Bien sur avec 2 variable globale, ça devrais aller.
Sauriez-vous comment faire ? Merci à vous !