Skip to content

Files

Latest commit

8e2c875 · Nov 20, 2019

History

History
189 lines (135 loc) · 5.63 KB

61.md

File metadata and controls

189 lines (135 loc) · 5.63 KB

使用 Python 和 PyQT 创建 Web 浏览器

原文: https://pythonspot.com/creating-a-webbrowser-with-python-and-pyqt-tutorial/

Python browser PyQt4

带有 PyQt4 的 Python 浏览器

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

如果您尚未完成我们的 pyqt4 初学者教程,则可以尝试一下。 如果找不到 python-kde4,请更新您的存储库以找到它。 Ubuntu 或 Debian 安装指南

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 设计器应用程序将出现:

QT_Designer

QT 设计器

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

pyuic4 browser.ui > browser.py

这将生成一个 Python 文件。 从browser.py文件底部删除from 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.pythonspot.com'))
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

请确保输入完整的网址,例如:http://pythonspot.com 包括 http://部分。 您的浏览器现在应该启动:

Python browser

Python 浏览器

如果您的代码未运行,请使用以下代码(或查看不同之处并更改错误之处):

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))

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.pythonspot.com'))
myapp.show()
sys.exit(app.exec_())

下载 PyQT 代码(批量收集)