用户:
企鹅不是鹅查看:0 回复:0 评论:0 创建时间:2023-06-30T13:09:06
废话不多说,上代码(没做完)(能运行):
from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, QShortcut, QTabWidget, QLineEdit, QMenu
from PyQt5.QtGui import QKeySequence
from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEnginePage
class BrowserWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("浏览器 --by SJR")
self.setGeometry(100, 100, 800, 600)
self.tab_widget = QTabWidget(self)
self.tab_widget.setTabsClosable(True)
self.tab_widget.tabCloseRequested.connect(self.close_tab)
self.setCentralWidget(self.tab_widget)
self.create_new_tab()
self.create_toolbar()
def create_new_tab(self):
browser = QWebEngineView(self)
browser.load(QUrl("https://www.喵/"))
self.tab_widget.addTab(browser, "标签页")
self.tab_widget.setCurrentWidget(browser)
browser.page().titleChanged.connect(
lambda title: self.update_tab_title(browser, title))
def update_tab_title(self, browser, title):
index = self.tab_widget.indexOf(browser)
self.tab_widget.setTabText(index, title)
def close_tab(self, index):
widget = self.tab_widget.widget(index)
widget.deleteLater()
self.tab_widget.removeTab(index)
def create_toolbar(self):
toolbar = self.addToolBar("工具栏")
new_tab_action = QAction("+", self)
new_tab_action.setShortcut(QKeySequence("Ctrl+N"))
new_tab_action.triggered.connect(self.create_new_tab)
toolbar.addAction(new_tab_action)
back_action = QAction("←", self)
back_action.setShortcut(QKeySequence("Ctrl+Left"))
back_action.triggered.connect(self.current_browser.back)
toolbar.addAction(back_action)
forward_action = QAction("→", self)
forward_action.setShortcut(QKeySequence("Ctrl+Right"))
forward_action.triggered.connect(self.current_browser.forward)
toolbar.addAction(forward_action)
reload_action = QAction("↺", self)
reload_action.setShortcut(QKeySequence("Ctrl+R"))
reload_action.triggered.connect(self.current_browser.reload)
toolbar.addAction(reload_action)
more_menu = QMenu("···", self)
more_menu.addAction("书签")
more_menu.addAction("历史记录")
more_menu.addAction("下载管理器")
more_menu.addAction("设置")
toolbar.addAction(more_menu.menuAction())
self.url_bar = QLineEdit()
self.url_bar.returnPressed.connect(self.navigate_to_url)
toolbar.addWidget(self.url_bar)
self.current_browser.urlChanged.connect(self.update_url_bar)
close_tab_shortcut = QShortcut(QKeySequence("Ctrl+W"), self)
close_tab_shortcut.activated.connect(self.close_current_tab)
@property
def current_browser(self):
return self.tab_widget.currentWidget()
def navigate_to_url(self):
url = QUrl(self.url_bar.text())
self.current_browser.load(url)
def update_url_bar(self, url):
self.url_bar.setText(url.toString())
def close_current_tab(self):
current_index = self.tab_widget.currentIndex()
self.close_tab(current_index)
if __name__ == "__main__":
app = QApplication([])
window = BrowserWindow()
window.show()
app.exec_()