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

GTK+ avec Python Discussion :

Appeler une fonction à interval régulier


Sujet :

GTK+ avec Python

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 93
    Points : 81
    Points
    81
    Par défaut Appeler une fonction à interval régulier
    bonsoir,
    je dois faire un programme avec un widget gtk.Entry() et bouton fermer,jusque la y pas trops de probleme mais en plus mon programme doit declenchez un action toute les 2 secondes alors j ai un class codes qui initialise l interface graphique et deux methodes une appller fermer et l autre appeller Timer mais voila a cause dela ligne gtk.main() je n arrivent pas a leancer le timer alors ou je dois placer cette fichue ligne de code gtk.main()
    si vous pouvez m aider merci d avance.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 93
    Points : 81
    Points
    81
    Par défaut voila le 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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
    import threading
    import pygtk
    import MySQLdb
    pygtk.require('2.0')
    import gtk
    from time import sleep
     
     
     
    class Code:
        def __init__(self):
            self.conn=MySQLdb.connect('localhost','root','','presence')
            self.cursor=self.conn.cursor()
            self.fen=gtk.Window(gtk.WINDOW_TOPLEVEL)
            self.boite=gtk.VBox(False,0)
            self.fen.add(self.boite)
            self.boite.show()
            self.saisie=gtk.Entry(max=50)
            self.boite.pack_start(self.saisie,True,True,0)
            self.saisie.show()
            self.bouton = gtk.Button(stock=gtk.STOCK_CLOSE)
            self.bouton.connect_object("clicked", self.fermer, self.fen)
            self.boite.pack_start(self.bouton, True, True, 0)
            self.bouton.set_flags(gtk.CAN_DEFAULT)
            self.bouton.grab_default()
            self.bouton.show()
            self.infobulle=gtk.Tooltips()
            self.fen.show()
     
     
        def fermer(self):
            self.cursor.close()
            self.conn.close()
            self.gtk.main_quit()
     
     
        def MyTimer(self,arg):
            if self.saisie.get_text()=='':
                print "attentes"
                sleep(arg)
     
                self.MyTimer(arg)
                gtk.main()
                #threading.Timer(arg,self.MyTimer,[arg]).start()
                print clock()
                pass
            else:
                self.cursor.execute("select * from nom")
                auto=cursor.fetchall()
                if auto==():
                    self.cursor.execute("insert into nom values ('"+self.saisie.get_text()+"')")
                else:
                    for tune in auto:
     
                        if tune==(str(self.saisie.get_text()),):
     
                            self.cursor.execute("delete from nom where prenom="+"'"+self.saisie.get_text()+"'")
                            break
                        elif( not (str(self.saisie.get_text()),) in auto):
                            self.cursor.execute("insert into nom values ('"+self.saisie.get_text()+"')")
                            break
                self.saisie.set_text('')
                self.cursor.execute("select * from nom")
                nombre=len(cursor.fetchall())
                self.infobulle.set_tip(self.bouton,str(nombre))
                #threading.Timer(arg,self.MyTimer,[arg]).start()
                sleep(arg)
     
                self.MyTimer(arg)
     
     
     
    c=Code()
    c.MyTimer(2.0)
    gtk.main()

  3. #3
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Points : 1 633
    Points
    1 633
    Par défaut
    Y a des fonctions g_timeout_add dans la glib pour faire en sorte qu'une fonction soit appelée à intervalle régulier au sein du gtk_main, a priori c'est ce que tu cherches.

    NB: un titre clair, ça ne fait pas de mal

  4. #4
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par teuf13 Voir le message
    Y a des fonctions g_timeout_add dans la glib pour faire en sorte qu'une fonction soit appelée à intervalle régulier au sein du gtk_main, a priori c'est ce que tu cherches.
    gobject.timeout_add

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 93
    Points : 81
    Points
    81
    Par défaut j utilise python 2.5 et pygtk
    bonsoir
    comme le titre l indique j ai un probleme pour trouver cette fonction elle ce trouve dans quel module faut il installer un autres packages pour pouvoir s en servir
    merci quand meme

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 93
    Points : 81
    Points
    81
    Par défaut
    voila j ai trouver la fonction mais comment
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from gobject import timeout_add
    je dois placer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    timeout_add(1000,self.MyTimer)
    ou car il me l appelle qu une fois lorsque le programme tourne

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

Discussions similaires

  1. Appel à une fonction à intervalle régulier
    Par Mozofeuk dans le forum Silverlight
    Réponses: 2
    Dernier message: 13/02/2012, 10h16
  2. [DLL] problème pour appeler une fonction d'une DLL
    Par bigboomshakala dans le forum MFC
    Réponses: 34
    Dernier message: 19/07/2004, 11h30
  3. Appeler une fonction avec "action" ds un
    Par drinkmilk dans le forum ASP
    Réponses: 4
    Dernier message: 20/04/2004, 14h54
  4. [JSP] Appeler une fonction
    Par Patrick95 dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 23/12/2003, 13h44
  5. Appeler une fonction avec/sans parenthèses
    Par haypo dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 29/12/2002, 18h48

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