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

PyQt Python Discussion :

Fractionner le code en plusieurs fichiers [QtGui]


Sujet :

PyQt Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 50
    Par défaut Fractionner le code en plusieurs fichiers
    Bonjour à tous,

    Je suis en train de programmer une "petit'e" application qui exécute plusieurs scripts.
    Afin de ne pas avoir un seul et unique gros fichier impossible à débuger je souhaiterais séparer mes formulaires dans divers fichier.

    Problème : j'arrive à passer ma QMainWindow d'un fichier à l'autre lors de l'appel de mon script comme ceci :
    #fichier1.py
    aff = PrintReseau()
    self.connect(script2, QtCore.SIGNAL('triggered()'), lambda fenetre=self: aff.afficherform(fenetre))
    #fichier2.py
    class PrintReseau():
    def afficherform(self, fenetre):
    # Tableau pour les données
    fenetre.tab = QtGui.QTableView(zoneCentrale)
    mais je n'arrive pas à passer une seconde fois la QMainWindow à partir de afficherform vers une autre fonction qui se situe pourtant dans le même fichier toujours en utilisant la méthode connect() :

    fenetre.connect(fenetre.cboxscontext, QtCore.SIGNAL("currentIndexChanged(const QString&)"), lambda test=fenetre: self.remplircombobox(test))
    Je récupère un QString dans la fonction remplircombobox...

    Quelqu'un a une idée ?

    Merci d'avance
    Nicolas

  2. #2
    Expert confirmé

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Bonjour,

    D'abord essayer de comprendre.

    Ta fenêtre principale est créée dans fichier1.py je suppose,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #fichier1.py
    aff = PrintReseau()
    self.connect(script2, QtCore.SIGNAL('triggered()'), lambda fenetre=self: aff.afficherform(fenetre))
    et donc, script2 est un bouton, un item de menu ou quelque chose du genre qui appelle fichier2.aff.afficherforme()


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #fichier2.py
    class PrintReseau():
     
        def afficherform(self, fenetre):
     
            # Tableau pour les données
            fenetre.tab = QtGui.QTableView(zoneCentrale)
    tu crées un nouveau widget qui se placera, ... heu qui se placera où ?

    Son parent (zoneCentral) n'appartiendrait-il pas à la fenêtre principale ?

    Je crains que oui.

    Je te propose ceci:

    fichier1.py
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    self.aff = PrintReseau(self)
     
    script2.triggered.connect(self.aff.afficherform)
    fichier2.py
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class PrintReseau(object):
        def __init__(self, main):
            self.main = main
            ....
     
     
        def afficherforme(self):
            self.main.tab = QtGui.QTableView(self.main.zoneCentrale)
     
            self.main.cboxscontext.currentIndexChanged.connect(
                                                              self.remplircombobox)
    Mais, question: tu ne peux pas créer directement ta tableView avec les autres widgets dans le fichier1 ?

    Si c'était possible ce serait mieux, d'autant plus qu'elle va s'afficher où, cette table , il y a un layout de définit pour la recevoir ? ce sera alors

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            self.main.monLayout.addWidget(self.main.tab)
    Je n'ai rien contre le fait de diviser le code en fichiers séparés, mais il est préférable de conserver certaines entités dans un seul script et ne pas les morceler comme cela semble être le cas.

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 50
    Par défaut
    C'est exactement ça qu'il me fallait !
    Ca marche

    Merci beaucoup !!!
    Je prendrais le temps d'écrire un petit tuto quand j'aurais finit mon projet

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

Discussions similaires

  1. Découpage propre d'un code en plusieurs fichiers
    Par badreama dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 18/09/2014, 17h40
  2. Diviser son code en plusieurs fichiers ?
    Par tintin72 dans le forum jQuery
    Réponses: 4
    Dernier message: 13/09/2013, 16h02
  3. répartir son code dans plusieurs fichiers
    Par peuf23 dans le forum Débuter
    Réponses: 5
    Dernier message: 10/09/2008, 12h00

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