2020.1.26 SimPyWeb X 3.0 诈尸更新,多处修改
- shell 脚本直接运行
python __init__.py
- 打包运行(可选择PyInstaller打包)
- 程序的init函数为启动函数,通过设定窗体的大小,标题,图标等等可以实现窗体的绘制。
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# 窗体
self.setWindowTitle(self.name + self.version)
self.setWindowIcon(QIcon('Assets/main.png'))
self.resize(1200, 800)
# 浏览器窗体
self.browser = QWebEngineView()
self.browser.load(QUrl("http://www.hao123.com/"))
self.setCentralWidget(self.browser)
- 工具条实现
# 工具条
navigation_bar = QToolBar('Navigation')
navigation_bar.setIconSize(QSize(32, 32))
self.addToolBar(navigation_bar)
- 工具条按钮以及地址栏
# 后退按钮
back_button = QAction(QIcon('Assets/back.png'), '后退', self)
# 其他组件
self.url_text_bar = QLineEdit()
- 将组件添加到工具条
navigation_bar.addAction(home_button)
navigation_bar.addSeparator()
navigation_bar.addWidget(self.url_text_bar)
- 工具条按钮触发事件
# 事件触发
back_button.triggered.connect(self.browser.back)
- 获取网页标题
def renew_title(self, s):
self.setWindowTitle(self.name + self.version + " -- " + s)
- 获取网页图标
def renew_icon(self, ico):
self.setWindowIcon(ico)
- 导向地址栏地址
def navigate_to_url(self):
s = QUrl(self.url_text_bar.text())
if s.scheme() == '':
s.setScheme('http')
self.browser.load(s)
- 地址栏重新操作
def renew_urlbar(self, s):
self.url_text_bar.setText(s.toString())
self.url_text_bar.setCursorPosition(0)
- 进度条设置
def renew_progress_bar(self, p):
self.progress_bar.setValue(p)
- 添加标签
def add_new_tab(self, tab):
i = self.tabs.addTab(tab, "")
self.tabs.setCurrentIndex(i)
tab.back_button.triggered.connect(tab.browser.back)
tab.next_button.triggered.connect(tab.browser.forward)
tab.stop_button.triggered.connect(tab.browser.stop)
tab.refresh_button.triggered.connect(tab.browser.reload)
tab.home_button.triggered.connect(tab.navigate_to_home)
tab.enter_button.triggered.connect(tab.navigate_to_url)
tab.add_button.triggered.connect(self.add_blank_tab)
tab.set_button.triggered.connect(tab.create_about_window)
tab.url_text_bar.returnPressed.connect(tab.navigate_to_url)
tab.browser.urlChanged.connect(tab.renew_urlbar)
tab.browser.loadProgress.connect(tab.renew_progress_bar)
tab.browser.titleChanged.connect(lambda title: (self.tabs.setTabText(i, title),
self.tabs.setTabToolTip(i, title)))
tab.browser.iconChanged.connect(lambda icon: self.tabs.setTabIcon(i, icon))
- 删除标签
def close_current_tab(self, i):
if self.tabs.count() > 1:
self.tabs.removeTab(i)
else:
self.close()