Может кто-нибудь подскажите, пожалуйста, как изменить размер этого QWebEnginePage. Когда я запускаю этот файл, он открывает окно с полным браузером, как открытый сайт, но я хочу изменить его размер, чтобы добавить кнопку и другие элементы в окне.
Вот мой код:
from PyQt5 import QtCore, QtWidgets, QtWebEngineWidgets, QtWebChannel, QtGui
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QSizeGrip, QGridLayout
from jinja2 import Template
#import D_scraper
class Form(QtWidgets.QWidget):
def __init__(self, parent=None):
super(Form, self).__init__(parent)
self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
# self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
# for making the window draggable
self.oPos = self.pos()
self.setFixedSize(1000, 650)
testlw = QVBoxLayout()
testlo = QGridLayout()
testlo.addLayout(testlw, 0, 1)
self.setLayout(testlo)
self.setWindowTitle('test')
self.setStyleSheet('background-color: rgb(255,255,0);')
self.setStyleSheet('border-radius: 30px')
class Element(QtCore.QObject):
def __init__(self, name, parent=None):
super(Element, self).__init__(parent)
self._name = name
@property
def name(self):
return self._name
def script(self):
return ""
class WebEnginePage(QtWebEngineWidgets.QWebEnginePage):
def __init__(self, parent=None):
super(WebEnginePage, self).__init__(parent)
self.loadFinished.connect(self.onLoadFinished)
self._objects = []
self._scripts = []
def add_object(self, obj):
self._objects.append(obj)
@QtCore.pyqtSlot(bool)
def onLoadFinished(self, ok):
print("Finished loading: ", ok)
if ok:
self.load_qwebchannel()
self.add_objects()
def load_qwebchannel(self):
file = QtCore.QFile(":/qtwebchannel/qwebchannel.js")
if file.open(QtCore.QIODevice.ReadOnly):
content = file.readAll()
file.close()
self.runJavaScript(content.data().decode())
if self.webChannel() is None:
channel = QtWebChannel.QWebChannel(self)
self.setWebChannel(channel)
def add_objects(self):
if self.webChannel() is not None:
objects = {obj.name: obj for obj in self._objects}
self.webChannel().registerObjects(objects)
_script = """
{% for obj in objects %}
var {{obj}};
{% endfor %}
new QWebChannel(qt.webChannelTransport, function (channel) {
{% for obj in objects %}
{{obj}} = channel.objects.{{obj}};
{% endfor %}
});
"""
self.runJavaScript(Template(_script).render(objects=objects.keys()))
for obj in self._objects:
if isinstance(obj, Element):
self.runJavaScript(obj.script())
class Helper(Element):
classClicked = QtCore.pyqtSignal(str)
def script(self):
js = """
document.addEventListener('click', function(e) {
e = e || window.event;
var target = e.target || e.srcElement;
e.preventDefault()
{{name}}.objectClicked(target.className);
}, false);"""
return Template(js).render(name=self.name)
@QtCore.pyqtSlot(str)
def objectClicked(self, className):
if className:
self.classClicked.emit(className)
def on_clicked(name):
on_clicked.xcv = name
print(on_clicked.xcv)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
window = Form()
classname_helper = Helper("classname_helper")
classname_helper.classClicked.connect(on_clicked)
view = QtWebEngineWidgets.QWebEngineView()
page = WebEnginePage()
page.add_object(classname_helper)
view.setPage(page)
view.load(QtCore.QUrl("https://www.flipkart.com/search?q=mobiles&as=on&as-show=on&otracker=AS_Query_TrendingAutoSuggest_1_0_na_na_na&otracker1=AS_Query_TrendingAutoSuggest_1_0_na_na_na&as-pos=1&as-type=TRENDING&suggestionId=mobiles&requestId=4720716a-cf2f-4822-9036-c66b9542d2d6"))
view.show()
sys.exit(app.exec_())
Я новичок в QT Framework, поэтому у меня возникла эта проблема. Не могли бы вы добавить для примера кнопку вместе с браузером с измененным размером в окне, чтобы я мог понять.