Bonjour
Malheureusement ma "moulinette" ne traite que les éléments que j'ai déjà repérés... et l'élément "QFrame.box" n'en fait pas (encore) partie.
Fort heureusement il y a aussi une autre "moulinette" (find_qt6) qui a un usage différent : on lui passe un élément Qt5 et il cherche tous les éléments Qt6 qui ont le même nom.
Voici l'autre moulinette
En l'appelant et en lui donnant "QFrame.box" il répond "QFrame.Shape.Box".
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
27
28
29
30 #!/usr/bin/env python3 # coding: utf-8 from PyQt6.QtCore import * from PyQt6.QtGui import * from PyQt6.QtWidgets import * def find(n, s): try: for attrib in dir(eval(n)): sss="%s.%s" % (n, attrib) try: for name in eval(sss)._member_names_: if s.lower() in name.lower(): yield "%s.%s" % (sss, name) # for except AttributeError: pass # for except NameError: pass # find() import sys for q in sys.argv[1:]: if "." not in q: continue if f:=tuple(find(*q.split("."))): print("%s (Qt5)" % q) for x in f: print("\t%s (Qt6)" % x) else: print("%s (Qt5): None" % q) print() # for
Donc en reprenant le code et en remplaçant tous les "xxx.box" par "xxx.Shape.box" (sans oublier aussi les "self.box" de l'objet "CheckBox" qui hérite d'un QFrame) et ça fonctionne nickel.
Et pour ma "moulinette" il suffit de rajouter le tuple ("box", "Shape.box") à la clef "QFrame" du dictionnaire "translate" et elle sera désormais capable de faire ça automatiquement (à l'exception des objets qui en héritent et dont l'accès se fait par "self" et qui donc ne sont malheureusement pas vus et donc pas traités). Je viens de la mettre à jour en ce sens.
Course de la reine rouge: quand tu n'auras plus de lib compatible PyQt5 il faudra bien que tu t'adaptes (et moi aussi)
Partager