Загрузить и сохранить веб-приложение, Url которого задается в QLineEdit
Нужно реализовать веб-приложение где пользователь вводит адрес сайта и по нажатию на кнопку появляется окно с этим сайтом, после закрытия страница сайта сохраняется в файл .pdf
.
Вопрос состоит в том как перенести данные из QLineEdit
одного класса
(Ui_Form()()
) в QUrl
другого класса (MainWindow()
)?
Пробовал унаследовать MyWindow()
от Ui_Form()
, но это ничего не дало.
Вот сам код, но при нажатии на кнопку приложение закрывается без вывода какой-либо ошибки:
main.py
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt6.QtWidgets import *
from PyQt6.QtCore import *
from PyQt6.QtWebEngineWidgets import *
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(280, 90)
Form.setMinimumSize(QtCore.QSize(280, 90))
Form.setMaximumSize(QtCore.QSize(280, 90))
Form.setStyleSheet("background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(86, 204, 242, 255), stop:1 rgba(47, 128, 237, 255));")
self.url_edit = QtWidgets.QLineEdit(Form)
self.url_edit.setGeometry(QtCore.QRect(30, 30, 181, 32))
self.url_edit.setStyleSheet("background-color: transparent;\n"
"font: 11pt \"MS Shell Dlg 2\";\n"
"background-color: rgb(255, 255, 255);\n"
"border-radius: 10px; /* <---- 20px */ \n"
"border: 2px solid #243b47 ;")
self.url_edit.setObjectName("url_edit")
self.search_button = QtWidgets.QPushButton(Form)
self.search_button.setGeometry(QtCore.QRect(215, 30, 32, 32))
self.search_button.setStyleSheet("font: 17pt \"MS Shell Dlg 2\";\n"
"background-color: rgb(255, 255, 255);\n"
"border-radius: 10px; ")
self.search_button.setObjectName("search_button")
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Сохранение cайта в PDF"))
self.url_edit.setToolTip(_translate("Form", "<html><head/><body><p>Введите адрес сайта</p></body></html>"))
self.search_button.setToolTip(_translate("Form", "<html><head/><body><p>Найти и сохранить сайт в PDF</p></body></html>"))
self.search_button.setText(_translate("Form", "🔍"))
self.search_button.clicked.connect(self.web_s)
def web_s(self):
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.tex = self.Ui
self.setWindowTitle("Пример загрузки внешней веб-страницы")
self.setGeometry(5, 30, 1355, 730)
self.browser = QWebEngineView()
self.browser.page().pdfPrintingFinished.connect(lambda *args: print('finished', args))
self.browser.load(QUrl(**НУЖНО ПЕРЕНЕСТИ ДАННЫЕ QLineEdit (url_edit) СЮДА**))
self.setCentralWidget(self.browser)
self.browser.loadFinished.connect(self.emit_pdf)
def emit_pdf(self, finished):
self.browser.show()
self.browser.page().printToPdf("1.pdf")
app = QApplication(sys.argv)
win = MainWindow()
win.show()
app.exit(app.exec())
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Form = QtWidgets.QWidget()
ui = Ui_Form()
ui.setupUi(Form)
Form.show()
sys.exit(app.exec_())
Источник: Stack Overflow на русском