91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PyQt5中QWebEngineView的使用方法

發布時間:2020-10-26 18:19:02 來源:億速云 閱讀:1497 作者:Leah 欄目:開發技術

PyQt5中QWebEngineView的使用方法?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

一.支持視頻播放

關鍵代碼

self.settings().setAttribute(QWebEngineSettings.PluginsEnabled, True)   #支持視頻播放

二.支持頁面關閉請求

關鍵代碼

self.page().windowCloseRequested.connect(self.on_windowCloseRequested)   #頁面關閉請求

三.支持頁面下載請求

關鍵代碼

self.page().profile().downloadRequested.connect(self.on_downloadRequested) #頁面下載請求

完整源碼

【如下代碼,完全復制,直接運行,即可使用】

6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
import sys
import os
import datetime
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtWebEngineWidgets import QWebEngineView,QWebEngineSettings
 
# 調試窗口配置
# 如果不想自己創建調試窗口,可以使用Chrome連接這個地址進行調試
DEBUG_PORT = '5588'
DEBUG_URL = 'http://127.0.0.1:%s' % DEBUG_PORT
os.environ['QTWEBENGINE_REMOTE_DEBUGGING'] = DEBUG_PORT
 
################################################
#######創建主窗口
################################################
class MainWindow(QMainWindow):
  def __init__(self, *args, **kwargs):
    super().__init__(*args, **kwargs)
    self.setWindowTitle('My Browser')
    #self.showMaximized()
    self.setWindowFlags(Qt.FramelessWindowHint)
 
    #####創建tabwidget
    self.tabWidget = QTabWidget()
    self.tabWidget.setTabShape(QTabWidget.Triangular)
    self.tabWidget.setDocumentMode(True)
    self.tabWidget.setMovable(True)
    self.tabWidget.setTabsClosable(True)
    self.tabWidget.tabCloseRequested.connect(self.close_Tab)
    self.setCentralWidget(self.tabWidget)
 
    ####第一個tab
    self.webview = WebEngineView(self)  #self必須要有,是將主窗口作為參數,傳給瀏覽器
    self.webview.load(QUrl("https://www.baidu.com"))
    self.create_tab(self.webview)
 
    #網頁調試窗口
    self.inspector = QWebEngineView()
    self.inspector.setWindowTitle('Web Inspector')
    self.inspector.load(QUrl(DEBUG_URL))
    self.webview.loadFinished.connect(self.handleHtmlLoaded)    
 
  # 加載完成后顯示調試網頁
  def handleHtmlLoaded(self, ok):
    if ok:
      self.webview.page().setDevToolsPage(self.inspector.page())
      self.inspector.show()
 
  #創建tab
  def create_tab(self,webview):
    self.tab = QWidget()
    self.tabWidget.addTab(self.tab, "新標簽頁")
    self.tabWidget.setCurrentWidget(self.tab)
    #####
    self.Layout = QHBoxLayout(self.tab)
    self.Layout.setContentsMargins(0, 0, 0, 0)
    self.Layout.addWidget(webview)
 
  #關閉tab
  def close_Tab(self,index):
    if self.tabWidget.count()>1:
      self.tabWidget.removeTab(index)
    else:
      self.close()  # 當只有1個tab時,關閉主窗口
 
################################################
#######創建瀏覽器
################################################
class WebEngineView(QWebEngineView):
 
  def __init__(self,mainwindow,parent=None):
    super(WebEngineView, self).__init__(parent)
    self.mainwindow = mainwindow
    ##############
    self.settings().setAttribute(QWebEngineSettings.PluginsEnabled, True)   #支持視頻播放
    self.page().windowCloseRequested.connect(self.on_windowCloseRequested)   #頁面關閉請求
    self.page().profile().downloadRequested.connect(self.on_downloadRequested) #頁面下載請求
 
  # 支持頁面關閉請求
  def on_windowCloseRequested(self):
    the_index = self.mainwindow.tabWidget.currentIndex()
    self.mainwindow.tabWidget.removeTab(the_index)
 
 
  # 支持頁面下載按鈕
  def on_downloadRequested(self,downloadItem):
    if downloadItem.isFinished()==False and downloadItem.state()==0:
      ###生成文件存儲地址
      the_filename = downloadItem.url().fileName()
      if len(the_filename) == 0 or "." not in the_filename:
        cur_time = datetime.datetime.now().strftime('%Y%m%d%H%M%S')
        the_filename = "下載文件" + cur_time + ".xls"
      the_sourceFile = os.path.join(os.getcwd(), the_filename)
 
      ###下載文件
      # downloadItem.setSavePageFormat(QWebEngineDownloadItem.CompleteHtmlSaveFormat)
      downloadItem.setPath(the_sourceFile)
      downloadItem.accept()
      downloadItem.finished.connect(self.on_downloadfinished)
 
 
  # 下載結束觸發函數
  def on_downloadfinished(self):
    js_string = '''
    alert("下載成功,請到軟件同目錄下,查找下載文件!"); 
    '''
    self.page().runJavaScript(js_string)
 
 
  # 重寫createwindow()
  def createWindow(self, QWebEnginePage_WebWindowType):
    new_webview = WebEngineView(self.mainwindow)
 
    self.mainwindow.create_tab(new_webview)
 
    return new_webview
 
 
################################################
#######程序入門
################################################
if __name__ == "__main__":
  app = QApplication(sys.argv)
  the_mainwindow = MainWindow()
  the_mainwindow.show()
  sys.exit(app.exec())

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

苍山县| 巴楚县| 明光市| 阜康市| 定南县| 嘉祥县| 古交市| 秦皇岛市| 亚东县| 双桥区| 岳阳县| 五常市| 霍城县| 铁岭县| 巴楚县| 林甸县| 武定县| 女性| 平邑县| 郁南县| 礼泉县| 从江县| 奇台县| 宣武区| 奉化市| 赣榆县| 新密市| 兴安县| 翁源县| 郓城县| 岳阳县| 许昌市| 屯留县| 古浪县| 通山县| 东丰县| 新民市| 旬阳县| 济阳县| 静乐县| 桑植县|