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 :

Executer un fichier _ui.py lorsque l'on a que la fenetre par Qt Designer


Sujet :

PyQt Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2019
    Messages : 12
    Par défaut Executer un fichier _ui.py lorsque l'on a que la fenetre par Qt Designer
    Bonjour ,

    mon fichier crée sur Qt Designer affichant une boîte de dialogue est maintenant opérationnel, et je souhaiterai avoir un code python qui lancerait cette
    boîte de dialogue , car j'ai un fichier .py qui lance la boite de dialogue , cependant aucun boutons ne marchent car je ne sais pas comment définir les actions sur python.

    Merci pour votre aide, je joint le fichier XML convertit en python ici .sal3mfinal_ui.py

  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
    Salut,

    C'est précisément dans le fichier .py qui lance la boîte de dialogue que tu dois faire les connexions des signaux des widgets.

    Et pas dans le fichier .ui (même convertit en .py)

    Parce que je me demande si tu as une notion de ce que ceci veut dire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            self.doubleSpinBox_5.valueChanged['double'].connect(self.doubleSpinBox_5.setValue)
    et c'est comme ça pour tous tes widgets.

    Un conseil: ne pas créer les connexions avec le Designer.

  3. #3
    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,

    Il faut importer ce fichier .py issu de QtDesigner dans le programme.

    Voilà un code mini qui montre comment on peut faire:

    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
    # -*- coding: utf-8 -*-
     
    import sys
    from PyQt5 import QtWidgets
     
    from programme_ui import Ui_Form
     
    #############################################################################
    class Fenetre(QtWidgets.QWidget):
     
        def __init__(self, parent=None):
            super(Fenetre, self).__init__(parent)
            self.ui = Ui_Form()
            self.ui.setupUi(self)
            #
            # suite
            #
     
    #############################################################################
    if __name__ == "__main__":
        app = QtWidgets.QApplication(sys.argv)
        fen = Fenetre()
        fen.show()
        sys.exit(app.exec_())
    En faisant comme ça, tous les widgets définis dans le Designer pourront être accessibles dans la classe Fenetre avec "self.ui.nomduwidget..."

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2019
    Messages : 12
    Par défaut Definir les widgets/Signaux dans le .py
    salut à vous ,

    maintenant que j'ai établis tout les signaux, sur qtdesigner, je pense que je vais inclure mon _ui.py dans mon programme .py via la "formule " : from ****.ui import Ui_Dialog , cela dans mon fichier .py comme tyrtamos m'a recommandé, ensuite
    il me restera à definir les differents widgets/signaux utilisés , non ?
    je me lance au boulot , je vais m'inspirer du bout de code de Tyrtamos et je reviens vers vous

    merci

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2019
    Messages : 12
    Par défaut Passage de python 2 à python 3
    Re,

    je suis sur une machine pas très commode qui m'oblige à utiliser maintenant python 3 si je veux utiliser PyQt5 ( car je ne l'avais pas Tyrtamos , j'etais sous PyQt4 , donc maintenant je suis sous Python 3 et Pyqt5 )

    Le problème est que maintenant, dois-je modifier mon fichier _ui.py precedemment mis sur le forum ? (premier post) (car c'etait sous PyQt5 mais sous python 2 .) et passer le _ui.py sous python 3 ?

    Ton code fonctionne toujours tyrtamos sous python 3 et PyQt5 ? ( car il me semble que c'est du python 2) pour résumer, si je veux utiliser PyQt5 il faut que je sois sous python 3 .

    comment je dois faire ? (j'espère avoir été claire)

    merci pour votre précieuse aide.

  6. #6
    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
    Tu utilises Python3 PyQt5.

    Pour convertir ton fichier .ui en .py tu utiliseras "pyuic5 mon.ui -o mon.py"

    Mais si tu ne supprimes pas les connexions de signaux que tu as créés avec le Designer ça ne fonctionnera pas.

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2019
    Messages : 12
    Par défaut Suppression signaux qtdesigner
    Bonjour , oui c'est déja fait Vinss
    pourquoi je ne peux pas utiliser QtDesigner pour établir les signaux entre les boutons et ensuite les définir sur mon fichier python ( car à la main cela risque d'etre tres long vu le nombre de signaux qu'il y a )
    ( qui importera mon fichier ui) ?

    deuxieme question :
    la question est : le programme precedent de Tyrtamos est possible sur python 3 ?

  8. #8
    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
    Le problème c'est que ton code contient plus d'une vingtaine de choses dans ce genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    self.checkBox_2.stateChanged['int'].connect(self.checkBox_2.click)
    et qui n'ont aucun sens.

    Et, pire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            self.pushButton_4.clicked.connect(Dialog.accept)
            self.pushButton_5.clicked.connect(Dialog.reject)
            self.pushButton_2.clicked.connect(Dialog.accept)
            self.pushButton_6.clicked.connect(Dialog.reject)
            self.pushButton_7.clicked.connect(Dialog.accept)
            self.pushButton_8.clicked.connect(Dialog.reject)
    Si tu as placé ces boutons c'est pour les utiliser à quelque chose or Dialog.accept et Dialog.reject vont immédiatement fermer ton dialogue !

  9. #9
    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
    Bon, je viens de tester de cette manière:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ... skip
            self.checkBox.stateChanged['int'].connect(self.onCheckChanged)
     
        def onCheckChanged(self, state):
            print("checked: %s" % state)
            self.checkBox.click()
    et comme prévu le click() entraine un changement de l'état du checkBox qui entraîne un nouveau signal qui entraîne ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Traceback (most recent call last):
      File "test.py", line 33, in onCheckChanged
        print("checked: %s" % state)
    RecursionError: maximum recursion depth exceeded while calling a Python object

  10. #10
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2019
    Messages : 12
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Le problème c'est que ton code contient plus d'une vingtaine de choses dans ce genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    self.checkBox_2.stateChanged['int'].connect(self.checkBox_2.click)
    et qui n'ont aucun sens.

    Et, pire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            self.pushButton_4.clicked.connect(Dialog.accept)
            self.pushButton_5.clicked.connect(Dialog.reject)
            self.pushButton_2.clicked.connect(Dialog.accept)
            self.pushButton_6.clicked.connect(Dialog.reject)
            self.pushButton_7.clicked.connect(Dialog.accept)
            self.pushButton_8.clicked.connect(Dialog.reject)
    Si tu as placé ces boutons c'est pour les utiliser à quelque chose or Dialog.accept et Dialog.reject vont immédiatement fermer ton dialogue !

    ces boutons là avec ces connexions ce sont juste des boutons "Ok" et "Cancel" c'est pour ça ^^" , je me mets au boulot et je t'envoie ça au plus vite .
    Le problème c'est que je ne pense pas que tout mes "def" de programme seront juste notamment pour la fonction browse qui vise à afficher dans la QlineEdit le nom du fichier appelé.
    et celui ou tu augmentes les valeurs via la DoubleSpinBox .

    à toute à l'heure merci pour ton aide précieuse.

Discussions similaires

  1. [C#] Executer un fichier .SQL
    Par Thomas Lebrun dans le forum Accès aux données
    Réponses: 6
    Dernier message: 28/07/2009, 08h53
  2. [DB2] executer un fichier sql
    Par meufeu dans le forum DB2
    Réponses: 7
    Dernier message: 10/01/2009, 15h47
  3. Executer un fichier script sql
    Par richard038 dans le forum Bases de données
    Réponses: 3
    Dernier message: 27/10/2005, 17h12
  4. Execution / include fichier html
    Par VoLc0m dans le forum ASP
    Réponses: 12
    Dernier message: 20/05/2005, 11h29
  5. Executer un fichier zip
    Par Sébastien THEVOT dans le forum C++Builder
    Réponses: 15
    Dernier message: 11/10/2004, 10h35

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