讓我們開發乙個瀏覽器(一)實現了在乙個標籤中跳轉的建議瀏覽器,接下來新增一些功能,如位址列、多標籤、前進、後退、重新整理...
實現效果如下:
原始碼如下:
from pyqt5.qtcore import qurl, pyqtsignal, qt
from pyqt5.qtgui import qmovie, qicon
from pyqt5.qtwidgets import qmainwindow
from pyqt5.qtwebenginewidgets import qwebengineview
from ui.main_ui import ui_mainwindow
class newqwebengineview(qwebengineview):
new_signal = pyqtsignal(object)
def __init__(self):
super(newqwebengineview, self).__init__()
def createwindow(self, qwebenginepage_webwindowtype=none):
browser = newqwebengineview()
browser.resize(self.size())
#傳送新建的browser
self.new_signal.emit(browser)
return browser
class mybrowser(qmainwindow, ui_mainwindow):
def __init__(self):
super(mybrowser, self).__init__()
self.setupui(self)
self.is_first = true
self.pre_index = 0
self.browsers = {}
self.url = ''
# 初始化
self._init()
def _init(self):
# 清除原有的兩個標籤
self.tabwidget.clear()
self.tabwidget.tabcloserequested.connect(self.tab_close)
# 例項化newqwebengineview
browser = newqwebengineview()
browser.new_signal.connect(self.new_tab)
browser.createwindow()
#視窗最大化
self.setwindowstate(qt.windowmaximized)
#設定動態圖示
self.pm = qmovie(':/icon/images/title.gif')
self.pm.start()
self.pm.framechanged.connect(lambda: self.setwindowicon(qicon(self.pm.currentpixmap())))
# 槽函式
self.tabwidget.currentchanged.connect(self.tabwidget_currentchanged)
self.lineedit_url.returnpressed.connect(self.lineedit_url_returnpressed)
def lineedit_url_returnpressed(self):
browser = newqwebengineview()
browser.seturl(qurl(self.lineedit_url.text()))
self.new_tab(browser)
def tabwidget_currentchanged(self, _index):
try:
self.pushbutton_back.clicked.disconnect(self.browsers[self.pre_index].back)
self.pushbutton_forward.clicked.disconnect(self.browsers[self.pre_index].forward)
self.pushbutton_refresh.clicked.disconnect(self.browsers[self.pre_index].reload)
except:
pass
self.pushbutton_back.clicked.connect(self.browsers[_index].back)
self.pushbutton_forward.clicked.connect(self.browsers[_index].forward)
self.pushbutton_refresh.clicked.connect(self.browsers[_index].reload)
self.lineedit_url.settext(self.browsers[_index].url().url())
def update_url(self, index, browser, is_finish=true):
if is_finish:
self.tabwidget.settabtext(index, browser.page().title()[0:20])
self.lineedit_url.settext(browser.url().url())
else:
self.tabwidget.settabtext(index, browser.url().url()[0:20])
def tab_close(self, i):
self.tabwidget.removetab(i)
if self.tabwidget.count() == 0:
self.close()
def new_tab(self, browser):
if self.is_first:
browser.seturl(qurl(self.url))
self.is_first = false
browser.new_signal.connect(self.new_tab)
# 新增標籤,返回索引
_index = self.tabwidget.addtab(browser, '載入中...')
self.browsers[_index] = browser
self.tabwidget.setcurrentindex(_index)
self.pre_index = _index
# url變化後改變tab標題
browser.urlchanged.connect(lambda: self.update_url(_index, browser, is_finish=false))
# 載入完成之後將標籤標題修改為網頁相關的標題
browser.loadfinished.connect(lambda: self.update_url(_index, browser, is_finish=true))
if __name__ == '__main__':
import sys
my_browser = mybrowser()
my_browser.show()
使用Chrome瀏覽器,讓我們遠離(所有)廣告
你是否還在為瀏覽網頁時各種廣告霸屏而急躁不安?這裡分享乙個小技巧,如何自動遮蔽各大廣告。具體操作流程 首先開啟chrome瀏覽器,點選應用商店 點選進入應用商店 需要fq才能訪問,這個就小夥伴們自己想辦法了。安裝完成 檢視效果 訪問一下指令碼之家 完全沒有廣告,這種體驗。若是有的廣告沒有自動遮蔽,如...
推薦乙個瀏覽器 搜狗
上邊顯示自己的登陸的賬戶,有各種工具,在最下邊一行中的各種工具很強大,可以新增各種工具,搜狗瀏覽器本身提供了各種常用的瀏覽器,使用起來十分方便,我用的較多的有訊息盒子 在訊息盒子中可以繫結自己的各種賬號,各種通知都可以進行瀏覽 收藏夾也十分有用,個人比較喜歡 還有上邊的京東 了解購物資訊很方便的 本...
當你在瀏覽器中輸入乙個位址(一) 瀏覽器檢查位址
瀏覽器是我們日常都會用的乙個軟體,那麼,當你向瀏覽器的位址列輸入乙個位址 url 時,它背後究竟發生了哪些故事呢?對於瀏覽器來說,一般可以支援兩種位址的輸入 ip 192.直接訪問和通過網域名稱 www.com 訪問。在你輸入乙個位址後,瀏覽器最先做的就是檢查你的位址是否 合法 譬如,用ip的時候有...