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
- Pyqt 浏览器禁止对话框小demo
- Pyqt 浏览器截图小demo
- Pyqt 浏览器自动填充input框小demo
- Pyqt 滚动条的小demo
- pyqt demo
- PyQT first demo
- PyQt(2) 对话框
- pyqt提示对话框
- pyqt 弹出对话框
- 禁止ie浏览器弹出是否记录密码的对话框
- Chrome 浏览器 禁止再次弹出此对话框 如何恢复
- PyQT禁止窗口最大化按钮
- PyQt版本的360 Demo
- PyQt/QT打开文件浏览器
- pyqt 文件载入对话框,文件保存对话框,打开文件夹对话框
- 浏览器对话框
- Pyqt print输出到控件中小demo
- 禁止对话框的拖动
- 数组------找零问题
- Android studio 无法修改jdk的location
- iOS保持界面流畅的技巧
- HDFS的一致性分析
- mysql常用的一些命令,查看MySQL服务器配置信息
- Pyqt 浏览器禁止对话框小demo
- HDU-1166- 敌兵布阵(线段树 插点问线)
- 宏函数
- 添加vMotion网络的VMkernel端口组
- ant 入门使用指南
- JAVA Socket 编程
- LeetCode-125.Valid Palindrome
- 浅谈Struts2与Webwork的不同和相同点
- Hadoop和大数据:60款顶级开源工具