Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- import json
- from PyQt5.QtCore import *
- from PyQt5.QtWebEngineWidgets import *
- from PyQt5.QtWidgets import *
- class MainWindow(QMainWindow):
- def __init__(self):
- super(MainWindow, self).__init__()
- self.browser = QWebEngineView()
- self.browser.setUrl(QUrl('http://www.google.com'))
- self.setCentralWidget(self.browser)
- self.showMaximized()
- # lista de favoritos
- self.favorites = self.load_favorites()
- # barra de navegação
- navbar = QToolBar()
- self.addToolBar(navbar)
- # botão voltar
- back_btn = QAction('Voltar', self)
- back_btn.triggered.connect(self.browser.back)
- navbar.addAction(back_btn)
- # botão avançar
- forward_btn = QAction('Avançar', self)
- forward_btn.triggered.connect(self.browser.forward)
- navbar.addAction(forward_btn)
- # botão recarregar
- reload_btn = QAction('Recarregar', self)
- reload_btn.triggered.connect(self.browser.reload)
- navbar.addAction(reload_btn)
- # botão home
- home_btn = QAction('Início', self)
- home_btn.triggered.connect(self.navigate_home)
- navbar.addAction(home_btn)
- # botão adicionar aos favoritos
- add_fav_btn = QAction('Adicionar aos Favoritos', self)
- add_fav_btn.triggered.connect(self.add_to_favorites)
- navbar.addAction(add_fav_btn)
- # botão mostrar favoritos
- show_fav_btn = QAction('Mostrar Favoritos', self)
- show_fav_btn.triggered.connect(self.show_favorites)
- navbar.addAction(show_fav_btn)
- # barra de url
- self.url_bar = QLineEdit()
- self.url_bar.returnPressed.connect(self.navigate_to_url)
- navbar.addWidget(self.url_bar)
- # atualiza a url na barra de url
- self.browser.urlChanged.connect(self.update_url)
- def navigate_home(self):
- self.browser.setUrl(QUrl('http://www.google.com'))
- def navigate_to_url(self):
- url = self.url_bar.text()
- self.browser.setUrl(QUrl(url))
- def update_url(self, q):
- self.url_bar.setText(q.toString())
- def load_favorites(self):
- try:
- with open('favorites.json', 'r') as f:
- favorites = json.load(f)
- return favorites
- except FileNotFoundError:
- return []
- def save_favorites(self):
- with open('favorites.json', 'w') as f:
- json.dump(self.favorites, f)
- def add_to_favorites(self):
- # adiciona a url atual e o título da página aos favoritos
- self.favorites.append({
- 'url': self.url_bar.text(),
- 'title': self.browser.page().title() or 'Sem título'
- })
- print(f'Adicionado aos favoritos: {self.url_bar.text()}')
- self.save_favorites()
- def show_favorites(self):
- # cria uma nova janela de diálogo
- dialog = QDialog(self)
- # ajusta o tamanho da janela de diálogo
- dialog.resize(800, 600)
- # cria um layout vertical para a janela de diálogo
- layout = QVBoxLayout()
- dialog.setLayout(layout)
- # cria um QListWidget
- self.list_widget = QListWidget()
- # para cada url favorito, adiciona um item à QListWidget
- for fav in self.favorites:
- self.list_widget.addItem(f"{fav['title']} ({fav['url']})")
- # conecta o sinal itemClicked à função navigate_to_favorite
- self.list_widget.itemClicked.connect(self.navigate_to_favorite)
- # adiciona a QListWidget ao layout
- layout.addWidget(self.list_widget)
- # cria os botões de edição e remoção
- edit_button = QPushButton('Editar Favorito')
- edit_button.clicked.connect(self.edit_favorite)
- layout.addWidget(edit_button)
- remove_button = QPushButton('Remover Favorito')
- remove_button.clicked.connect(self.remove_favorite)
- layout.addWidget(remove_button)
- dialog.exec_()
- def navigate_to_favorite(self, item):
- # navega para o url favorito quando o item é clicado
- self.browser.setUrl(QUrl(item.text().split(" (")[1].rstrip(")")))
- def edit_favorite(self):
- # pega o item selecionado
- current_item = self.list_widget.currentItem()
- if current_item:
- # abre uma janela de entrada para editar o url
- new_url, ok = QInputDialog.getText(self, 'Editar Favorito', 'URL:', text=current_item.text().split(" (")[1].rstrip(")"))
- new_title, ok = QInputDialog.getText(self, 'Editar Favorito', 'Título:', text=current_item.text().split(" (")[0])
- if ok and new_url:
- # atualiza o url e o título na lista de favoritos e no QListWidget
- self.favorites[self.list_widget.row(current_item)] = {'url': new_url, 'title': new_title}
- current_item.setText(f"{new_title} ({new_url})")
- self.save_favorites()
- def remove_favorite(self):
- # pega o item selecionado
- current_item = self.list_widget.currentItem()
- if current_item:
- # remove o url da lista de favoritos e do QListWidget
- self.favorites.pop(self.list_widget.row(current_item))
- self.list_widget.takeItem(self.list_widget.row(current_item))
- self.save_favorites()
- app = QApplication(sys.argv)
- QApplication.setApplicationName('Navegador Python: 06/06/2023 - Versão 1.3')
- window = MainWindow()
- app.exec_()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement