Bonjour,
Suite à une mise à jour de QtWebKit la méthode QWebView.setUrl() tronque systématiquement les url internes du basename
code exemple:
Avec la version de QtWebKit 2.2, que j'ai toujours sous Debian et plusieurs Ubuntu, pas de soucis, la page s'affiche et je print ceci:
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 # -*- coding: utf-8 -*- import sys from PyQt4 import QtCore, QtGui, QtWebKit print "QtWebKit vers: ", QtWebKit.qWebKitVersion() class MiniView(object): def setupUi(self, MainWindow): MainWindow.resize(400, 300) self.centralwidget = QtGui.QWidget(MainWindow) self.gridLayout = QtGui.QGridLayout(self.centralwidget) self.webView = QtWebKit.QWebView(self.centralwidget) self.gridLayout.addWidget(self.webView, 0, 0, 1, 1) MainWindow.setCentralWidget(self.centralwidget) MainWindow.show() QtCore.QCoreApplication.processEvents() self.osm_url = QtCore.QUrl("/home/vincent/g13n/Qmap/OSmapViewer.html") self.webView.setUrl(self.osm_url) print "Url: ", self.webView.url() if __name__ == "__main__": app = QtGui.QApplication(sys.argv) MainWindow = QtGui.QMainWindow() ui = MiniView() ui.setupUi(MainWindow) sys.exit(app.exec_())
Sous Arch Linux, où une mise à jour a eu lieu avant-hier vers QtWebKit 2.2.1 la page ne s'affiche pas et le print montre que l'url est incomplète:vincent@tiemoko:~/Qmap$ python map.py
QtWebKit vers: 532.4
Url: PyQt4.QtCore.QUrl(u'file:///home/vincent/g13n/Qmap/OSmapViewer.html')
À tous hasards, j'ai posté sur la ML de PyQt, sans réponse mais je ne pense pas à un bug PyQt.[vincent@myhost Qmap]$ python2 map.py
QtWebKit vers: 534.34
Url: PyQt4.QtCore.QUrl(u'file:///home/vincent/g13n/Qmap')
Je met un html pour tester, cela charge une carte d'OpenStreetMap.
J'ai fais d'autres essais, entre autres avec QWebInspector (pas mal ce truc) toujours avec le même résultat.
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 <!DOCTYPE html> <html> <head> <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> <style type="text/css"> html { height: 100% } body { height: 100%; margin: 0px; padding: 0px } #map_canvas { height: 100% } </style> <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"> </script> <script type="text/javascript"> function updateLatLonFields(lat, lon, zoom) { document.getElementById("coord").innerHTML = lat + ", " + lon + ", " + zoom; } function initialize() { var latlng = new google.maps.LatLng(50.83190499378414, 4.385846084594736); var myOptions = { zoom: 18, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP }; var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); document.getElementById("coord").innerHTML = latlng.lat() + ", " + latlng.lng() + ", 18"; google.maps.event.addListener(map, 'bounds_changed', function() { var center = map.getCenter(); var zoom = map.getZoom(); updateLatLonFields(center.lat(), center.lng(), zoom); }); } </script> </head> <body onload="initialize()"> <div id="map_canvas" style="width:100%; height:100%"></div> </body> <iframe id="coord" style="display: none"> </iframe> </html>
Des idées ?
Merci.
Partager