Pyqt 浏览器禁止对话框小demo

来源:互联网 发布:网页牛牛游戏源码 编辑:程序博客网 时间:2024/05/16 07:53

恩,有些时候需要让程序自动化控制浏览器,其中遇到一个问题就是,如何禁止浏览器弹框?

能否自动确定?或者压根就不让它弹框呢?


在怎样自动关闭JS的 alert对话框 帖子中找到解决方法,核心代码:

#浏览器        class MyBrowser(QWebView):    def __init__(self):        QWebView.__init__(self)        self.webpage = QWebPage(self)        self.setPage(self.webpage)        self.url = 'http://jiaowu.dlufl.edu.cn/'        self.webpage.javaScriptAlert =  self._javascript_alert  #重载 alert函数        self.load(QtCore.QUrl(self.url))        QtCore.QObject.connect(self,QtCore.SIGNAL('loadFinished(bool)'),self.do_loadFinished)                       #重写js alert,让它自动确定    def _javascript_alert(self, webframe, message):        return    

完成效果,怎么点登录都不会弹框:


如果我们注释掉:

#self.webpage.javaScriptAlert =  self._javascript_alert  #重载 alert函数
那么:



全部代码:

# #coding:utf-8  from PyQt4 import QtGuifrom PyQt4 import QtCorefrom PyQt4.QtWebKit import*from PyQt4 import QtCore, QtGuifrom PyQt4 import uicfrom PyQt4.QtCore import *from PyQt4.QtGui import *from PyQt4.QtWebKit import *from PyQt4.QtNetwork import *import sysfrom IPython import embedreload(sys)sys.setdefaultencoding('utf-8')#解决QString中文乱码QTextCodec.setCodecForCStrings(QTextCodec.codecForName("utf-8"))#控制台class MyConsole(QWidget):    def __init__(self,parent):        QWidget.__init__(self)        self.parent = parent                self.initUI()            #初始化UI        def initUI(self):        self.gridlayout = QtGui.QGridLayout()                 #设置出20 x 20 的格局        for i in range(20):            self.gridlayout.setColumnStretch(i,1)            self.gridlayout.setRowStretch(i,1)        lb1 = QLabel(u'账户:')        lb2 = QLabel(u'密码:')        self.userEntry = QLineEdit()        self.passEntry = QLineEdit()        self.passEntry.setEchoMode(QLineEdit.Password)        self.loginBtn = QtGui.QPushButton(u"登录")        self.loginBtn.setFixedSize(40,20)        self.connect(self.loginBtn, QtCore.SIGNAL('clicked()'), self.onLoginButton)                self.gridlayout.addWidget(lb1, 0, 0)        self.gridlayout.addWidget(lb2, 1, 0)        self.gridlayout.addWidget(self.userEntry, 0, 1,1,3)        self.gridlayout.addWidget(self.passEntry, 1, 1,1,3)        self.gridlayout.addWidget(self.loginBtn, 0, 4,1,2)                self.setLayout(self.gridlayout)         #响应登录按钮    def onLoginButton(self):        username = self.userEntry.text()        password = self.passEntry.text()        QtGui.QMessageBox.about(self, username+u'登录成功', u"密码是:"+password)        tmpstr = username+u'登录成功!\n' + u"密码是:"+password        print str(tmpstr).decode('utf-8')#浏览器        class MyBrowser(QWebView):    def __init__(self):        QWebView.__init__(self)        self.webpage = QWebPage(self)        self.setPage(self.webpage)        self.url = 'http://jiaowu.dlufl.edu.cn/'        self.webpage.javaScriptAlert =  self._javascript_alert  #重载 alert函数        self.load(QtCore.QUrl(self.url))        QtCore.QObject.connect(self,QtCore.SIGNAL('loadFinished(bool)'),self.do_loadFinished)                       #重写js alert,让它自动确定    def _javascript_alert(self, webframe, message):        return               #页面加载完成的处理函数    def do_loadFinished(self):               frame = self.page().currentFrame()        doc = self.page().currentFrame().documentElement()        #打印网页title        print 'Page load..',str(frame.title()).decode('utf-8'),"##"                 class MainWindow(QtGui.QMainWindow):    def __init__(self,parent=None):        QtGui.QMainWindow.__init__(self, parent)        tabs = QtGui.QTabWidget(self)        #tab1        tab1 = QtGui.QWidget()         vBox1 = QtGui.QVBoxLayout()        console = MyConsole(self)        vBox1.addWidget(console)        tab1.setLayout(vBox1)                #tab2        tab2 = QtGui.QWidget()        web = MyBrowser()                 vBox2 = QtGui.QVBoxLayout()        vBox2.addWidget(web)        tab2.setLayout(vBox2)                tabs.addTab(tab1,u"控制台")        tabs.addTab(tab2,u"浏览器")                tabs.resize(500, 350)        self.resize(500, 350)                #禁止最大化        self.setWindowFlags(QtCore.Qt.WindowMinimizeButtonHint)          self.show()def main():    app = QtGui.QApplication(sys.argv)    app.connect( app, SIGNAL( "lastWindowClosed()" ), app.quit);    win = MainWindow()    sys.exit(app.exec_()) if __name__ == '__main__':    main()



0 0