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 :

Affichage en retard


Sujet :

GTK+ avec Python

  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 327
    Points : 257
    Points
    257
    Par défaut Affichage en retard
    Bonjour a tous et merci de prendre le temps de m'aider et peut etre aider les personnes qui sont dans cette meme configuration.

    Je programme donc une application en pygtk et utilise glade comme interface graphique, mon application réside en un echange de messages entre clients et serveur.

    Voici ou j'en suis:
    Toutes mon interface eest crée, un champs pour ecrire et champs pour afficher les messages, le serveur marche parfaitement, il recoit et renvoie bien tous les messages a tous les clients. Je tient a signaler que partie client, lorsque je me connecte, je cree un thread pour gerer la reception des messages.

    Voici mon probleme:
    Lorsque je me conencte, le thread sinitialise correctement, et c'est alors que commence a boucle et elle commence par une attente d'un message, (normal) et le probleme c'est des quelle recoit le message je suis obliger d'effectuer une action sur mon application pour faire apparaitre le message.
    Je m'explique, en gros une fois que j'ai envoyé mon message, il apparrait pas instantanément et n'apparait pas du tout (toujorus partie client dans le champs prevu a l'affichage des messages) si je ne fait rien, je suis obliger de cliquer sur des bouton de l'application, ou de commencer a ecrire le emssage suivant pour qu'il daigne bien m'afficher le message, un peut agacent, c'est comme si mon application se mettait inactif si je fais rien.

    Ce que je sais:
    Il est sur que cela ne vient pas du serveur, car si j'envoie le message, que je ferme la partie serveur, et que je bouge un peu mon application, le message apparait, cela veut bien dire qu'il la deja recu il y a un petit moment, pourquoi ne l'a-t-il pas affiché directement, je ne sais pas et c'est mon probleme du jour.

    Je vous remercie cordiallement d'avance de vous préoccupé de mon probleme, je suis nouveau dans python, essayé d'etre precis s'il vous plait ^^. Pour tout renseignement supplémentaire, n'esitez pas. Merci a tous...

  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
    Bonjour,
    es-tu allé voir du côté des fonctions du type gobject.timeout_add (http://www.pygtk.org/pygtk2reference/gobject-functions.html) pour mettre à jour régulièrement ton affichage de manière automatique ?
    Bonne journée.

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 327
    Points : 257
    Points
    257
    Par défaut
    Je pense que se que tu m'as donné pourrait en effet resoudre mon probleme definitivement, faire un rafraichissement automatique.

    Le truc c'est que sa marche pas au top, j'ai toujrous une erreur, a l'interieur du script.py j'ai rajouter

    import gobject

    dans ma classe principalle, dans __init__ :
    gobject.type_name(monapplicationglade)
    gobject.timeout_add (1000, self.test)
    def test(self):
    print 'test'

    Le probleme c'est que sa maffiche test pas toutes les secondes mais juste une fois. Ou je me susi trompe, je pense dans la selection du fichier gobject, j'ai pris toute mon application, mais je prends quoi a la place ?

    En tout cas je te remercie beaucoup car je commence a voir le bout du tunnel, je pensais vraiment que c'etait foutu ^^. Je vais continuer a chercher la fonction, si vous savez n'ésitez pas lol.

  4. #4
    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
    Que penses-tu de faire un truc du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    def __init__(self) :
             self.test()
     
    def boucle(self) :
             gobject.timeout_add (1000, self.test)
     
    def test(self) :
             print "je suis là" 
         self.boucle()
    @+

  5. #5
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 327
    Points : 257
    Points
    257
    Par défaut
    Lol desole, j'avais zapé quelque chose, au lieu de supprimer mon ancien post je prefere ecrire celui la pour aider les autres, il faut specifier a la fin de votre fonction qui est appellé 'return True' sinon elle est stopé.

    En revanche ce que j'aimerai savoir c'est si quelquun connait la fonction pour rafraichir, j'en est trouvé pas mal mais jamais une potable.

    En tout cas merci mille fois, c'est presque finit.

    Sa donnerai alros par rapport au script que tu as fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def __init__(self) :
             gobject.timeout_add (1000, self.test)
     
    def test(self) :
             print "je suis là" 
             return True
    Je pense que les deux marches.

  6. #6
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 327
    Points : 257
    Points
    257
    Par défaut
    Bon je pense qu'il est temps de mettre un terme a ce topic, je suis vraimentr super content et te remercirai jamais autant, il ma suffit de rajouter dans la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def test(self) :
             gtk.main_iteration()
             return True
    Et je conseille fortement de mettre un intervalle vraiment mince afin qu'l n'y est aucune coupure, pour ma part, sachez qu'il n'y a pas vraiment de ralentissement et que se mode de rafraichissement marche avec pygtk pour des interfaces graphiques. POur le reste je n'ai pas testé.

    Voila, j'ai n'ai qu'une chose a dire, Topic resolu et merci pour tout

  7. #7
    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
    J'ai survolé ton premier message, et j'ai l'impression que ton problème est dû à une mauvaise utilisation de gtk+ avec plusieurs threads. Tu essaies de modifier ton interface graphique depuis un thread différent de celui faisant fonctionner la mainloop ? Si oui, as-tu lu, relu et encore relu http://library.gnome.org/devel/gdk/s...k-Threads.html ?

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/04/2008, 15h35
  2. retarder l'affichage d'une iframe
    Par mattrou dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 02/08/2007, 14h04
  3. [Thread et Swing] Affichage retardé
    Par esteban dans le forum EDT/SwingWorker
    Réponses: 2
    Dernier message: 06/07/2007, 14h19
  4. affichage et retard
    Par mumuri dans le forum C++
    Réponses: 1
    Dernier message: 10/07/2006, 20h07
  5. Réponses: 3
    Dernier message: 29/04/2006, 22h06

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