[PyQt] QWebView events usage

laurlaur tmlazarmarius at gmail.com
Tue Jun 30 12:11:38 BST 2009


Hi,
Please help me with the following problem.
I want to have two QWebView windows which will be scrolled in the same time.
Basically my code looks like this:

import sys
from PyQt4.QtCore import *
from PyQt4.QtWebKit import *
from PyQt4.QtNetwork import *
from PyQt4 import QtGui

class Wpage(QWebView):
    def __init(self,parent =None):
        QWebView.__init__(self,parent)
#***********************************
#here I should add the normally the event handlers
# 
    def wheelEvent(self,event):
        print "test"


class main(QtGui.QMainWindow,Wpage) :      
    def __init__(self, parent=None):
        QtGui.QMainWindow.__init__(self, parent)

        page1 =Wpage(self)

        path =r"F:\test_compare\Qt_compare\immob_shutdown_Report.html"
        page1.load(QUrl(path))
        page1.setGeometry(10,50,600,700)
        self.xp =page1.page().mainFrame()
        page1.show()

        page2 =Wpage(self)

        path1 =r"F:\test_compare\Qt_compare\immob_shutdown_Report.html"
        page2.load(QUrl(path1))
        page2.setGeometry(620,50,600,700)
        self.xp1 =page2.page().mainFrame()
        page2.show()   
if __name__ =="__main__":
    app = QtGui.QApplication(sys.argv)
    mainwindow=main()
    mainwindow.setGeometry(5,5,1210,700)
    mainwindow.show()
    sys.exit(app.exec_())

I don't know how to use the scrollBarValue inside the events declared in the
Wpage class. At the first side it looks impossible to me.
Another solution which is working but it is very slow is to  declare a
general handling event inside the main class like this:
class main(QtGui.QMainWindow,Wpage) :      
    def __init__(self, parent=None):
        QtGui.QMainWindow.__init__(self, parent)

        #source code
    def event(self, event):

   
        global old_val
        try:
             
            self.val_scr_x_vrt =self.xp.scrollBarValue(Qt.Vertical)
            if old_val!=self.val_scr_x_vrt:
                u =self.x1_pos_prev+(self.val_scr_x_vrt-old_val)

                self.xp1.setScrollBarValue(Qt.Vertical,u)
                self.val_scr_x_hor =self.xp.scrollBarValue(Qt.Horizontal)
                self.xp1.setScrollBarValue(Qt.Horizontal,self.val_scr_x_hor)
                old_val=self.val_scr_x_vrt
                
            else:
                pass
            self.x1_pos_prev =self.xp1.scrollBarValue(Qt.Vertical) 
        except:
            pass
        return 0

This is working but It is very slow. Every html page requires an extra 10
seconds to load and if for example I want to search something in the page ,
the page will not be correctly refreshed.



-- 
View this message in context: http://www.nabble.com/QWebView-events-usage-tp24270048p24270048.html
Sent from the PyQt mailing list archive at Nabble.com.



More information about the PyQt mailing list