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 :

essai interface


Sujet :

PyQt Python

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 70
    Par défaut essai interface
    Bonjour,

    J'ai essayé de créer une interface qui permette d'ouvrir une image dans une fenêtre et je je n'arrive pas à finir ce programme car l’interpréteur me dit qu'il n'a pas le nom "fenetre" de défini pourtant c'est le nom de ma class de départ, je me suis dit que mon problème venait de la partie __init__ mais je ne vois vraiment pas où. Je ne suis pas sur de maitriser encore totalement les outils Qwidgets, merci d'avance pour votre réponse.

    Mon programme python en pièce jointe
    Fichiers attachés Fichiers attachés

  2. #2
    Membre chevronné
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 514
    Par défaut
    erreur d'indentation j'imagine, je ne suis pas sur que main doit être une méthode de classe. (je suis sur mobile, pas pratique)

  3. #3
    Expert confirmé

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

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

    Tu as deux QApplication déclarées, on ne peut en déclarer qu'une, au tout début de préférence.

    Il n'est pas normal de trouver ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    	def main():
    		app = QApplication(sys.argv)
    		ex = fenetre(QWidget)
    		fenetre.show()
    		sys.exit(app.exec_())
     
    	if __name__ == '__main__':
    		main()
    ... à l'intérieur de ta classe !

    Ceci est suspect aussi: super(self, changcanal).__init__(parent) ceci: super().__init__(parent) est tout à fait suffisant.

    Je n'ai pas tout regardé ....

  4. #4
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    J'ai essayé de corriger ton code, mais il y a beaucoup trop de choses à revoir.

    Essaie de faire d'abord une fenêtre toute simple et enrichie-là progressivement.

    Voilà un exemple minimum (Python v3.5 et PyQt5 v5.9):

    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
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
     
    import sys
    from PyQt5 import (QtWidgets, QtCore)
     
    #############################################################################
    class Fenetre(QtWidgets.QWidget):
     
        #========================================================================
        def __init__(self, parent=None):
            super().__init__(parent)
     
            self.resize(300, 200)
            self.setWindowTitle("Exemple de fenêtre")
     
            self.bouton1 = QtWidgets.QPushButton("bouton 1", self)
            self.bouton1.clicked.connect(self.clictest1)
     
            self.bouton2 = QtWidgets.QPushButton("bouton 2", self)
            self.bouton2.clicked.connect(self.clictest2)
     
            posit = QtWidgets.QGridLayout()
            posit.addWidget(self.bouton1, 0, 0)
            posit.addWidget(self.bouton2, 1, 0)
            self.setLayout(posit)
     
        #========================================================================
        def clictest1(self):
            QtWidgets.QMessageBox.information(self, 
                "Information", 
                "Click bouton 1!")
     
        #========================================================================
        def clictest2(self):
            QtWidgets.QMessageBox.information(self, 
                "Information", 
                "Click bouton 2!")
     
    #############################################################################
    if __name__ == "__main__":
        app = QtWidgets.QApplication(sys.argv)
        fen = Fenetre()
        fen.show()
        sys.exit(app.exec_())

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 70
    Par défaut
    Merci pour vos réponses, elles vont m'aider.

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 70
    Par défaut
    Bon, en fait, un autre problème c'est posé, j'ai essayé de faire plus simple en m'inspirant de ton code, tyrtamos, mais quand j'essaye de le lancer (ton code marche) mon code, lui ne marchent pas et il me dit que le QPushButton n'est pas défini, j'ai pourtant garder les même lignes que toi pour le définir
    Fichiers attachés Fichiers attachés

  7. #7
    Membre très actif

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Billets dans le blog
    1
    Par défaut
    Salut.

    Toi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.buttonCharg = QPushButton('Charger')
    tyrtamos :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.bouton1 = QtWidgets.QPushButton("bouton 1", self)
    Tu ne vois pas la différence ?

    QPushButton est une classe faisant partie du module QtWidgets.

    Et il faudra corriger toutes les erreurs du même type dans ton script, car il y en a un paquet.

  8. #8
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 70
    Par défaut
    Oui, en effet, merci, c'est modifié, c'est vrai que c'est évident.

    J'ai une question sur la signification de self.path, je pense qu'il fait planter le programme car mon programme plante quand j'essaye de cliquer sur le bouton charger
    Fichiers attachés Fichiers attachés

  9. #9
    Membre très actif

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Billets dans le blog
    1
    Par défaut
    Qu'est censé être self.image ?

    Car il est là ton problème, mon petit doigt me dit que ce n'est pas self.image que tu dois utiliser mais ton self.pixmap que tu utilises plus loin, mais évidemment non déclaré aussi.

    Ici : https://pythonspot.com/pyqt5-image/
    C'est exactement ce que tu cherches à faire.

  10. #10
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 70
    Par défaut
    Merci pour le lien,

    Concernant la définition de la classe fenêtre; j'ai un petit soucis encore, il m'affirme ne vouloir recevoir que deux arguments pourtant, je n'ai rentré que QtWidgets et QtGui

    essai-interface(1) 1 zuihao.py

  11. #11
    Membre chevronné
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 514
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class Fenetre(QtWidgets,QtGui):
    tu dis à python que ta classe Fenetre hérite de QtWidgets et QtGui...
    Si tu veux passer des arguments à ta classe Fenêtre c'est dans le init(self, arg1, arg2, ...) que ca se passe.

  12. #12
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 70
    Par défaut
    Bon, en fait, j'ai complétement changé de logique, enfin plus ou moins. En fait, je cherche a changer l'image que je viens de charger via une autre image enregistrer sous le nom de "image1.tif"

    j'ai essayé ce bout de code, mais je ne suis pas sur que ça suffise


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        def finale(self):
            pixmap = QPixmap('image1.tif')
    je remet, le programme complet en pièce jointe
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/04/2015, 10h04
  2. J'essaie d'utiliser JNI (Java Native Interface)
    Par GérardMartinelli dans le forum Entrée/Sortie
    Réponses: 8
    Dernier message: 03/12/2010, 14h35
  3. [VB6] [Interface] ComboBox à plusieurs colonnes
    Par mtl dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 30/03/2004, 17h35
  4. [VB6] [Interface] Horloge 7 segments
    Par selenay dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 07/10/2002, 16h15
  5. interface utilisateur avec OpenGL
    Par demis20 dans le forum OpenGL
    Réponses: 6
    Dernier message: 03/10/2002, 12h27

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