Python
Помогите сделать домашнее задание по программированию!
Реализовать простейший браузер с возможностью сохранения страницы в pdf формате (с помощь PyQt5)
Хорошо, вот пример реализации простейшего браузера с PyQt5 и возможность сохранения страницы в PDF формате:
```python
import sys
from PyQt5 import QtWidgets, QtCore, QtGui, QtWebEngineWidgets, QtPrintSupport
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle('Простейший браузер')
self.browser = QtWebEngineWidgets.QWebEngineView()
self.browser.setUrl(QtCore.QUrl(' https://www.google.com '))
self.setCentralWidget(self.browser)
menu_bar = QtWidgets.QToolBar()
self.addToolBar(menu_bar)
back_btn = QtWidgets.QAction('Назад', self)
back_btn.triggered.connect(self.browser.back)
menu_bar.addAction(back_btn)
forward_btn = QtWidgets.QAction('Вперед', self)
forward_btn.triggered.connect(self.browser.forward)
menu_bar.addAction(forward_btn)
stop_btn = QtWidgets.QAction('Стоп', self)
stop_btn.triggered.connect(self.browser.stop)
menu_bar.addAction(stop_btn)
refresh_btn = QtWidgets.QAction('Обновить', self)
refresh_btn.triggered.connect(self.browser.reload)
menu_bar.addAction(refresh_btn)
home_btn = QtWidgets.QAction('Домой', self)
home_btn.triggered.connect(self.home)
menu_bar.addAction(home_btn)
self.url_bar = QtWidgets.QLineEdit()
self.url_bar.returnPressed.connect(self.navigate_to_url)
menu_bar.addWidget(self.url_bar)
self.browser.urlChanged.connect(self.update_url_bar)
file_menu = self.menuBar().addMenu('Файл')
save_as_pdf_action = QtWidgets.QAction('Сохранить страницу как PDF', self)
save_as_pdf_action.triggered.connect(self.save_as_pdf)
file_menu.addAction(save_as_pdf_action)
self.printer = QtPrintSupport.QPrinter()
def home(self):
self.browser.setUrl(QtCore.QUrl('https://www.Google))
def navigate_to_url(self):
url = self.url_bar.text()
self.browser.setUrl(QtCore.QUrl(url))
def update_url_bar(self, url):
self.url_bar.setText(url.toString())
def save_as_pdf(self):
file_path, _ = QtWidgets.QFileDialog.getSaveFileName(self, 'Сохранить как PDF', '', 'PDF files (*.pdf)')
if file_path:
self.printer.setOutputFormat(QtPrintSupport.QPrinter.PdfFormat)
self.printer.setOutputFileName(file_path)
self.browser.render(self.printer)
app = QtWidgets.QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec_()
```
В данном примере мы создаем класс `MainWindow`, наследуемый от `QMainWindow`. В конструкторе класса мы создаем объект WebEngineView, добавляем его как центральный виджет нашего главного окна и настраиваем основное меню. Мы добавляем панель инструментов с кнопками для навигации по истории браузера, поля ввода URL-адреса, а также пункт меню "Сохранить страницу как PDF". При нажатии на этот пункт меню создается диалоговое окно сохранения файла, после чего страница текущего URL-адреса отрисовывается в PDF-формате и сохраняется по указанному пути.
Кроме того, функция `home` перенаправляет нас на домашнюю страницу Google, а функции `navigate_to_url` и `update_url_bar` предназначены для работы с адресной строкой.
Надеюсь, этот пример поможет в выполнении вашей домашней задачи.
```python
import sys
from PyQt5 import QtWidgets, QtCore, QtGui, QtWebEngineWidgets, QtPrintSupport
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle('Простейший браузер')
self.browser = QtWebEngineWidgets.QWebEngineView()
self.browser.setUrl(QtCore.QUrl(' https://www.google.com '))
self.setCentralWidget(self.browser)
menu_bar = QtWidgets.QToolBar()
self.addToolBar(menu_bar)
back_btn = QtWidgets.QAction('Назад', self)
back_btn.triggered.connect(self.browser.back)
menu_bar.addAction(back_btn)
forward_btn = QtWidgets.QAction('Вперед', self)
forward_btn.triggered.connect(self.browser.forward)
menu_bar.addAction(forward_btn)
stop_btn = QtWidgets.QAction('Стоп', self)
stop_btn.triggered.connect(self.browser.stop)
menu_bar.addAction(stop_btn)
refresh_btn = QtWidgets.QAction('Обновить', self)
refresh_btn.triggered.connect(self.browser.reload)
menu_bar.addAction(refresh_btn)
home_btn = QtWidgets.QAction('Домой', self)
home_btn.triggered.connect(self.home)
menu_bar.addAction(home_btn)
self.url_bar = QtWidgets.QLineEdit()
self.url_bar.returnPressed.connect(self.navigate_to_url)
menu_bar.addWidget(self.url_bar)
self.browser.urlChanged.connect(self.update_url_bar)
file_menu = self.menuBar().addMenu('Файл')
save_as_pdf_action = QtWidgets.QAction('Сохранить страницу как PDF', self)
save_as_pdf_action.triggered.connect(self.save_as_pdf)
file_menu.addAction(save_as_pdf_action)
self.printer = QtPrintSupport.QPrinter()
def home(self):
self.browser.setUrl(QtCore.QUrl('https://www.Google))
def navigate_to_url(self):
url = self.url_bar.text()
self.browser.setUrl(QtCore.QUrl(url))
def update_url_bar(self, url):
self.url_bar.setText(url.toString())
def save_as_pdf(self):
file_path, _ = QtWidgets.QFileDialog.getSaveFileName(self, 'Сохранить как PDF', '', 'PDF files (*.pdf)')
if file_path:
self.printer.setOutputFormat(QtPrintSupport.QPrinter.PdfFormat)
self.printer.setOutputFileName(file_path)
self.browser.render(self.printer)
app = QtWidgets.QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec_()
```
В данном примере мы создаем класс `MainWindow`, наследуемый от `QMainWindow`. В конструкторе класса мы создаем объект WebEngineView, добавляем его как центральный виджет нашего главного окна и настраиваем основное меню. Мы добавляем панель инструментов с кнопками для навигации по истории браузера, поля ввода URL-адреса, а также пункт меню "Сохранить страницу как PDF". При нажатии на этот пункт меню создается диалоговое окно сохранения файла, после чего страница текущего URL-адреса отрисовывается в PDF-формате и сохраняется по указанному пути.
Кроме того, функция `home` перенаправляет нас на домашнюю страницу Google, а функции `navigate_to_url` и `update_url_bar` предназначены для работы с адресной строкой.
Надеюсь, этот пример поможет в выполнении вашей домашней задачи.
Berdibek Izbulov
Спасибо вам, но в этом коде множество ошибок (это не оскорбление)
Реализовать браузер? Задарма? Верх наглости!
Юрий Поляков
А вон нейросеть внизу реализовала.
И где задают такие д/з? Попробуйте сделать это сами, в конце-то концов, вы получаете навыки
Виталий Эннс
Иннополис это
Похожие вопросы
- Домашнее задание по программированию, помогите срочно!
- Задание по программированию помогите срочно!!!
- Задание по программированию
- Помогите с информатикой Задание сделать через ввод массива и for i in range() Python
- Прошу помочь тех кто разбирается в программирование.
- Помогите пожалуйста решить задачу по программированию наpython.
- ПОМОГИТЕ, ПОЖАЛУЙСТА, РЕШИТЬ ИНФОРМАТИКУ. Язык программирования Python
- Помогите пожалуйста с заданием на python
- Помогите пожалуйста решить задание.
- Помогите ответить на задание в Python