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 :

Interface graphique [QtGui]


Sujet :

PyQt Python

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 130
    Points : 71
    Points
    71
    Par défaut Interface graphique
    Bonjour,

    j'utilise une interface graphique en PyQt4 pour activer des fonctions, voici le code:
    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
     
     
    import sys,os
    from Tkinter import *
    import tkFileDialog
    from PyQt4 import QtCore, QtGui
    from Carte_defaut import *
    from Traitements_image import *
    from fileopen import *
     
    h = 300
    l = 400
     
    class Frame(QtGui.QMainWindow):
        def __init__(self, parent=None):
            QtGui.QMainWindow.__init__(self, parent)
            self.resize(l,h)
            self.setFont(QtGui.QFont("Verdana"))
            self.setWindowTitle("Traitement données thermographie IR")
            try:
                self.setWindowIcon(QtGui.Icon("icon.jpg"))
            except:pass
     
            fen = QtGui.QDesktopWidget().screenGeometry()
            size = self.geometry()
            self.move((fen.width()-size.width())/2, (fen.height()-size.height())/2)
     
            self.statusBar().showMessage("Identification de la taille des défauts")
     
            menubar = self.menuBar() ## Création d'une barre de menu
            file_ = menubar.addMenu("Fichier") ## Ajout d'un menu.
     
            self.tabWidget = QtGui.QTabWidget(self)
            self.tabWidget.setGeometry(0,20,l,h-40)
     
            self.pnl_1 = QtGui.QWidget(self.tabWidget)
     
            self.pnl_2 = QtGui.QWidget(self)
            self.pnl_3 = QtGui.QWidget(self)
     
            self.tabWidget.addTab(self.pnl_1, "Courbe d'erreurs")
            self.tabWidget.addTab(self.pnl_2, "Lissage des points")
            self.tabWidget.addTab(self.pnl_3, "Seuillage des courbes")
     
            self.pnl_1.setPalette(QtGui.QPalette(QtGui.QColor("white")))
            self.pnl_1.setAutoFillBackground(True)
            self.pnl_2.setPalette(QtGui.QPalette(QtGui.QColor("white")))
            self.pnl_2.setAutoFillBackground(True)
            self.pnl_3.setPalette(QtGui.QPalette(QtGui.QColor("white")))
            self.pnl_3.setAutoFillBackground(True)
     
            self.gene = QtGui.QPushButton("Carte temperature 3D (points)", self.pnl_1)
            self.gene.move(110, 100)
            self.gene.clicked.connect(Carte_erreur_P)
     
            self.gene = QtGui.QPushButton("Carte temperature 2D (couleur)", self.pnl_1)
            self.gene.move(110, 50)
            self.gene.clicked.connect(Carte_erreur_C)
     
            self.gene = QtGui.QPushButton("Carte temperature 2D (niveau de gris)", self.pnl_3)
            self.gene.move(110, 50)
            self.gene.clicked.connect(Carte_erreur_NB)
     
            self.gene = QtGui.QPushButton("Seuillage", self.pnl_3)
            self.gene.move(110, 150)
            self.gene.clicked.connect(Seuillage)
     
            self.gene = QtGui.QPushButton("Dilatation", self.pnl_3)
            self.gene.move(110, 100)
            self.gene.clicked.connect(DilatationImg)
     
            self.gene = QtGui.QPushButton("Dilatation et seuillage", self.pnl_3)
            self.gene.move(110, 200)
            self.gene.clicked.connect(DilatationSeuillage)
     
    app = QtGui.QApplication(sys.argv)
    frame = Frame()
    frame.show()
    sys.exit(app.exec_())
    Ce code marche très bien mais uniquement pour une utilisation (pour 1 clic sur 1 bouton).
    Est ce que quelqu'un connaitrait la ligne de code qui me permettrait d'utiliser l'interface graphique à volonté sans avoir à relancer le programme pour activer plusieurs boutons (donc plusieurs fonctions mais une après l'autre).

    Merci d'avance.
    Cordialement.

  2. #2
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Comme ceci, ça fonctionne très bien chez moi, Ubuntu 10.04

    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
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
     
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
     
    import sys, os
    from PyQt4 import QtCore, QtGui
    #from Carte_defaut import *
    #from Traitements_image import *
    #from fileopen import *
     
    h = 300
    l = 400
     
    class Frame(QtGui.QMainWindow):
        def __init__(self, parent=None):
            QtGui.QMainWindow.__init__(self, parent)
            self.resize(l,h)
            self.setFont(QtGui.QFont("Verdana"))
            self.setWindowTitle("Traitement données thermographie IR")
            try:
                self.setWindowIcon(QtGui.Icon("icon.jpg"))
            except:pass
     
            fen = QtGui.QDesktopWidget().screenGeometry()
            size = self.geometry()
            self.move((fen.width()-size.width())/2, (fen.height()-size.height())/2)
     
            self.statusBar().showMessage("Identification de la taille des défauts")
     
            menubar = self.menuBar() ## Création d'une barre de menu
            file_ = menubar.addMenu("Fichier") ## Ajout d'un menu.
     
            self.tabWidget = QtGui.QTabWidget(self)
            self.tabWidget.setGeometry(0,20,l,h-40)
     
            self.pnl_1 = QtGui.QWidget(self.tabWidget)
     
            self.pnl_2 = QtGui.QWidget(self)
            self.pnl_3 = QtGui.QWidget(self)
     
            self.tabWidget.addTab(self.pnl_1, "Courbe d'erreurs")
            self.tabWidget.addTab(self.pnl_2, "Lissage des points")
            self.tabWidget.addTab(self.pnl_3, "Seuillage des courbes")
     
            self.pnl_1.setPalette(QtGui.QPalette(QtGui.QColor("white")))
            self.pnl_1.setAutoFillBackground(True)
            self.pnl_2.setPalette(QtGui.QPalette(QtGui.QColor("white")))
            self.pnl_2.setAutoFillBackground(True)
            self.pnl_3.setPalette(QtGui.QPalette(QtGui.QColor("white")))
            self.pnl_3.setAutoFillBackground(True)
     
            self.gene = QtGui.QPushButton("Carte temperature 3D (points)", self.pnl_1)
            self.gene.move(110, 100)
            self.gene.clicked.connect(Carte_erreur_P)
     
            self.gene = QtGui.QPushButton("Carte temperature 2D (couleur)", self.pnl_1)
            self.gene.move(110, 50)
            self.gene.clicked.connect(Carte_erreur_C)
     
            self.gene = QtGui.QPushButton("Carte temperature 2D (niveau de gris)", self.pnl_3)
            self.gene.move(110, 50)
            self.gene.clicked.connect(Carte_erreur_NB)
     
            self.gene = QtGui.QPushButton("Seuillage", self.pnl_3)
            self.gene.move(110, 150)
            self.gene.clicked.connect(Seuillage)
     
            self.gene = QtGui.QPushButton("Dilatation", self.pnl_3)
            self.gene.move(110, 100)
            self.gene.clicked.connect(DilatationImg)
     
            self.gene = QtGui.QPushButton("Dilatation et seuillage", self.pnl_3)
            self.gene.move(110, 200)
            self.gene.clicked.connect(DilatationSeuillage)
     
    def Carte_erreur_P():
        print "Carte_erreur_P"
     
    def Carte_erreur_C():
        print "Carte_erreur_C"
     
    def Carte_erreur_NB():
        print "Carte_erreur_NB"
     
    def Seuillage():
        print "Seuillage"
     
    def DilatationImg():
        print "DilatationImg"
     
    def DilatationSeuillage():
        print "DilatationSeuillage"
     
     
    if __name__ == '__main__':
        app = QtGui.QApplication(sys.argv)
        frame = Frame()
        frame.show()
        sys.exit(app.exec_())
    J'ai supprimé les import TKinter, inutiles et j'ai remplacé les classes que je n'ai pas par des fonctions et tout se comporte comme attendu.


    Un conseil, utilise les layouts, ta fenêtre n'est pas redimensionnable, et cela te facilitera le travail lors d'ajout de nouveaux widgets.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 130
    Points : 71
    Points
    71
    Par défaut
    Merci beaucoup, ça marche très bien avec ta solution.

    Cordialement.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/03/2004, 18h29
  2. interface graphique utilisateur, que faut-il utiliser?
    Par Missvan dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 01/03/2004, 12h18
  3. Application multiplateforme avec interface graphique
    Par TNorth dans le forum Choisir un environnement de développement
    Réponses: 2
    Dernier message: 31/01/2004, 18h55
  4. [Kylix] Interface graphique pour lognes de commande linux
    Par lecharcutierdelinux dans le forum EDI
    Réponses: 6
    Dernier message: 29/08/2003, 10h20
  5. plugin interface graphique
    Par jocelyn dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 13/08/2003, 09h49

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