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 :

Liaison GLADE - Librairie


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Par défaut Liaison GLADE - Librairie
    Bonjour,

    J'espère que je ne me trompe pas de section. Mon problème est le suivant. Je développe un programme, avec en tout trois fichiers: un .GLADE pour l'IHM, un .py pour mon code gérant l'IHM, et une librairie (en python) contenant les différentes classes réalisant l'ensemble des tâches.

    Le fonctionnement est on ne peut plus classique. Dans l'IHM, le user choisit un fichier et clique sur le bouton de traitement. A partir de là, le .py communique les infos à mes librairies pour qu'elles réalisent le traitement, et c'est là qu'est mon problème.

    Dans ces librairies, les fonctions de classe réalisent des boucles assez longues (parfois 1 millions de boucles), et j'aimerais communiquer l'avancement du traitement au user (donc le nombre de boucle déjà réalisé rapport au nombre total à réaliser). Pour cela, je connait le nombre de cycles à accomplir, et donc l'avancement, mais ne sais pas comment réaliser la connexion entre la librairie qui tourne alors en boucle et l'IHM, via le .py (code de mon programme).

    Quelqu'un a-t-il une solution? N'hésiter pas à me dire si je ne suis pas assez claire.

    Merci beaucoup
    Images attachées Images attachées  

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 327
    Par défaut
    Bonjour,

    La question que je me pose, pouvez vous récupérer le nombre de boucle déjà réalisé avec votre script .py. Si oui, il vous suffit ensuite de demander à votre script .py qu'il actualise votre IHM en créant un widget dans votre interface.

    En ce qui concerne l'emplacement de votre topic, la section PyGTK aurait été plus approprié, car vous utilisez une interface GTK.

    Vous pourriez utilisez une barre de progression pour afficher l'avancement, pour cela, je vous invite à lire la documentation du gtk.progressbar.

    J'espère vous avoir aidé, n'hésitez pas à demander plus d'information si nécessaire...

    Mickael

  3. #3
    Expert confirmé

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Par défaut
    Bonjour,

    la solution que tu exposes Apocalypses est ma "solution" de secours. Cas échéant je découperai mes fonctions pour effectivement connaitre ou j'en suis rendu. Mais tôt ou tard, je serais à nouveau face au même problème sur d'autres projets, d'où le fait que j'essaie d'y palier de suite.

    Dans ma fonction de librairie je sais effectivement ou j'en suis (nbre de boucles accomplies, et donc % d'avancement). Mon soucis est de garder ma fonction entière (sans la redécouper) et de communiquer ce taux d'avancement (ou nbre de boucle réalisé) en dynamique à mon fichier Glade.

    Pour la doc de la progressbar, je l'ai entièrement lu, et même acheté un livre détaillé sur GTK+ (et en français, le luxe suprême). Mais mon soucis est autre car il s'agit de liaison entre du code et glade. Dans mon Py, aucun problème, je sais faire mais dans ma librairie, je ne sait faire que si ma fonction renvoie une info à mon Py et que ce dernier réalise la mise à jour, mais cela revient à un découpage de la fonction (solution de secours).

    Ce que je désirerais ce serais dire dans mon code Py quelque chose du genre: pourcentage_progressbar=nbre_boucle_accomplie, ou nbre_boucle_accomplie serait mis à jour automatiquement et en dynamique depuis la librairie, sans renvoyer d'info à mon Py(je ne sais pas si c'est clair).

    Je pense que cela doit être possible, mais à confirmer.

    Concernant l'erreur de section, si un administrateur pouvait réaliser le déplacement en PyGTK (ou m'expliquer comment faire, si je n'ai pas réussit d'ici là).

  4. #4
    Expert confirmé

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Par défaut
    Bonjour,

    En continuant à chercher sur le net, je suis tombé sur cela: gtk.main_iteration

    Je me demandais si en l'utilisant de la façon suivante (en simplifié), ma progressbar serait mise à jour

    IHM: Rien à changer

    PY: une fois un objet obj de ma classe CL créé, dire que le pourcentage de la progressbar=obj.nbre_boucle

    LIB:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Fction():
       while ...:
          calcul
          iteration nbre_boucle
          gtk.main_iteration()
    Le but serait de forcer la mise à jour de la progressbar. Votre avis?

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 327
    Par défaut
    Bonjour,

    Cette fonction permet en effet de forcer la mise a jour, car dans la programmation graphique, les éléments de l'interfaces sont modifiés une fois les fonctions terminés.

    Si dans votre while vous arrivés à récupérer le nombre d'élement alors modifier l'état de la barre de progression avec .set_fraction(%) et faites un main_interaction...

    Voici un petit FAQ sur le main_interaction : http://python.developpez.com/faq/?page=pyGTK#GTKUpdate

    Bon courage a vous...

  6. #6
    Expert confirmé

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Par défaut
    Bonjour,

    Merci pour tes réponses. Je crois que je vais partir sur cette voie et modifier légèrement mon code.

    Merci beaucoup encore pour ton aide.

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

Discussions similaires

  1. Problème de liaison de librairie dynamique
    Par mithrendil dans le forum C#
    Réponses: 2
    Dernier message: 15/06/2011, 23h12
  2. Perte de liaison avec une librairie externe.
    Par hesky dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 13/12/2007, 13h29
  3. Réponses: 1
    Dernier message: 09/10/2007, 06h44
  4. <GLADE + C++> Probleme de Librairies
    Par debutanteVB.NET dans le forum Bibliothèques
    Réponses: 3
    Dernier message: 30/09/2005, 12h40
  5. compatibilité des librairies directX8
    Par Freakazoid dans le forum DirectX
    Réponses: 3
    Dernier message: 23/05/2002, 21h33

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