#!/usr/bin/python3 # -*- coding: utf-8 -*- # Python 3 """ permet d'ajouter les modules en préfixe aux classes Qt5 trouvées dans le code Exemple: 'QLineEdit' remplacé par 'QtWidgets.QLineEdit' nécessite l'importation de 'pyqt5_classes.py' """ import re from pyqt5_classes import MODULESQT5, CLASSESQT5 ############################################################################# class Remplacement(object): def __init__(self, numgroup): self.numgroup = numgroup def __call__(self, g): deb = g.start(self.numgroup) fin = g.end(self.numgroup) mot = g.group(self.numgroup) print("--->", deb, fin, mot) if mot in MODULESQT5: # c'est un module: on ne fait aucun remplacement return g.group(0) else: # on cherche dans la liste des classes filtre = [elem[1] for elem in CLASSESQT5 if elem[0]==mot] if filtre==[]: print("Problème: mot non trouvé dans les classes=", mot) return g.group(0) else: modul = filtre[0] return g.group(0).replace(mot, modul+'.'+mot) ############################################################################# # recherche de tous les mots commençant par 'Q' motif = r"(^|[^a-zA-Z0-9_])(Q[a-zA-Z0-9_]*)" numgroup = 2 # numéro de groupe dépend du motif (=ordre des parenthèses) remplacement = Remplacement(numgroup) regex = re.compile(motif) fsrce = "Qtesseract.py" # fichier source à traiter fdest = "Qtesseract2.py" # fichier destination qui enregistre le code traité with open(fsrce, 'r', encoding='utf-8') as fs, open(fdest, 'w', encoding='utf-8') as fd: for i, ligne in enumerate(fs): ligne = ligne.rstrip() ligne = regex.sub(remplacement, ligne) fd.write(ligne + '\n')