子类QWEBENGINEVIEW

发布于 2025-02-12 18:14:25 字数 4711 浏览 0 评论 0原文

文件:simple_browser.py

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

# Form implementation generated from reading ui file 'simple_browser.ui'
#
# Created by: PyQt5 UI code generator 5.15.7
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(749, 453)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
        self.gridLayout.setObjectName("gridLayout")
        self.web_frame = QtWidgets.QFrame(self.centralwidget)
        self.web_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.web_frame.setFrameShadow(QtWidgets.QFrame.Raised)
        self.web_frame.setObjectName("web_frame")
        self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.web_frame)
        self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.gridLayout.addWidget(self.web_frame, 0, 0, 1, 1)
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

文件:run_me_2.py

from PyQt5 import QtCore, QtGui, QtWidgets
from simple_browser import Ui_MainWindow
import sys
import traceback

from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWebChannel import QWebChannel
from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEnginePage

from PyQt5.QtCore import QUrl



class Run_me:

    def __init__(self):
        self.app = QtWidgets.QApplication(sys.argv)
        self.MainWindow = QtWidgets.QMainWindow()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self.MainWindow)
        self.MainWindow.show()

        self.view = Web_View(self)

        #close action
        self.MainWindow.closeEvent = lambda event:self.closeEvent(event)


        sys.exit(self.app.exec_())
        
    def closeEvent(self,event):
        try:
            
            event.accept()
        except:
            error_message = str(traceback.format_exc())
            print(error_message)

class Web_View(QWebEngineView):

    def __init__(self,parent,*args, **kwargs):
        try:
            super().__init__(parent.ui.web_frame,*args, **kwargs)

            # setup a page with my html
            self.setPage(WebEnginePage(self))
            self.load(QUrl("http://www.in.gr/"))
            #self.setGeometry(0,0,770,80)
            self.setParent(parent.ui.web_frame)
            self.show()
            parent.ui.verticalLayout_2.addWidget(self)
            
            parent.ui.web_frame.update()

            # setup channel
            #self.channel = QWebChannel()
            #self.channel.registerObject('backend', self)
            #self.page().setWebChannel(self.channel)
        except Exception as e:
            print(e)


class WebEnginePage(QWebEnginePage):

    def javaScriptConsoleMessage(self, level, message, lineNumber, sourceID):
        print("-----")
        print(level)
        print(message)
        print(lineNumber)
        print(sourceID)
        print("-----")


if __name__=="__main__":
    program = Run_me()

运行python3 run_me_2.py 在屏幕上没有Web输出吗?

怎么了,

#install pyqt5
sudo apt-get -y install python3-pyqt5
sudo apt-get -y install qtcreator pyqt5-dev-tools
sudo apt-get -y install qttools5-dev-tools
sudo apt install -y qtcreator qtbase5-dev qt5-qmake cmake
python3 -m pip install PyQt5==5.13.1 --use-feature 2020-resolver
python3 -m pip install PyQt5-sip

sudo apt-get -y install python3-dev
sudo apt-get -y install python3-pyqt5
sudo apt-get -y install qtcreator pyqt5-dev-tools
sudo apt-get -y install qttools5-dev-tools

我用来安装Pyqt5的代码。

File: simple_browser.py

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

# Form implementation generated from reading ui file 'simple_browser.ui'
#
# Created by: PyQt5 UI code generator 5.15.7
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(749, 453)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
        self.gridLayout.setObjectName("gridLayout")
        self.web_frame = QtWidgets.QFrame(self.centralwidget)
        self.web_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.web_frame.setFrameShadow(QtWidgets.QFrame.Raised)
        self.web_frame.setObjectName("web_frame")
        self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.web_frame)
        self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.gridLayout.addWidget(self.web_frame, 0, 0, 1, 1)
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

File: run_me_2.py

from PyQt5 import QtCore, QtGui, QtWidgets
from simple_browser import Ui_MainWindow
import sys
import traceback

from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWebChannel import QWebChannel
from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEnginePage

from PyQt5.QtCore import QUrl



class Run_me:

    def __init__(self):
        self.app = QtWidgets.QApplication(sys.argv)
        self.MainWindow = QtWidgets.QMainWindow()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self.MainWindow)
        self.MainWindow.show()

        self.view = Web_View(self)

        #close action
        self.MainWindow.closeEvent = lambda event:self.closeEvent(event)


        sys.exit(self.app.exec_())
        
    def closeEvent(self,event):
        try:
            
            event.accept()
        except:
            error_message = str(traceback.format_exc())
            print(error_message)

class Web_View(QWebEngineView):

    def __init__(self,parent,*args, **kwargs):
        try:
            super().__init__(parent.ui.web_frame,*args, **kwargs)

            # setup a page with my html
            self.setPage(WebEnginePage(self))
            self.load(QUrl("http://www.in.gr/"))
            #self.setGeometry(0,0,770,80)
            self.setParent(parent.ui.web_frame)
            self.show()
            parent.ui.verticalLayout_2.addWidget(self)
            
            parent.ui.web_frame.update()

            # setup channel
            #self.channel = QWebChannel()
            #self.channel.registerObject('backend', self)
            #self.page().setWebChannel(self.channel)
        except Exception as e:
            print(e)


class WebEnginePage(QWebEnginePage):

    def javaScriptConsoleMessage(self, level, message, lineNumber, sourceID):
        print("-----")
        print(level)
        print(message)
        print(lineNumber)
        print(sourceID)
        print("-----")


if __name__=="__main__":
    program = Run_me()

Running python3 run_me_2.py has no web output in the screen?

What's wrong

enter image description here

#install pyqt5
sudo apt-get -y install python3-pyqt5
sudo apt-get -y install qtcreator pyqt5-dev-tools
sudo apt-get -y install qttools5-dev-tools
sudo apt install -y qtcreator qtbase5-dev qt5-qmake cmake
python3 -m pip install PyQt5==5.13.1 --use-feature 2020-resolver
python3 -m pip install PyQt5-sip

sudo apt-get -y install python3-dev
sudo apt-get -y install python3-pyqt5
sudo apt-get -y install qtcreator pyqt5-dev-tools
sudo apt-get -y install qttools5-dev-tools

Code that i used to install pyqt5.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文