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

Tkinter Python Discussion :

Création et appel d'une fonction avec un bouton


Sujet :

Tkinter Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Animateur
    Inscrit en
    Novembre 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Animateur
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2016
    Messages : 22
    Points : 8
    Points
    8
    Par défaut Création et appel d'une fonction avec un bouton
    Bonjour,

    J'ai créer un diaporama participatif (via une boite mail) avec Tkinter,
    mon public envoi des photos sur une boite mail avec un téléphone portable et la photo s'affiche en direct sur l'écran,
    seulement je cherche à créer une fonction "Modérer" ; cela aurait pour effet d'effacer le canvas à l'instant ou je clique sur le bouton ; d'effacer la liste en cours d'exécution et de relancer la fonction lister()
    voila mon code qui ne fonctionne pas :

    la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def moderer():
        can1.delete(ALL)
        os.remove(s)
        lister()
    Le bouton avec appel de la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    bou2 = Button(fen1, text='Moderer', command = moderer())
    bou2.pack(side=LEFT, padx =0, pady =0)
    Cela ne fonctionne pas, je n'arrive pas à comprendre pourquoi

    Merci pour l'aide

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par Alex73160 Voir le message
    Cela ne fonctionne pas, je n'arrive pas à comprendre pourquoi
    Il faut essayer d'apprendre à relire ce que vous avez écrit.
    Prenez une fonction "f":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> def f():
    ...     print('f')
    ...
    Et une fonction "g" à qui on va passer cette fonction là en paramètre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> def g(command=f):
    ...     if command:
    ...        print('calling...')
    ...        f()
    ...
    Puis il faut réfléchir à la différence entre passer la fonction en paramètre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> g(command=f)
    calling...
    f
    ou passer le résultat de cette fonction:
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    bou2 = Button(fen1, text='Moderer', command = moderer)
    La commande c'est la fonction pas son retour, donc pas de parenthèses.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Animateur
    Inscrit en
    Novembre 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Animateur
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2016
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    La commande c'est la fonction pas son retour, donc pas de parenthèses.
    merci, je viens de comprendre cela ;-)

    Pour ce qui est de la fonction en elle même , le canvas s'efface bien, avec os.remove(s) c'est plus compliqué,

    "s" est ma liste de fichiers du départ (qui comporte 5 éléments)

    En principe quand je clique sur modérer on devrais

    1 effacer le canvas,
    2 supprimer physiquement les fichiers contenus dans s
    3 créer une nouvelle liste avec ma fonction lister

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def moderer():
     
        can1.delete(ALL,j)
     
        os.remove(s)
     
        lister()
    C'est aléatoire je trouve, en plus il faut que je clique au bon moment, des idées ?

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/03/2014, 09h38
  2. Appel d'une fonction avec plusieurs variables
    Par midoparis dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 13/05/2008, 11h53
  3. appel d'une fonction avec allocation
    Par MoonSef dans le forum C
    Réponses: 9
    Dernier message: 26/02/2007, 08h24
  4. appel d'une fonction avec parametre.
    Par rollernox dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/10/2006, 23h07
  5. [FPDF] Erreur après appel d'une fonction avec include
    Par orus8 dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 04/11/2005, 10h49

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