Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 30/08/2022, à 14:35

Ansuz

"AttributeError" sous Python 3

Bonjour,

J'utilise un plugin 'perso' dans calibre (v4.23, dernière version compatible python 2) depuis des années sans souci. (Ubuntu 20.04 & python 2)
Depuis que j'ai migré vers Ubuntu 22.04.1 et calibre 6.3, j'ai dû procéder à la réécriture du plugin en python 3 via 2to3.
Cependant, au lancement de ce dernier, j'obtiens ceci dans la console :

calibre 6.3  embedded-python: True
Linux-5.15.0-46-generic-x86_64-with-glibc2.35 Linux ('64bit', 'ELF')
('Linux', '5.15.0-46-generic', '#49-Ubuntu SMP Thu Aug 4 18:03:25 UTC 2022')
Python 3.10.1
Interface language: fr
Successfully initialized third party plugins: Perso (1, 2, 4)
Traceback (most recent call last):
  File "calibre_plugins.perso.ui", line 80, in show_dialog
    d = PL(self.gui, self.qaction.icon(), bookqueue, self.plugin_path)
  File "calibre_plugins.perso.dialogue", line 34, in __init__
    self.setupUi(self)
  File "calibre_plugins.perso.main_ui", line 31, in setupUi
    self.icon.addPixmap(QPixmap("resources/PL128.png"), QIcon.Off, QIcon.Normal)
AttributeError: type object 'QIcon' has no attribute 'Off'

A priori, il y a trois erreurs que je ne parviens pas à corriger malgré mes nombreuses recherches, lectures et tentatives infructueuses. En effet, je suis totalement novice en programmation python...
Des conseils avisés et solutions seraient les bienvenus.

Merci par avance pour votre aide.


"Mieux vaut ne rien savoir que beaucoup savoir à moitié !"  Friedrich Nietzsche

Hors ligne

#2 Le 31/08/2022, à 12:48

kamaris

Re : "AttributeError" sous Python 3

Apparemment QIcon n'a plus d'attribut Off, ou il n'est plus public.
C'est une mise à jour de Qt qui a dû casser ça.

Hors ligne

#3 Le 31/08/2022, à 14:09

Ansuz

Re : "AttributeError" sous Python 3

Salut kamaris,

D'abord, merci pour ton aide.
J'ai tenté d'inverser QIcon.Off avec QIcon.Normal pour voir : j'obtiens le même message que ci-dessus avec " no attribute 'Normal' " à la place (le premier qui est lu).
Ensuite, j'ai regardé dans synaptic, tous les paquets sont à jour.

Je suis sous Qt 5.
Que puis-je faire d'autre ?


"Mieux vaut ne rien savoir que beaucoup savoir à moitié !"  Friedrich Nietzsche

Hors ligne

#4 Le 31/08/2022, à 15:17

kamaris

Re : "AttributeError" sous Python 3

Je ne programme pas en python habituellement, et je n'utilise pas non plus Qt, donc j'ai dit ce qui précède en regardant vite fait le message d'erreur et en supposant que ton code fonctionnait avant mise à jour.
Mais en regardant la doc de QIcon::addPixmap, je ne vois pas trop comment ce code pourrait fonctionner.
Il semble effectivement y avoir inversion des deux paramètres qui posent problème, et il ne devraient pas être renseignés comme ça.
De plus, il semble que tu veuilles simplement utiliser les valeurs par défaut pour ces paramètres, donc au final je crois que tu pourrais simplement faire

self.icon.addPixmap(QPixmap("resources/PL128.png"))

EDIT: la doc pour python est peut-être plutôt celle-là : https://doc.qt.io/qtforpython-5/PySide2 … QIcon.html

Dernière modification par kamaris (Le 31/08/2022, à 15:24)

Hors ligne