MCPcopy Create free account
hub / github.com/PyQt5/PyQt / TextBrowser

Class TextBrowser

QTextBrowser/DynamicRes.py:26–67  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

24
25
26class TextBrowser(QTextBrowser):
27 NetImages = {}
28
29 def __init__(self, *args, **kwargs):
30 super(TextBrowser, self).__init__(*args, **kwargs)
31 self.setOpenLinks(False) # 禁止打开URL
32
33 def downloadImage(self, url):
34 try:
35 self.NetImages[url] = [QByteArray(requests.get(url.toString()).content), 1]
36 print('下载完成', url)
37 except Exception as e:
38 print('下载失败', url, e)
39 self.NetImages[url] = [QByteArray(), 1]
40
41 def loadResource(self, rtype, url):
42 ret = super(TextBrowser, self).loadResource(rtype, url)
43 # 加载图片资源
44 if rtype == QTextDocument.ImageResource:
45 if ret:
46 return ret
47 if url.toString().startswith('irony'): # 自定义的协议头
48 print('加载本地', '../Donate/zhifubao.png', url)
49 return QImage(
50 '../Donate/zhifubao.png') # 或者 QByteArray(open('../Donate/zhifubao.png', 'rb').read())
51 elif url.toString().startswith('http'): # 加载网络图片
52 img, status = self.NetImages.get(url, [None, None])
53 if url not in self.NetImages or status is None:
54 # 子线程下载
55 self.NetImages[url] = [None, 1]
56 print('download ', url)
57 Thread(target=self.downloadImage, args=(url,), daemon=True).start()
58 elif img:
59 return img
60 return ret
61
62 def mouseDoubleClickEvent(self, event):
63 # 双击图片得到图片的URL,也可以用来放大显示
64 super(TextBrowser, self).mouseDoubleClickEvent(event)
65 url = self.anchorAt(event.pos())
66 if url:
67 print('url:', url, self.document().resource(QTextDocument.ImageResource, QUrl(url)))
68
69
70class Window(QWidget):

Callers 1

__init__Method · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected