Python

Помогите сделать домашнее задание по программированию!

Реализовать простейший браузер с возможностью сохранения страницы в pdf формате (с помощь PyQt5)
Berdibek Izbulov
Berdibek Izbulov
69
Хорошо, вот пример реализации простейшего браузера с 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` предназначены для работы с адресной строкой.

Надеюсь, этот пример поможет в выполнении вашей домашней задачи.
AI
Aman Ivraimov
14 368
Лучший ответ
Berdibek Izbulov Спасибо вам, но в этом коде множество ошибок (это не оскорбление)
Реализовать браузер? Задарма? Верх наглости!
Юрий Поляков А вон нейросеть внизу реализовала.
И где задают такие д/з? Попробуйте сделать это сами, в конце-то концов, вы получаете навыки
Виталий Эннс Иннополис это