使用Python和PyQT创建Web浏览器

第一行定义回调或事件,如果一个人按下enter(returnPressed),它将调用函数loadURL。

在本教程中,我们将使用Python构建一个webbrowser。我们将使用具有Web组件的PyQT库。在本教程中,您将学习如何将所有组件连接在一起。我们将使用默认的渲染引擎,而不是在本教程中滚动一个。

PyQt安装

安装所需的包:

sudo pip install python-qt4

sudo apt-get install qt4-designer

sudo apt-get install pyqt4-dev-tools

sudo apt-get install python-kde4

使用PyQT创建GUI

从应用程序菜单启动qt4-designer。在QT Designer应用程序会出现:

选择主窗口,然后按创建。我们现在打开设计器窗口。在窗口上拖动KWebView组件。如果组件列表中有QtWebView。用它代替。我们还在顶部添加了一个Line Edit。按文件>另存为> browser.ui。

运行命令:

pyuic4 browser.ui > browser.py

这将生成一个Python文件。从browser.py文件的底部删除“来自kwebview import KWebView”的行。将KWebView更改为QtWebView。我们想要使用QtWebView。如果您懒得更改它,请从下面获取browser.py文件。

QWebView探索

使用以下内容创建名为run.py的文件:

import sys

from browser import BrowserDialog

from PyQt4 import QtCore, QtGui

from PyQt4.QtCore import QUrl

from PyQt4.QtWebKit import QWebView

class MyBrowser(QtGui.QDialog):

def __init__(self, parent=None):

QtGui.QWidget.__init__(self, parent)

QWebView.__init__(self)

self.ui = BrowserDialog()

self.ui.setupUi(self)

self.ui.lineEdit.returnPressed.connect(self.loadURL)

def loadURL(self):

url = self.ui.lineEdit.text()

self.ui.qwebview.load(QUrl(url))

self.show()

#self.ui.lineEdit.setText("")

if __name__ == "__main__":

app = QtGui.QApplication(sys.argv)

myapp = MyBrowser()

myapp.ui.qwebview.load(QUrl('http://www')) //这里是网址因为怕被误认为是广告就去掉了,怕被封号,哈哈

myapp.show()

sys.exit(app.exec_())

此代码将使用browser.py中定义的UI并为其添加逻辑。

self.ui.lineEdit.returnPressed.connect(self.loadURL)

def loadURL(self):

url = self.ui.lineEdit.text()

self.ui.qwebview.load(QUrl(url))

self.show()

#self.ui.lineEdit.setText("")

第一行定义回调或事件。如果一个人按下enter(returnPressed),它将调用函数loadURL。它确保一旦您按Enter键,页面就会加载该功能。如果您正确执行了所有操作,则应该能够使用以下命令运行浏览器:

python run.py

请确保输入完整的URL,包括http://部分。您的浏览器现在应该开始:

如果您的代码没有运行,请使用下面的代码(或查看差异并更改错误):

browser.py

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'browser.ui'

#

# Created: Fri Jan 30 20:49:32 2015

# by: PyQt4 UI code generator 4.10.4

#

# WARNING! All changes made in this file will be lost!

import sys

from PyQt4 import QtCore, QtGui

from PyQt4.QtGui import QApplication

from PyQt4.QtCore import QUrl

from PyQt4.QtWebKit import QWebView

try:

_fromUtf8 = QtCore.QString.fromUtf8

except AttributeError:

def _fromUtf8(s):

return s

try:

_encoding = QtGui.QApplication.UnicodeUTF8

def _translate(context, text, disambig):

return QtGui.QApplication.translate(context, text, disambig, _encoding)

except AttributeError:

def _translate(context, text, disambig):

return QtGui.QApplication.translate(context, text, disambig)

class BrowserDialog(object):

def setupUi(self, Dialog):

Dialog.setObjectName(_fromUtf8("Dialog"))

Dialog.resize(1024, 768)

self.qwebview = QWebView(Dialog)

self.qwebview.setGeometry(QtCore.QRect(0, 50, 1020, 711))

self.qwebview.setObjectName(_fromUtf8("kwebview"))

self.lineEdit = QtGui.QLineEdit(Dialog)

self.lineEdit.setGeometry(QtCore.QRect(10, 20, 1000, 25))

self.lineEdit.setObjectName(_fromUtf8("lineEdit"))

self.retranslateUi(Dialog)

QtCore.QMetaObject.connectSlotsByName(Dialog)

def retranslateUi(self, Dialog):

Dialog.setWindowTitle(_translate("Browser", "Browser", None))

import sys

from browser import BrowserDialog

from PyQt4 import QtCore, QtGui

from PyQt4.QtCore import QUrl

from PyQt4.QtWebKit import QWebView

class MyBrowser(QtGui.QDialog):

def __init__(self, parent=None):

QtGui.QWidget.__init__(self, parent)

QWebView.__init__(self)

self.ui = BrowserDialog()

self.ui.setupUi(self)

self.ui.lineEdit.returnPressed.connect(self.loadURL)

def loadURL(self):

url = self.ui.lineEdit.text()

self.ui.qwebview.load(QUrl(url))

self.show()

#self.ui.lineEdit.setText("")

if __name__ == "__main__":

app = QtGui.QApplication(sys.argv)

myapp = MyBrowser()

myapp.ui.qwebview.load(QUrl('http://完整的网址')) //这里和上面一样

myapp.show()

sys.exit(app.exec_())

如果你喜欢这篇文章请分享或收藏,如果你不喜欢,请不要乱举报,真的很烦,这篇文章是我冒着风险发的,因为部门媒体不能识别广告和非广告,而里面也有很多文件夹比如.py,是一个人都晓得.py是Python的后缀名,但是有的就是不认,已经被扣了很多分了,在被扣,以后就不在分享Python,毕竟我也想拥有自己的账号,谢谢

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20181024A04OW500?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券