自己写了个基于pyqt的无边框浏览器,可以配合源阅读的web看书,自用自取 目录结构:
ui |– ui_webview.py
call_webview.y
环境安装:
1 2 pip install PyQt5 pip install PyQtWebEngine
我的本地环境: python 3.7 PyQt5==5.15.9 PyQtWebEngine==5.15.6
直接执行 call_webview.py
即可使用,网址修改 call_webview
中对应位置即可,源码如下:
ui_webview.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_WebView (object ): def setupUi (self, WebView ): WebView.setObjectName("WebView" ) WebView.setWindowModality(QtCore.Qt.NonModal) WebView.resize(538 , 276 ) WebView.setContextMenuPolicy(QtCore.Qt.DefaultContextMenu) WebView.setAnimated(True ) self.centralwidget = QtWidgets.QWidget(WebView) self.centralwidget.setObjectName("centralwidget" ) WebView.setCentralWidget(self.centralwidget) self.statusBar = QtWidgets.QStatusBar(WebView) self.statusBar.setObjectName("statusBar" ) WebView.setStatusBar(self.statusBar) self.retranslateUi(WebView) QtCore.QMetaObject.connectSlotsByName(WebView) def retranslateUi (self, WebView ): _translate = QtCore.QCoreApplication.translate WebView.setWindowTitle(_translate("WebView" , " " ))
call_webview.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 from PyQt5.QtGui import QMouseEventfrom PyQt5.QtWebEngineWidgets import QWebEngineViewfrom PyQt5.QtWidgets import QMainWindow, QHBoxLayoutfrom PyQt5.QtCore import Qt, QPoint, QUrlimport ui.ui_webview as uiclass WebViewWindow (QMainWindow, ui.Ui_WebView): def __init__ (self ): super (WebViewWindow, self).__init__() self.setWindowFlags(Qt.FramelessWindowHint) self.setupUi(self) self.webview = WebEngineView(self) self.webview.load(QUrl("http://手机ip地址/bookshelf/index.html#/" )) self.setCentralWidget(self.webview) def mouseMoveEvent (self, e: QMouseEvent ): self._endPos = e.pos() - self._startPos self.move(self.pos() + self._endPos) def mousePressEvent (self, e: QMouseEvent ): if e.button() == Qt.LeftButton: self._isTracking = True self._startPos = QPoint(e.x(), e.y()) def mouseReleaseEvent (self, e: QMouseEvent ): if e.button() == Qt.LeftButton: self._isTracking = False self._startPos = None self._endPos = None class WebEngineView (QWebEngineView ): def __init__ (self, mainwindow, parent=None ): super (WebEngineView, self).__init__(parent) self.mainwindow = mainwindow def createWindow (self, QWebEnginePage_WebWindowType ): new_webview = WebEngineView(self.mainwindow) self.mainwindow.create_tab(new_webview) return new_webview if __name__ == '__main__' : import sys from PyQt5.QtWidgets import QApplication app = QApplication(sys.argv) mainWindow = WebViewWindow() mainWindow.show() sys.exit(app.exec_())
效果如下图: