class MainWindow(QtGui.QWidget):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.webView.installEventFilter(self)
        QtCore.QObject.connect(self.ui.graphicsScene, QtCore.SIGNAL("sceneRectChanged(const QRectF&)"), self.webResize)
        QtCore.QObject.connect(self.ui.webView, QtCore.SIGNAL("loadFinished(bool)"), self.loadFinished)
        self.rect= None
        self.parents=[]
        self.forceResize= False

    def eventFilter(self, target, event):
        if event.type() == QtCore.QEvent.MouseMove:
           #self.ui.webView.resize(self.ui.graphicsScene.width(),self.ui.graphicsScene.height())
           pos= event.pos()
           res= self.ui.webView.page().mainFrame().hitTestContent(pos)
           el= res.element()
           widthProperty = el.styleProperty("width",2);
           heightProperty = el.styleProperty("height",2);
           for parent in self.parents:
               self.ui.graphicsScene.removeItem(parent)
           self.parents=[]
           if(el.geometry().center().x()==0 or el.geometry().center().y()==0):
               el= res.linkElement()
           else:
               t_el= el
               counter= 10
               counter2=3
               while(t_el.parent() and t_el.geometry().center().x()<>0):
                   self.parents.append(self.ui.graphicsScene.addRect(QRectF(t_el.geometry()), QPen(QBrush(QColor(20,20,counter,255)), counter2, QtCore.Qt.DashDotLine, QtCore.Qt.RoundCap, QtCore.Qt.RoundJoin), QBrush(QColor(0,0,0,0))))
                   t_el= t_el.parent()
                   counter+=20
                   counter2-=1
                   if not counter2:
                       counter2= 1
           print "x: " + str(el.geometry().center().x()) + "y: " + str(el.geometry().center().y())
           print "x: " + str(res.boundingRect().center().x()) + "y: " + str(res.boundingRect().center().y()) 
           if self.rect:
               self.ui.graphicsScene.removeItem(self.rect)
           self.rect= self.ui.graphicsScene.addRect(QRectF(res.boundingRect()), QPen(), QBrush(QColor(20,20,20,50)))
           print("mousemove")
           self.ui.inspect.setPage(self.ui.webView.page())
           self.ui.inspect.show()
           self.ui.inspect.update()

        return False

    def webResize(self, e):
	if self.forceResize:
            print "resize"
            self.forceResize= False
            self.ui.webView.resize(self.ui.graphicsScene.width(), self.ui.graphicsScene.height())
            self.ui.webView.page().setViewportSize(QSize(self.ui.graphicsScene.width()-20, self.ui.graphicsScene.height()-20))

    def loadFinished(self, e):
        self.forceResize= True
        pass
 def __init__(self, parent=None):
     super(MainWindow, self).__init__(parent)
     self.ui = Ui_MainWindow()
     self.ui.setupUi(self)
     self.ui.webView.installEventFilter(self)
     QtCore.QObject.connect(self.ui.graphicsScene, QtCore.SIGNAL("sceneRectChanged(const QRectF&)"), self.webResize)
     QtCore.QObject.connect(self.ui.webView, QtCore.SIGNAL("loadFinished(bool)"), self.loadFinished)
     self.rect= None
     self.parents=[]
     self.forceResize= False
Example #3
0
# -*- coding: utf-8 -*-

import sys
from PyQt4.QtGui import QApplication, QMainWindow
from test2 import Ui_MainWindow  # here you need to correct the names

app = QApplication(sys.argv)
window = QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(window)

ui.btn_search.clicked.connect(ui.search)

window.show()
sys.exit(app.exec_())