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 :

Chronomètre avec Python et Glade


Sujet :

GTK+ avec Python

  1. #1
    Membre régulier Avatar de figarojuju
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Points : 73
    Points
    73
    Par défaut [Résolu]Chronomètre avec Python et Glade
    Bonjour,
    je programme un petit programme pour m'amuser sous glade. 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
     
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
    <!--Generated with glade3 3.4.5 on Tue Nov  4 07:23:51 2008 -->
    <glade-interface>
      <widget class="GtkWindow" id="Whorloge">
        <property name="width_request">400</property>
        <property name="height_request">200</property>
        <property name="visible">True</property>
        <property name="title" translatable="yes">Timer Spirotiger</property>
        <signal name="destroy" handler="on_Whorloge_destroy"/>
        <child>
          <widget class="GtkTextView" id="texttime">
            <property name="visible">True</property>
            <property name="can_focus">True</property>
          </widget>
        </child>
      </widget>
    </glade-interface>
    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
     
    #!/bin/python
    try:    
        import pygtk
        pygtk.require("2.0")
        import time
        import gtk
        import gtk.glade
    except:
        pass
     
    class C_horloge:
     
        def __init__(self):
            self.gladefile="/home/julien/bin/horloge/chrono.glade"
            self.Fenetre=gtk.glade.XML(self.gladefile, "Whorloge")
            dic={"on_Whorloge_destroy":self.fermer}
            self.Fenetre.signal_autoconnect(dic)
            self.tZero=time.time()
            self.Wext=self.Fenetre.get_widget("texttime")
            self.buf=self.Wext.get_buffer()
     
     
        def fermer(self,widget,donnees=None):
            gtk.main_quit()
        def boucle(self):
            gtk.main()    
        def startc(self):
            self.t=time.time() -self.tZero
            self.tiTuple=time.gmtime(self.t)
            self.tt=time.strftime("%H:%M:%S", self.tiTuple)
            print self.tt
            self.buf.set_text(self.tt)
     
     
     
    if __name__=='__main__':
        app=C_horloge()
        app.boucle()
        app.startc()
    Je n'arrive pas à faire apparaitre et mettre à jour le chrono. Auriez-vous des idées ?
    A bientôt, bonne soirée.

  2. #2
    Membre régulier Avatar de figarojuju
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Points : 73
    Points
    73
    Par défaut Encore des modifs...
    Bonjour,
    j'ai encore un peu modifié mon code, le chrono fonctionne mais je n'arrive pas à modifier mon textview. Lorsque je ferme ma fenêtre gtk, le terminal m'affiche cependant le chrono qui déroule et je doit faire ctr-c pour terminer le processes.
    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
    #!/bin/python
    try:    
        import pygtk
        pygtk.require("2.0")
        import time
        import gtk
        import gtk.glade
        import threading
        import gobject
    except:
        pass
    #----------------------------------------------------------------------
    class C_horloge:
        def __init__(self):
            self.gladefile="/home/julien/bin/horloge/chrono.glade"
            self.Fenetre=gtk.glade.XML(self.gladefile, "Whorloge")
            dic={"on_Whorloge_destroy":self.fermer}
            self.Fenetre.signal_autoconnect(dic)
            self.tZero=time.time()
            self.Wext=self.Fenetre.get_widget("texttime")
            self.buf=self.Wext.get_buffer()
        def fermer(self,widget,donnees=None):
            gtk.main_quit()
        def boucle(self):
            gtk.main()    
        def startc(self):
            self.t=time.time() -self.tZero
            self.tiTuple=time.gmtime(self.t)
            self.tt=time.strftime("%H:%M:%S", self.tiTuple)
            self.buf.set_text("coucou")
            print self.tt
            self.q=threading.Timer(1.0,self.startc)
            self.q.start()
    #----------------------------------------------------------------------
    if __name__=='__main__':
        app=C_horloge()
        app.boucle()
        app.startc()
    Qu'en pensez-vous ?
    Est-ce possible de modifier une propriété d'un objet de cette manière ?
    Bonne soirée.

  3. #3
    Membre régulier Avatar de figarojuju
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Points : 73
    Points
    73
    Par défaut
    Voici la dernière mouture :
    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
     
    #!/bin/python
    try:    
        import pygtk
        pygtk.require("2.0")
        import time
        import gtk
        import gtk.glade
        import threading
        import gobject
        import pango
    except:
        pass
    #----------------------------------------------------------------------
    class C_horloge:
        def __init__(self):
            self.gladefile="/home/julien/bin/horloge/chrono.glade"
            self.Fenetre=gtk.glade.XML(self.gladefile, "Whorloge")
            dic={"on_Whorloge_destroy":self.fermer,"on_start_button_press_event":self.start,"on_pause_button_press_event":self.pause}
            self.Fenetre.signal_autoconnect(dic)
            self.Waffichage=self.Fenetre.get_widget("texttime")
            self.buf=self.Waffichage.get_buffer()
            self.truc=0.0
            self.t_arret=0.0
            self.t_pause=0.0
            self.t_cumule=0.0
        def start(self,widget,donnees=None):    
            self.tZero=time.time()
            self.test=1
            self.truc=0.0
            self.t_arret=0.0
            self.t_pause=0.0
            self.t_cumule=0.0
            self.run()
        def pause(self,widget,donnees=None):
            if self.test==0:
                self.t_pause=time.time()-self.t_arret
                self.test=(self.test+1)%2
                self.boucle()
            else:
                self.t_cumule=self.t_cumule+self.t_pause
                self.t_pause=0.0
                self.t_arret=time.time()
                self.test=(self.test+1)%2    
                self.boucle()        
        def boucle(self):
            self.tag = self.buf.create_tag(None, size=65.0 * pango.SCALE)
            self.start, self.end = self.buf.get_bounds()
            self.buf.apply_tag(self.tag, self.start, self.end)
            if self.test==1:        
                TIMER_ID = gobject.timeout_add (200, self.run)
            else:
                pass
        def run(self):
            self.t=time.time() -self.tZero -self.t_cumule-self.t_pause
            self.tiTuple=time.gmtime(self.t)
            self.tt=time.strftime("%H:%M:%S", self.tiTuple)
            self.buf.set_text(self.tt)
            self.boucle()
        def fermer(self,widget,donnees=None):
            gtk.main_quit()
     
    #----------------------------------------------------------------------
    if __name__=='__main__':
        app=C_horloge()
        gtk.main()
    et le fichier glade :
    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
    77
    78
     
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
    <!--Generated with glade3 3.4.5 on Mon Nov 10 21:58:05 2008 -->
    <glade-interface>
      <widget class="GtkWindow" id="Whorloge">
        <property name="visible">True</property>
        <property name="title" translatable="yes">Timer Spirotiger</property>
        <signal name="destroy" handler="on_Whorloge_destroy"/>
        <child>
          <widget class="GtkVBox" id="vbox1">
            <property name="width_request">400</property>
            <property name="visible">True</property>
            <property name="border_width">2</property>
            <child>
              <widget class="GtkLayout" id="layout1">
                <property name="width_request">450</property>
                <property name="height_request">100</property>
                <property name="visible">True</property>
                <child>
                  <widget class="GtkTextView" id="texttime">
                    <property name="width_request">400</property>
                    <property name="height_request">100</property>
                    <property name="visible">True</property>
                    <property name="sensitive">False</property>
                    <property name="can_focus">True</property>
                    <property name="editable">False</property>
                    <property name="justification">GTK_JUSTIFY_CENTER</property>
                  </widget>
                </child>
              </widget>
            </child>
            <child>
              <widget class="GtkLayout" id="layout2">
                <property name="width_request">400</property>
                <property name="height_request">50</property>
                <property name="visible">True</property>
                <child>
                  <widget class="GtkButton" id="start">
                    <property name="width_request">90</property>
                    <property name="height_request">35</property>
                    <property name="visible">True</property>
                    <property name="can_focus">True</property>
                    <property name="receives_default">True</property>
                    <property name="label" translatable="yes">Start</property>
                    <property name="response_id">0</property>
                    <signal name="button_press_event" handler="on_start_button_press_event"/>
                  </widget>
                  <packing>
                    <property name="x">105</property>
                    <property name="y">6</property>
                  </packing>
                </child>
                <child>
                  <widget class="GtkButton" id="pause">
                    <property name="width_request">90</property>
                    <property name="height_request">35</property>
                    <property name="visible">True</property>
                    <property name="can_focus">True</property>
                    <property name="receives_default">True</property>
                    <property name="label" translatable="yes">Pause</property>
                    <property name="response_id">0</property>
                    <signal name="button_press_event" handler="on_pause_button_press_event"/>
                  </widget>
                  <packing>
                    <property name="x">212</property>
                    <property name="y">6</property>
                  </packing>
                </child>
              </widget>
              <packing>
                <property name="position">1</property>
              </packing>
            </child>
          </widget>
        </child>
      </widget>
    </glade-interface>
    Bonne soirée

  4. #4
    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
    Tu pourrais repréciser tes questions ? je suis un peu perdu, je ne sais pas quelles questions sont encore d'actualité, quelles questions ne le sont plus, ... Merci!

  5. #5
    Membre régulier Avatar de figarojuju
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Points : 73
    Points
    73
    Par défaut
    Oui, désolé
    En fait, j'ai fini par trouver comment faire fonctionner tout ça...peut-être pas de la meilleur manière mais j'y travaille !!
    Le dernier post donne le code du chrono fonctionnant...
    Si tu as des suggestions, je suis débutant donc preneur de remarques en tout genre !!
    Bonne soirée.

    PS je viens de lire ton post sur http://www.developpez.net/forums/d64...d/#post3780230
    et j'étudie la doc...

  6. #6
    Membre régulier Avatar de figarojuju
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Points : 73
    Points
    73
    Par défaut
    J'ai trouvé une autre manière de faire :
    http://aruiz.typepad.com/siliconisla...s_on_pygt.html
    Qu'en pensez-vous ?
    Bonne soirée

  7. #7
    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 figarojuju Voir le message
    J'ai trouvé une autre manière de faire :
    http://aruiz.typepad.com/siliconisla...s_on_pygt.html
    Qu'en pensez-vous ?
    Bonne soirée
    Cette méthode a été évoquée par Mongaulois : http://www.developpez.net/forums/d62...usieur-thread/

    Elle semble possible mais non testée

Discussions similaires

  1. Réponses: 0
    Dernier message: 05/01/2012, 00h47
  2. utiliser glade avec python sous windows
    Par sakura.sou dans le forum EDI/RAD
    Réponses: 1
    Dernier message: 25/07/2009, 09h31
  3. création de base mySQL avec python
    Par preacher_man dans le forum Bibliothèques tierces
    Réponses: 7
    Dernier message: 23/06/2006, 19h38
  4. Réponses: 2
    Dernier message: 19/12/2005, 13h15
  5. Les 128 derniers bits d'un fichier en ligne avec Python ?
    Par ecocentric dans le forum Réseau/Web
    Réponses: 7
    Dernier message: 26/09/2005, 12h40

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