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 :

la modularité en python [Python 2.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    étudiant master
    Inscrit en
    Février 2014
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : étudiant master

    Informations forums :
    Inscription : Février 2014
    Messages : 167
    Par défaut la modularité en python
    Bonjour à tous,

    Je travaille avec PyQt sous Qt designer, et j'aimerai apprendre de créer modules et maitriser la notion de la la modularité en python.
    Pour cela, j'ai deux fichiers f1.py et f2.py. Je voulais appeler la classe Ui_Form de f2 à partir d'un menu de f1.

    f1.py:

    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
    from PyQt4 import QtCore, QtGui
    from f2 import Ui_Form
     
    class Ui_consultation(object):
     
        def setupUi(self, Consultation):
     
               code
               QtCore.QObject.connect(self.menuWilayas, QtCore.SIGNAL(_fromUtf8("clicked()")),Ui_Form)
     
        def def retranslateUi(self, Consultation):
     
            code 
     
    if __name__ == "__main__":
     
        import sys  
        app = QtGui.QApplication(sys.argv)
        Consultation = QtGui.QMainWindow()
        ui = Ui_Consultation()
        ui.setupUi(Consultation)
        Consultation.show()
        sys.exit(app.exec_())

    Quand j'exécute ce code, seule la fenêtre de f1 qui apparaitre.

    merci d'avance de vos remarques et aides.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 699
    Par défaut
    Salut,

    Citation Envoyé par noramokh Voir le message
    Quand j'exécute ce code, seule la fenêtre de f1 qui apparaitre.

    merci d'avance de vos remarques et aides.
    Si vous ne postez pas un code plus complet, çà laisse ouvert des tas de questions auxquelles on répondra sans forcément reproduire le soucis constaté.

    Citation Envoyé par noramokh Voir le message
    Pour cela, j'ai deux fichiers f1.py et f2.py. Je voulais appeler la classe Ui_Form de f2 à partir d'un menu de f1.
    Il serait plus simple de tout faire fonctionner dans un premier temps le tout dans un seul script puis de pousser ce que vous voulez dans un module.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre confirmé
    Femme Profil pro
    étudiant master
    Inscrit en
    Février 2014
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : étudiant master

    Informations forums :
    Inscription : Février 2014
    Messages : 167
    Par défaut
    je me suis dit que le code est long, c'est pour ça je l'ai résumé.

    code f1.py:
    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
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    from PyQt4 import QtCore, QtGui
    import class_wilayas
    from class_wilayas import Ui_Form
     
    import os.path
     
     
    try:
        _fromUtf8 = QtCore.QString.fromUtf8
    except AttributeError:
        def _fromUtf8(s):
            return s
     
    try:
        _encoding = QtGui.QApplication.UnicodeUTF8
        def _translate(context, text, disambig):
            return QtGui.QApplication.translate(context, text, disambig, _encoding)
    except AttributeError:
        def _translate(context, text, disambig):
            return QtGui.QApplication.translate(context, text, disambig)
     
    class Ui_Consultation(object):
        def setupUi(self, Consultation):
            Consultation.setObjectName(_fromUtf8("Consultation"))
            Consultation.resize(598, 358)
            self.centralwidget = QtGui.QWidget(Consultation)
            self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
            Consultation.setCentralWidget(self.centralwidget)
            self.menubar = QtGui.QMenuBar(Consultation)
            self.menubar.setGeometry(QtCore.QRect(0, 0, 598, 21))
            self.menubar.setObjectName(_fromUtf8("menubar"))
            self.menuWilayas = QtGui.QMenu(self.menubar)
            self.menuWilayas.setObjectName(_fromUtf8("menuWilayas"))
            self.menuProduction = QtGui.QMenu(self.menubar)
            self.menuProduction.setObjectName(_fromUtf8("menuProduction"))
            self.menuWeb = QtGui.QMenu(self.menubar)
            self.menuWeb.setObjectName(_fromUtf8("menuWeb"))
            self.menuAide = QtGui.QMenu(self.menubar)
            self.menuAide.setObjectName(_fromUtf8("menuAide"))
            Consultation.setMenuBar(self.menubar)
            self.statusbar = QtGui.QStatusBar(Consultation)
            self.statusbar.setObjectName(_fromUtf8("statusbar"))
            Consultation.setStatusBar(self.statusbar)
            self.toolBar = QtGui.QToolBar(Consultation)
            self.toolBar.setObjectName(_fromUtf8("toolBar"))
            Consultation.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar)
            self.actionV_g_tale = QtGui.QAction(Consultation)
            icon = QtGui.QIcon()
            icon.addPixmap(QtGui.QPixmap(_fromUtf8("D:/app_auto/outils/icone/index6.jpg")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
            self.actionV_g_tale.setIcon(icon)
            self.actionV_g_tale.setObjectName(_fromUtf8("actionV_g_tale"))
            self.actionAnimale = QtGui.QAction(Consultation)
            self.actionAnimale.setObjectName(_fromUtf8("actionAnimale"))
            self.menuProduction.addAction(self.actionV_g_tale)
            self.menuProduction.addSeparator()
            self.menuProduction.addAction(self.actionAnimale)
            self.menubar.addAction(self.menuWilayas.menuAction())
            self.menubar.addAction(self.menuProduction.menuAction())
            self.menubar.addAction(self.menuWeb.menuAction())
     
            self.menubar.addAction(self.menuAide.menuAction())
     
            self.retranslateUi(Consultation)
            QtCore.QMetaObject.connectSlotsByName(Consultation)
            QtCore.QObject.connect(self.menuWilayas, QtCore.SIGNAL(_fromUtf8("clicked()")),Ui_Form)
     
        def retranslateUi(self, Consultation):
            Consultation.setWindowTitle(_translate("Consultation", "Consultation des statistiques agricoles", None))
            self.menuWilayas.setTitle(_translate("Consultation", "Wilayas", None))
            self.menuProduction.setTitle(_translate("Consultation", "Production", None))
            self.menuWeb.setTitle(_translate("Consultation", "Web", None))
            self.menuAide.setTitle(_translate("Consultation", "Aide", None))
            self.toolBar.setWindowTitle(_translate("Consultation", "toolBar", None))
            self.actionV_g_tale.setText(_translate("Consultation", "Végétale", None))
            self.actionAnimale.setText(_translate("Consultation", "Animale ", None))
     
     
    if __name__ == "__main__":
     
        import sys
        from class_wilayas import Ui_Form
     
        app = QtGui.QApplication(sys.argv)
        Consultation = QtGui.QMainWindow()
        ui = Ui_Consultation()
        ui.setupUi(Consultation)
        Consultation.show()
        sys.exit(app.exec_())
    code f2.py:

    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
    79
    80
    81
    82
    83
    84
    85
    from PyQt4 import QtCore, QtGui
     
    try:
        _fromUtf8 = QtCore.QString.fromUtf8
    except AttributeError:
        def _fromUtf8(s):
            return s
     
    try:
        _encoding = QtGui.QApplication.UnicodeUTF8
        def _translate(context, text, disambig):
            return QtGui.QApplication.translate(context, text, disambig, _encoding)
    except AttributeError:
        def _translate(context, text, disambig):
            return QtGui.QApplication.translate(context, text, disambig)
     
    class Ui_Form(object):
        def setupUi(self, Form):
            Form.setObjectName(_fromUtf8("Form"))
            Form.resize(418, 300)
            self.frame = QtGui.QFrame(Form)
            self.frame.setGeometry(QtCore.QRect(10, 50, 391, 191))
            self.frame.setFrameShape(QtGui.QFrame.Box)
            self.frame.setFrameShadow(QtGui.QFrame.Sunken)
            self.frame.setObjectName(_fromUtf8("frame"))
            self.label = QtGui.QLabel(self.frame)
            self.label.setGeometry(QtCore.QRect(40, 40, 91, 16))
            self.label.setObjectName(_fromUtf8("label"))
            self.BoxWilayas = QtGui.QComboBox(self.frame)
            self.BoxWilayas.setGeometry(QtCore.QRect(170, 40, 141, 22))
            self.BoxWilayas.setObjectName(_fromUtf8("BoxWilayas"))
            self.BoxWilayas.addItem(_fromUtf8(""))
            self.BoxWilayas.setItemText(0, _fromUtf8(""))
            self.BoxWilayas.addItem(_fromUtf8(""))
            self.BoxWilayas.addItem(_fromUtf8(""))
            self.BoxWilayas.addItem(_fromUtf8(""))
            self.BoxWilayas.addItem(_fromUtf8(""))
            self.BoxWilayas.addItem(_fromUtf8(""))
            self.BoxWilayas.addItem(_fromUtf8(""))
            self.BoxWilayas.addItem(_fromUtf8(""))
            self.BoxWilayas.addItem(_fromUtf8(""))
            self.BoxWilayas.addItem(_fromUtf8(""))
            self.BoxWilayas.addItem(_fromUtf8(""))
            self.label_2 = QtGui.QLabel(self.frame)
            self.label_2.setGeometry(QtCore.QRect(40, 90, 81, 16))
            self.label_2.setObjectName(_fromUtf8("label_2"))
            self.EditMotDePasse = QtGui.QLineEdit(self.frame)
            self.EditMotDePasse.setGeometry(QtCore.QRect(170, 90, 141, 20))
            self.EditMotDePasse.setObjectName(_fromUtf8("EditMotDePasse"))
            self.pushButton = QtGui.QPushButton(self.frame)
            self.pushButton.setGeometry(QtCore.QRect(120, 140, 75, 23))
            self.pushButton.setObjectName(_fromUtf8("pushButton"))
            self.pushButton_2 = QtGui.QPushButton(self.frame)
            self.pushButton_2.setGeometry(QtCore.QRect(220, 140, 75, 23))
            self.pushButton_2.setObjectName(_fromUtf8("pushButton_2"))
     
            self.retranslateUi(Form)
            QtCore.QMetaObject.connectSlotsByName(Form)
     
        def retranslateUi(self, Form):
            Form.setWindowTitle(_translate("Form", "Class_wilayas", None))
            self.label.setText(_translate("Form", "Choisir la Wilaya :", None))
            self.BoxWilayas.setItemText(1, _translate("Form", "Adrar", None))
            self.BoxWilayas.setItemText(2, _translate("Form", "Chlef", None))
            self.BoxWilayas.setItemText(3, _translate("Form", "Laghouat", None))
            self.BoxWilayas.setItemText(4, _translate("Form", "Oum El Bouaghi", None))
            self.BoxWilayas.setItemText(5, _translate("Form", "Batna", None))
            self.BoxWilayas.setItemText(6, _translate("Form", "Béjaia", None))
            self.BoxWilayas.setItemText(7, _translate("Form", "Biskra", None))
            self.BoxWilayas.setItemText(8, _translate("Form", "Béchar", None))
            self.BoxWilayas.setItemText(9, _translate("Form", "Blida", None))
            self.BoxWilayas.setItemText(10, _translate("Form", "Bouira", None))
            self.label_2.setText(_translate("Form", "Mot de passe : ", None))
            self.pushButton.setText(_translate("Form", "Annuler ", None))
            self.pushButton_2.setText(_translate("Form", "Accéder", None))
     
     
    if __name__ == "__main__":
        import sys
        app = QtGui.QApplication(sys.argv)
        Form = QtGui.QWidget()
        ui = Ui_Form()
        ui.setupUi(Form)
        Form.show()
        sys.exit(app.exec_())

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 699
    Par défaut
    Salut,

    Citation Envoyé par noramokh Voir le message
    je me suis dit que le code est long, c'est pour ça je l'ai résumé.
    On dirait que vous travaillez sur les fichiers produits par QtDesigner.
    Si c'est le cas, les méthodes pour intégrer ces "scripts" dans votre application sont décrites ici.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Expert confirmé

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 305
    Par défaut
    Salut,

    Tu dois reproduire le code qui suit if __name__ == '__main__': de ton dialogue dans ton script principal.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
            # Ne plus utiliser de connexions "old style"
            self.menuWilayas.clicked.connect(self.display_dialog)
     
        def display_dialog(self):
            qw = QWidget()
            # On garde une référence par prudence
            self.form = Ui_Form()
            self.form.setupUi(Form)
            self.form.show()

  6. #6
    Membre confirmé
    Femme Profil pro
    étudiant master
    Inscrit en
    Février 2014
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : étudiant master

    Informations forums :
    Inscription : Février 2014
    Messages : 167
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Salut,

    Tu dois reproduire le code qui suit if __name__ == '__main__': de ton dialogue dans ton script principal.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
            # Ne plus utiliser de connexions "old style"
            self.menuWilayas.clicked.connect(self.display_dialog)
     
        def display_dialog(self):
            qw = QWidget()
            # On garde une référence par prudence
            self.form = Ui_Form()
            self.form.setupUi(Form)
            self.form.show()
    j'ai essayé avec ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    self.menuWilayas.aboutToShow.connect(self.display_dialog)
     
    et 
    def display_dialog(self):
     
            Form = QtGui.QWidget()
            # On garde une référence par prudence
            self.form = Ui_Form()
            self.form.setupUi(Form)
            Form.show()
    après l'exécution et un click sur le menu wilayas, le dialog s'affiche puis disparu (clignoter).

    RQ: avant, il m'a affiché une erreur que "clicked" n'est pas un attribut de Qmenu c'est pour cela je l'ai remplacé par "aboutToShow".

    merci

  7. #7
    Membre confirmé
    Femme Profil pro
    étudiant master
    Inscrit en
    Février 2014
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : étudiant master

    Informations forums :
    Inscription : Février 2014
    Messages : 167
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,



    On dirait que vous travaillez sur les fichiers produits par QtDesigner.
    Si c'est le cas, les méthodes pour intégrer ces "scripts" dans votre application sont décrites ici.

    - W
    merci W, je vais les voir dès que la connexion me permet.

  8. #8
    Expert confirmé

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 305
    Par défaut
    Oui, pour les menus ce n'est pas clicked() mais triggered().

    Par contre [/i]aboutToShow()[/i] ça n'a rien à voir, c'est un signal qui est émit avant l'affichage du menu.

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

Discussions similaires

  1. CORBA & PYTHON
    Par stan91stan dans le forum CORBA
    Réponses: 5
    Dernier message: 10/06/2004, 12h32
  2. module .so pour python... ?!
    Par totoetlititi dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 09/03/2004, 14h51
  3. [Lien]erreur dans mon programme python
    Par durnambule dans le forum Général Python
    Réponses: 11
    Dernier message: 29/01/2004, 14h59
  4. [Modularite][Compilation]Erreur...
    Par miss8 dans le forum C
    Réponses: 3
    Dernier message: 06/01/2003, 01h07

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