Avec Python3 et PyQt5.10.

Bonjour à Tous,

Dans le code ci dessous, je voudrais ouvrir une page html et pointer directement vers l'ancre voulue, puis pouvoir cliquer sur un lien contenu dans la page qui ouvre un fichier texte

METHOD1: J'arrive à ouvrir la page html, puis à suivre le lien vers le fichier texte qui s'ouvre correctement et remplace la page html. Par contre la page html ne scrool pas vers l'ancre voulue, le code javascript ne fait rien.
METHOD2: Je ne parvient pas à cliquer sur un lien, si la page en contient. Je n'ai pas trouver comment rendre un lien cliquable (et que la nouvelle page s'ouvre en remplacement de l'ancienne).
METHOD3: Lorsque le lien pointe vers un fichier texte, celui s'ouvre mais les sauts de ligne ne sont pas interprétés (alors que dans la METHOD1, il n'y a pas ces problèmes d'interprétation).

Si vous avez des idées pour ces pbs, je suis preneur.
Merci d'avance.

Olivier

Code : 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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
 
class Aide(QtGui.QWidget):
    def __init__(self, nomFicAide, param=None, parent=None):
        super(Aide, self).__init__(parent)
 
        self.setWindowTitle(u"Help")
        self.resize(800, 600)
 
        # Give it a layout
        self.layout = QtGui.QVBoxLayout(self)
        self.layout.setContentsMargins(0, 0, 0, 0)
        self.setLayout(self.layout)
 
        # METHOD 1
        # Create and fill QWebEngineView
        self.view = QWebEngineView()
        self.view.load(QtCore.QUrl.fromLocalFile(nomFicAide))
        #TODO: jump to anchor
        print("location.hash = '#" + param + "';")
        self.view.page().runJavaScript("location.hash = '#" + param + "';")
 
#        # METHOD 2
#        # Create and fill QTextEdit
#        self.view = QtGui.QTextEdit()
##        self.view.setReadOnly(True)
#        self.view.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse)
#
#        _f = QtCore.QFile(nomFicAide)
#        _f.open(QtCore.QFile.ReadOnly|QtCore.QFile.Text)
#        _istream = QtCore.QTextStream(_f)
#        self.view.setHtml(_istream.readAll())
#        try: 
#            self.view.scrollToAnchor(param)
#        except:
#            pass
#        _f.close()
 
#        # METHOD 3
#        # Create and fill QTextBrowser
#        self.view = QtGui.QTextBrowser()
#        _f = QtCore.QFile(nomFicAide)
#        _f.open(QtCore.QFile.ReadOnly|QtCore.QFile.Text)
#        _istream = QtCore.QTextStream(_f)
#        self.view.setHtml(_istream.readAll())
#        try: 
#            self.view.scrollToAnchor(param)
#        except:
#            pass
#        _f.close()
 
 
 
        # Add the QWebView to the layout
        self.layout.addWidget(self.view)