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 :

Chemin relatif pour les images


Sujet :

PyQt Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 105
    Par défaut Chemin relatif pour les images
    Bonjour,
    J'utilise qt designer et pyqt6.
    Quand je mets une image avec qtdesigner (label et pixmap) le chemin dans le fichier UI est relatif et si j'utilise un fichier ressource il est déclaré mais quand je transforme ce fichier avec pyuic le chemin devient absolu ou si j'ai utilisé un fichier ressource le fichier n'est pas déclaré.
    Je fais qqc de mal ?
    Comment solutionner cela.
    Merci d'avance.

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par knarf44 Voir le message
    Je fais qqc de mal ?
    Désolé je ne suis pas encore passé à PyQt6 mais sous PyQt5, mes chemins relatifs restent en relatif

    Exemple: fichier "untitled.ui"
    Code xml : 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
    <?xml version="1.0" encoding="UTF-8"?>
    <ui version="4.0">
     <class>Form</class>
     <widget class="QWidget" name="Form">
      <property name="geometry">
       <rect>
        <x>0</x>
        <y>0</y>
        <width>575</width>
        <height>531</height>
       </rect>
      </property>
      <property name="windowTitle">
       <string>Form</string>
      </property>
      <widget class="QLabel" name="label">
       <property name="geometry">
        <rect>
         <x>230</x>
         <y>90</y>
         <width>291</width>
         <height>281</height>
        </rect>
       </property>
       <property name="text">
        <string/>
       </property>
       <property name="pixmap">
        <pixmap>Logo.jpg</pixmap>
       </property>
      </widget>
     </widget>
     <resources/>
     <connections/>
    </ui>

    Et quand je le passe via pyuic5...
    Code python : 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
    # -*- coding: utf-8 -*-
     
    # Form implementation generated from reading ui file 'untitled.ui'
    #
    # Created by: PyQt5 UI code generator 5.11.3
    #
    # WARNING! All changes made in this file will be lost!
     
    from PyQt5 import QtCore, QtGui, QtWidgets
     
    class Ui_Form(object):
        def setupUi(self, Form):
            Form.setObjectName("Form")
            Form.resize(575, 531)
            self.label = QtWidgets.QLabel(Form)
            self.label.setGeometry(QtCore.QRect(230, 90, 291, 281))
            self.label.setText("")
            self.label.setPixmap(QtGui.QPixmap("Logo.jpg"))
            self.label.setObjectName("label")
     
            self.retranslateUi(Form)
            QtCore.QMetaObject.connectSlotsByName(Form)
     
        def retranslateUi(self, Form):
            _translate = QtCore.QCoreApplication.translate
            Form.setWindowTitle(_translate("Form", "Form"))
    L'image nommée "Logo.jpg" est bien restée en relatif...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

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

    Je suis surpris, pyuic utilise le fichier ui, si le chemin est relatif dans le fichier ui, pyuic ne peut pas le transformer en chemin absolu. Cette donnée lui est inconnue.

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Cette donnée lui est inconnue.
    Elle peut se retrouver par rapport à l'endroit où on se trouve (os.path.abspath() sait parfaitement le faire en éliminant même les déplacements inutiles style "toto/../." alors que le dossier "toto" n'existe pas). Mais je suis d'accord ça reste étonnant qu'il fasse ce travail inutile d'une part et surtout qui va au final pourrir la vie de beaucoup de dev...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 105
    Par défaut
    Je pense que c'est ça il fait avec os.path.
    Je vais tester avec pyuic5 pour voir et, le cas échéant signaler le bug.

    Ma ligne de commande est celle-ci : pyuic6 --execute -o file.py vous avez autre choses avec le 5 ?

    J'ai vu que le 4 avait une option (--from-imports) pour les chemins relatifs mais je ne vois pas cette option dans le 6.

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par knarf44 Voir le message
    Je pense que c'est ça il fait avec os.path.
    Comme je l'ai dit, ce n'est pas parce qu'on peut faire un truc que pyuic le fait. Surtout quand ce truc fout le bordel. Quoi qu'il en soit, tu vois bien que dans mon exemple le logo reste en relatif. Pourquoi ne le testes-tu pas chez-toi ??? C'est un peu pour ça que je t'ai filé le code du ui !!!

    Citation Envoyé par knarf44 Voir le message
    Ma ligne de commande est celle-ci : pyuic6 --execute -o file.py vous avez autre choses avec le 5 ?
    Pareil (au chiffre près). Sauf que je ne met pas l'option "--execute" qui ne fait que rajouter un bloc if __name__ == "__main__" à la fin permettant d'exécuter directement le code généré pour voir le résultat.

    Citation Envoyé par knarf44 Voir le message
    J'ai vu que le 4 avait une option (--from-imports) pour les chemins relatifs mais je ne vois pas cette option dans le 6.
    Elle y est aussi dans le 5 mais ne concerne que les imports. Si elle n'existe plus dans le 6 c'est probablement parce que le 6 est compatible P3 seulement et dans cette version les imports sont en absolu.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. [Python 3.X] Chemin relatif pour charger une image
    Par gadjjj dans le forum Programmation multimédia/Jeux
    Réponses: 5
    Dernier message: 10/09/2021, 17h02
  2. Réponses: 4
    Dernier message: 30/06/2009, 11h36
  3. Chemin relatif pour des images dans formulaire
    Par Marcopololo dans le forum IHM
    Réponses: 3
    Dernier message: 23/07/2008, 04h50
  4. []filtre sepia pour les images
    Par nabil dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 27/01/2004, 20h41
  5. Des fonctions OGL pour les images de format usuel ?
    Par jamal24 dans le forum OpenGL
    Réponses: 3
    Dernier message: 31/05/2003, 21h59

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