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 :

PyQt5: QString disparues ? [QtCore]


Sujet :

PyQt Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    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 830
    Billets dans le blog
    1
    Par défaut PyQt5: QString disparues ?
    Bonjour à tous

    Ayant décidé de franchir le pas, j'ai compilé Qt5 et PyQt5 (sous Python2).

    Et là, je fais quelques tests avec divers exemples PyQt4 et il semble que les QString aient disparues, remplacées par des unicode natifs Python. Quelqu'un confirme ???

    Merci à tous
    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]

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 736
    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 736
    Par défaut
    Salut,

    PyQt avec ou sans QString est une décision du développement de PyQt qui préfère utiliser le type de base "str" sur la version 3. Cela existait dans les dernières versions de PyQt4 qui étaient disponibles sur les environnements Python2 et Python3... et n'est pas spécifique à PyQt5.
    Ceux qui, pour des raisons x ou y ne le souhaitent pas, peuvent le changer via sip. (et çà devrait aussi fonctionner pour PyQt5 mais je vous le laisse tester).

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

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    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 830
    Billets dans le blog
    1
    Par défaut
    Merci de la réponse.

    Je présume qu'il vaut mieux suivre la mouvance plutôt que de la refuser. Je vais donc partir sur une adaptation et supprimer mes QString de mes codes.

    Toutefois un souci se dessine déjà: la traduction. En effet, j'utilisais à fond le QCoreApplication.translate et le ".arg()", avec parfois des "QCoreApplication.translate(...).arg(QCoreApplication.translate(...))" lorsque les messages se compliquaient.

    Un petit exemple
    Old style PyQt4 (avec les QString présentes)
    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
    self.statusBar().showMessage(
    	QCoreApplication.translate(
    		"VerifQt",
    		"Qt version %1, SIP version %2 et PyQt version %3",
    		"Note: barre d'état",
    		QCoreApplication.UnicodeUTF8,
    	).arg(
    		QT_VERSION_STR
    	).arg(
    		SIP_VERSION_STR
    	).arg(
    		PYQT_VERSION_STR
    	)
    )

    New style PyQt5 avec les strings Python (enfin si je ne me trompe pas dans la façon de changer le truc)...
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    self.statusBar().showMessage(
    	QCoreApplication.translate(
    		"VerifQt",
    		"Qt version %s, SIP version %s et PyQt version %s" % (
    			QT_VERSION_STR,
    			SIP_VERSION_STR,
    			PYQT_VERSION_STR,
    		),
    		"Note: barre d'état",
    	)
    )

    Or je ne sais pas comment va se comporter l'outil de traduction avec cette façon d'écrire les chaines avec argument mais déjà un premier test avec pylupdate5 n'a pas réussi car il n'a pas trouvé cette chaine. Je sens que j'ai raté un truc...
    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]

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 736
    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 736
    Par défaut
    Salut,

    Les QString (et d'autres objets) disparaissent avec Python3.
    Si vous voulez rester avec Python 2, çà serait mieux de les garder.

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

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    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 830
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Si vous voulez rester avec Python 2, çà serait mieux de les garder.
    Hélas j'aurais bien aimé (quand je vois tous les endroits où je l'utilise !!!) mais je viens de voir ici que la QString n'est plus portée sous PyQt5.
    Accessoirement l'un des deux auteurs de ce livre est aussi un des responsables de ce forum...

    D'ailleurs cet exemple (pris à partir du votre sur le lien sip)...
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    import sip
    sip.setapi("QString", 1)
     
    from PyQt5.QtCore import *
    print sip.getapi("QString")
    fonctionne sous PyQt4 mais pas sous PyQt5 => QString inconnue.

    Mais j'ai trouvé comment réécrire mes translates avec paramètre. En effet, cette écriture...
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    QCoreApplication.translate(
    	"VerifQt",
    	"Qt version %s, SIP version %s et PyQt version %s" % (
    		QT_VERSION_STR,
    		SIP_VERSION_STR,
    		PYQT_VERSION_STR,
    	),
    	"Note: barre d'état",
    )
    ... ne fonctionne pas. C'est celle-là...
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    QCoreApplication.translate(
    	"VerifQt",
    	"Qt version %s, SIP version %s et PyQt version %s",
    	"Note: barre d'état",
    ) % (
    	QT_VERSION_STR,
    	SIP_VERSION_STR,
    	PYQT_VERSION_STR,
    )
    ... qu'il faut utiliser.
    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]

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 736
    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 736
    Par défaut
    Salut,

    Citation Envoyé par Sve@r Voir le message
    Hélas j'aurais bien aimé (quand je vois tous les endroits où je l'utilise !!!) mais je viens de voir ici que la QString n'est plus portée sous PyQt5.
    Accessoirement l'un des deux auteurs de ce livre est aussi un des responsables de ce forum...
    hu?!? il faut se méfier de ce que racontent ceux qui ont rencontré celui qui a vu l'ours. En programmation, la vérité est dans les sources et éventuellement dans les releases notes. C'est ici pour ce cas particulier.

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

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

Discussions similaires

  1. newbie: pbm de table disparue
    Par marcoclosset dans le forum Access
    Réponses: 8
    Dernier message: 15/09/2005, 15h46
  2. conversion en QString
    Par transistor49 dans le forum C++
    Réponses: 5
    Dernier message: 08/03/2005, 13h52
  3. une partie du code a disparu
    Par recup dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 08/03/2005, 10h08
  4. [3.0] la javadoc a disparu :(
    Par gromite dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 04/01/2005, 18h02
  5. [DEBUTANT] Fenêtre console disparue.
    Par gc243 dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 14/12/2004, 17h17

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