Baldo35
Messages postés13Date d'inscriptionlundi 31 août 2020StatutMembreDernière intervention18 septembre 2020
-
5 sept. 2020 à 12:05
Baldo35
Messages postés13Date d'inscriptionlundi 31 août 2020StatutMembreDernière intervention18 septembre 2020
-
7 sept. 2020 à 22:07
Bonjour,
je progresse doucement en programmation python.
J'ai fais un petit script python
#------------------------------------------------------------------------------- # Name: FrancsEuro.py # Purpose: # # Author: # # Created: 25/08/2020 # Copyright: 2020 # Licence: <your licence> #------------------------------------------------------------------------------- from tkinter import * import tkinter.messagebox from PIL import ImageTk, Image import pygame import os import winsound frequency = 2500 # Set Frequency To 2500 Hertz duration = 500 # Set Duration To 1000 ms == 1 second
#******************************************************************************* # MUSIQUE # Fonction de choix avec ou sans musique def choix_musique(): if btn_couperMusique["text"] == "Stop musique" : btn_couperMusique["text"] = "Jouer musique" couper_musique() else: btn_couperMusique["text"] = "Stop musique" jouer_musique()
# On dit au revoir def jouer_aurevoir(): pygame.mixer.init() pygame.mixer.music.load("aurevoir.wav") pygame.mixer.music.play()
# On joue une petite musique def jouer_musique(): pygame.mixer.init() pygame.mixer.music.load("Mozard1.wav") pygame.mixer.music.play()
# Fonction d'arrêt de la musique def couper_musique(): pygame.mixer.music.stop()
#******************************************************************************* # Fonction de destruction de la fenêtre principale suite à un événement clavier def exit(event): root.destroy()
#******************************************************************************* # Fonction de choix d'un mode Francs->Euros ou Euros->Francs def switch_feef(): # On efface les deux champs de saisie Euros.delete(0 , END) Francs.delete(0 , END) if btn_ch_mode["text"] == "Francs -> Euros" : btn_ch_mode["text"] = "Euros -> Francs" root.title("Conversion actuelle Francs->Euros") Francs.focus_set() else: btn_ch_mode["text"] = "Francs -> Euros" root.title("Conversion actuelle Euros->Francs") Euros.focus_set() btn_effacer["state"] = "disabled" #*******************************************************************************
#******************************************************************************* # On effectue la conversion def convert(event): # Si le curseur clignote dans le champ Francs mise à jour cohérente if str(root.focus_get()) == '.!entry' : btn_ch_mode["text"] = "Euros -> Francs" root.title("Conversion actuelle Francs->Euros") # Si le curseur clignote dans le champ Euros mise à jour cohérente elif str(root.focus_get()) == '.!entry2' : btn_ch_mode["text"] = "Francs -> Euros" root.title("Conversion actuelle Euros->Francs")
# Si Francs et Euros sont remplis et que nous sommes en mode Francs -> Euros # l'utilisateur veut faire un autre calcul alors, on refait le calcul if ((Francs.get() != "") and (Euros.get() != "")) and btn_ch_mode["text"] == "Euros -> Francs": try : tmp = float(Francs.get()) * 0.1524 except : tkinter.messagebox.showerror('Francs', '( ' + Francs.get() +' )' + ' n\'est pas une somme correcte') Francs.insert(0, 'Saisie incorrecte') winsound.Beep(frequency, duration) btn_effacer["state"] = "normal" effacer() else : round = float("%0.2f" % tmp) strround = str(round) Euros.delete(0 , END) Euros.insert(0, strround + ' €') # Si Francs et Euros sont remplis et que nous sommes en mode Euros -> Francs # l'utilisateur veut faire un autre calcul alors, on refait le calcul elif ((Francs.get() != "") and (Euros.get() != "")) and btn_ch_mode["text"] == "Francs -> Euros": try : tmp = float(Euros.get()) * 6.5596 except : tkinter.messagebox.showerror('Euros', '( ' + Euros.get() +' )' + ' n\'est pas une somme correcte') winsound.Beep(frequency, duration) btn_effacer["state"] = "normal" effacer() Euros.insert(0, 'Saisie incorrecte') else : round = float("%0.2f" % tmp) strround = str(round) Francs.delete(0 , END) Francs.insert(0, strround + ' F') # Sinon fonctionnement normal else : x = Francs.get() y = Euros.get() # Si Francs et Euros sont vides le bouton Effacer est grisé if (x == "") and (y == ""): btn_effacer["state"] = "disabled" else: btn_effacer["state"] = "normal"
if (x != "" ) and (y == ""): # Vérification de la bonne saisie de Francs try : tmp = float(x) * 0.1524 except : # On efface le champ Francs et on affiche l'erreur Francs.delete(0 , END) Francs.insert(0, 'Saisie incorrecte') winsound.Beep(frequency, duration) tkinter.messagebox.showerror('Francs', '( ' + x +' )' + ' n\'est pas une somme correcte') else : # C'est bon alors on affiche le résultat round = float("%0.2f" % tmp) strround = str(round) Euros.delete(0 , END) Euros.insert(0, strround + ' €') Francs.focus_set() elif (y != "") and (x == ""): # Vérification de la bonne saisie d'Euros try : tmp = float(y) * 6.5596 except : # On efface le champ Euros et on affiche l'erreur Euros.delete(0 , END) Euros.insert(0, 'Saisie incorrecte') winsound.Beep(frequency, duration) tkinter.messagebox.showerror('Euros', '( ' + y +' )' + ' n\'est pas une somme correcte') else : # C'est bon alors on affiche le résultat round = float("%0.2f" % tmp) strround = str(round) Francs.delete(0 , END) Francs.insert(0, strround + ' F') Euros.focus_set() #******************************************************************************* # Efface les deux champs de saisie et grise le bouton Effacer def effacer(): # On efface les deux champs de saisie Euros.delete(0 , END) Francs.delete(0 , END) # Le bouton Effacer est grisé btn_effacer["state"] = "disabled" # Le curseur clignote dans le champ Francs Francs.focus_set() root.title("Conversion actuelle Francs->Euros") #*******************************************************************************
# Fenêtre principale root = Tk() root.geometry("650x150")
jouer_musique()
# Affichage d'un petit logo dans la fenêtre img = ImageTk.PhotoImage(Image.open('h.gif')) panel = Label(root, image = img) panel.pack(side = LEFT, fill = 'both', expand = 'yes') # Test de mise en couleur #root.configure(bg='yellow') #root.configure(bg='#00ffff') # Place l'application au centre de l'écran x = (root.winfo_screenwidth() - root.winfo_reqwidth()) / 2 y = (root.winfo_screenheight() - root.winfo_reqheight()) / 2 root.geometry("+%d+%d" % (x, y)) # Définition du titre de l'application au départ root.title("Conversion actuelle Francs->Euros") # Interdire l'agrandissement de la fenêtre root.resizable(height = False, width = False) root.event_delete root.size() # Bouton d'arrêt de la musique btn_couperMusique = Button(root, text="Stop musique", fg ='blue', command = choix_musique, relief=RAISED) btn_couperMusique.pack(side = BOTTOM) #******************************************************************************* # Bouton de switch de la conversion Francs->Euros ou Euros->Francs ainsi que son étiquette mode = Label(root,text="Choix du mode ->") mode.pack(side = LEFT) btn_ch_mode = Button(root, text="Euros -> Francs", fg ='blue', command = switch_feef , relief = 'raised') btn_ch_mode.pack(side = LEFT) #******************************************************************************* # Saisie du champ Francs Label(root,text="Somme en Francs : ").pack() Francs = Entry(root, width = 20) Francs.pack() #******************************************************************************* # Saisie du champ Euros Label(root,text="Somme en Euros : ").pack() Euros = Entry(root, width = 20 ) Euros.pack() #******************************************************************************* # Le bouton Effacer est créé btn_effacer = Button(root, text="Effacer", fg ='blue', command = effacer, relief=RAISED) btn_effacer.pack(side = LEFT) # Par défaut les deux champs de saisie sont vides et le bouton Effacer est grisé btn_effacer["state"] = "disabled" #******************************************************************************* # Le bouton Quitter est créé bouton2 = Button(root, text="Quitter", fg ='blue', command = root.destroy, relief=RAISED) bouton2.pack(side = BOTTOM) #******************************************************************************* # Etiquette du mode d'emploi Label(root,text="Enter pour calculer,Q ou Echap pour quitter").pack() # Le curseur clignote dans le champ Francs Francs.focus_set() #******************************************************************************* # Détection de la touche Enter, Echap ou Q root.bind('<Return>', convert) root.bind("<Escape>", exit) root.bind("q", exit)
root.mainloop() # Quand on quitte le programme, on arrête la musique et on dit au revoir couper_musique() jouer_aurevoir()
et je voudrais pouvoir le distribuer sous la forme d'un exécutable autonome Windows .
J'ai vu qu'il existe un utilitaire "py2exe" qui fait le travail mais je ne comprends rien à son
utilisation.
Est qu'il y a une âme charitable pour m'aider dans ma soif de connaissances ?
Merci
A voir également:
Utilisation de py2exe pour transformer mon script python en exécutable Windows
Baldo35
Messages postés13Date d'inscriptionlundi 31 août 2020StatutMembreDernière intervention18 septembre 2020 7 sept. 2020 à 22:07
Bonsoir,
je te remercie de ton aide mais ça ne fonctionne pas chez moi avec mon script (message d'erreur trop long pour le poster ici).
Par contre j'ai trouvé pyinstaller qui fonctionne très bien: