IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Fonction : définition et utilisation


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations forums :
    Inscription : Octobre 2009
    Messages : 127
    Par défaut Fonction : définition et utilisation
    Bonjour à toutes/tous,

    Après plusieurs années sans une ligne de code.... et quelques bases solides en C#, java et VBA je me lance dans un projet python pour faire une sorte de "photobooth".

    Premiers pas en python, je découvre les joies du python. Il se trouve que j'ai tenté de définir une fonction qui prends les photos et me fait un montage.
    Je veux appeler cette fonction sur action d'un bouton... mais au moment ou je définit le bouton j'ai l'impression qu'il ne connait pas encore la fonction.
    Sauf que si je définit le fonction avant.... alors elle s'execute direct (j'ai mis le chmod +x dessus puis je l'execute en faisant "python ....")

    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    #!/usr/bin/python
     
    import RPi.GPIO as GPIO, time, os, subprocess
    from Tkinter import *
     
     
    #On mets une fenetre pour tester
    fenetre = Tk() #on instancie l'objet a partir de la bibliotheque Tk
    label = LabelFrame(fenetre, text="Pouet Pouet") #on definit le texte qu'on voudra dedans
    label.pack() #on l'active
    Button(fenetre, text="Video maggle").pack(side=RIGHT, padx=5, pady=5)
    Button(fenetre, text="Photos maggle", command=snap()).pack(side=LEFT, padx=5, pady=5)
    bouton = Button(fenetre, text="quitter cette super fenetre", command=fenetre.quit) #definit un bouton quit dans la fenetre
    bouton.pack(side=BOTTOM) #on l'active
    fenetre.mainloop()
     
     
    def snap():
            snap = 0
            while snap < 4:
                    print("pose!")
                    time.sleep(1.5)
                    print("SNAP")
                    gpout = subprocess.check_output("gphoto2 --capture-image-and-download --filename /home/pi/photobooth_images/photobooth%H%M%S.jpg", stderr=subprocess.STDOUT, shell=True)
                    print(gpout)
                    if "ERROR" not in gpout:
                            snap += 1
                    time.sleep(0.5)
                    print("please wait while your photos print...")
                    # build image and send to printer
                    subprocess.call("sudo /home/pi/scripts/photobooth/assemble_and_print", shell=True)
                    # Wait to ensure that print queue doesn't pile up
                    #time.sleep(110)
                    print("ready for next round")
            return;
    Merci par avance de votre aide

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    1: Enlève les parenthèses ici command=snap() sinon la commande est le retour de cette fonction. None dans ce cas.

    2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def snap():
            snap = 0
    Ne pas réutiliser le même nom, ça joue des tours.

    3: Je suppose que tu voulais ajouter l'heure ici : photobooth%H%M%S.jpg
    4: Ici c'est juste une question, pourquoi le programme assemble_and_print qui se trouve dans ton home doit être lancé avec les droits admin ?

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations forums :
    Inscription : Octobre 2009
    Messages : 127
    Par défaut
    Hello VinSs

    Top merci de ta réponse, en effet en corrigeant en enlevant les parenthèses et en changeant le nom de ma fonction ça roule !

    Parfait

    Pour le "sudo" a vrai dire je vais fouiner, j'ai chercher des scripts à droite à gauche que je vais bosser ensuite pour la gestion des erreurs etc...

    Un Grand merci pour ton aide !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. fonction SOMME.SI utilisée avec fonction ET ?
    Par clarisse dans le forum Excel
    Réponses: 16
    Dernier message: 30/07/2008, 12h17
  2. Fonction JPanel.repaint() utilise 100% du processeur
    Par deadstar62 dans le forum AWT/Swing
    Réponses: 10
    Dernier message: 08/08/2007, 13h23
  3. appeler une fonction définit par l'utilisateur
    Par paumi dans le forum C++Builder
    Réponses: 5
    Dernier message: 22/05/2007, 00h00
  4. Définition et utilisation d'un fichier AFS ?
    Par habasque dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 27/04/2007, 21h21
  5. Réponses: 1
    Dernier message: 09/05/2006, 20h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo