提问人:Fog cc 提问时间:8/13/2023 更新时间:8/13/2023 访问量:18
如何访问其他类中的属性QtWebEngine
how to access attribute QtWebEngine in other class
问:
我的第一个文件包含一个类。它使用 Flask 启动我的 Web 应用程序:(main.py) 功能init_gui通过 QtwebEngine 打开 Web 应用程序。QtWebengine 打包到属性 webView 中。它可以工作,但我想在我的类 Routeur 中访问 init 的 webView 属性.py尤其是在我的函数 problem_here(self) 中,我想在其中执行 webView.reload()
import pyautogui as pag
from Url import *
class Routeur(Url):
def __init__(self, window_title):
self.app = Flask(__name__)
self.app.config['SECRET_KEY']= 'xxxxxxxxxxxxxxxxxxxxxx'
self.app.config.update(SESSION_COOKIE_HTTPONLY=True)
self.app.config.update(SESSION_COOKIE_SECURE=True)
self.app.config.update(SESSION_COOKIE_SAMESITE='Strict')
self.Url_addRoute()
def home(self):
return render_template('index.html', test="test")
def problem_here(self):
self.webView.reload()
if __name__ == '__main__':
window_title = "test"
routeur = Routeur(window_title)
hauteur = int(pag.size().height - (pag.size().height * 0.118))
position = int(pag.size().width - 350)
init_gui(routeur.app, port=2000, width=350, height=hauteur, window_title=window_title, icon="icon.png", x=position-10, y=10)
我启动类以执行我的 Web 应用程序。它有效。 但是我想修改由第二个文件创建的webView的一些属性:(_init.py):
import sys
from PySide2 import QtCore, QtWidgets, QtGui, QtWebEngineWidgets
import socket
import pyautogui as pag
class ApplicationThread(QtCore.QThread):
def __init__(self, application, port=5000):
super(ApplicationThread, self).__init__()
self.application = application
self.port = port
def __del__(self):
self.wait()
def run(self):
self.application.run(port=self.port, threaded=True)
class WebPage(QtWebEngineWidgets.QWebEnginePage):
def __init__(self, root_url):
super(WebPage, self).__init__()
self.root_url = root_url
def home(self):
self.load(QtCore.QUrl(self.root_url))
def acceptNavigationRequest(self, url, kind, is_main_frame):
"""Open external links in browser and internal links in the webview"""
ready_url = url.toEncoded().data().decode()
is_clicked = kind == self.NavigationTypeLinkClicked
if is_clicked and self.root_url not in ready_url:
QtGui.QDesktopServices.openUrl(url)
return False
return super(WebPage, self).acceptNavigationRequest(url, kind, is_main_frame)
def init_gui(application, port=0, width=800, height=600, window_title="", icon="appicon.png", argv=None):
if argv is None:
argv = sys.argv
if port == 0:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(('localhost', 0))
port = sock.getsockname()[1]
sock.close()
# Application Level
qtapp = QtWidgets.QApplication(argv)
webapp = ApplicationThread(application, port)
webapp.start()
qtapp.aboutToQuit.connect(webapp.terminate)
# Main Window Level
window = QtWidgets.QMainWindow()
window.resize(width, height)
window.setWindowTitle(window_title)
window.setWindowIcon(QtGui.QIcon(icon))
# WebView Level
webView = QtWebEngineWidgets.QWebEngineView(window)
window.setCentralWidget(webView)
# WebPage Level
page = WebPage('http://localhost:{}'.format(port))
page.home()
webView.setPage(page)
window.show()
return qtapp.exec_()
我的问题是如何在我的班级 Routeur 中访问 webView ??
我想在我的班级 Routeur 中访问 webView
答: 暂无答案
评论