demo
1
.gitignore
vendored
|
@ -129,3 +129,4 @@ tmp
|
|||
.pydevproject
|
||||
.README.md.html
|
||||
README.md.html
|
||||
shape_predictor_68_face_landmarks.dat
|
|
@ -1,4 +1,20 @@
|
|||
eclipse.preferences.version=1
|
||||
encoding//Demo/EmbedWindow.py=utf-8
|
||||
encoding//Demo/FacePoints.py=utf-8
|
||||
encoding//Demo/FollowWindow.py=utf-8
|
||||
encoding//Demo/FramelessWindow.py=utf-8
|
||||
encoding//Demo/Lib/Application.py=utf-8
|
||||
encoding//Demo/NativeEvent.py=utf-8
|
||||
encoding//Demo/Notification.py=utf-8
|
||||
encoding//Demo/ProbeWindow.py=utf-8
|
||||
encoding//Demo/RestartWindow.py=utf-8
|
||||
encoding//Demo/SharedMemory.py=utf-8
|
||||
encoding//Demo/SingleApplication.py=utf-8
|
||||
encoding//Demo/VerificationCode.py=utf-8
|
||||
encoding//Demo/WeltHideWindow.py=utf-8
|
||||
encoding//Demo/WindowNotify.py=utf-8
|
||||
encoding//QFont/AwesomeFont.py=utf-8
|
||||
encoding//QFont/Lib/FontAwesome.py=utf-8
|
||||
encoding//QListView/CustomWidgetSortItem.py=utf-8
|
||||
encoding//QListView/SortItemByRole.py=utf-8
|
||||
encoding//QMessageBox/CustomColorIcon.py=utf-8
|
||||
|
@ -22,3 +38,5 @@ encoding//QWebView/DreamTree.py=utf-8
|
|||
encoding//QWidget/Lib/CustomPaintWidget.py=utf-8
|
||||
encoding//QWidget/Lib/CustomWidget.py=utf-8
|
||||
encoding//QWidget/WidgetStyle.py=utf-8
|
||||
encoding//Test/\u5168\u5C40\u70ED\u952E/HotKey.py=utf-8
|
||||
encoding//Test/\u81EA\u52A8\u66F4\u65B0/test.py=utf-8
|
||||
|
|
BIN
Demo/Data/AutoRestart.exe
Normal file
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
|
@ -1,3 +1,19 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
"""
|
||||
Created on 2018年3月1日
|
||||
@author: Irony
|
||||
@site: https://pyqt5.com , https://github.com/892768447
|
||||
@email: 892768447@qq.com
|
||||
@file: EmbedWindow
|
||||
@description: 嵌入外部窗口
|
||||
"""
|
||||
|
||||
__Author__ = 'By: Irony\nQQ: 892768447\nEmail: 892768447@qq.com'
|
||||
__Copyright__ = 'Copyright (c) 2018 Irony'
|
||||
__Version__ = 1.0
|
||||
|
||||
from PyQt5.QtGui import QWindow
|
||||
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QPushButton, QListWidget,\
|
||||
QLabel
|
|
@ -6,13 +6,17 @@ Created on 2018年1月29日
|
|||
@author: Irony."[讽刺]
|
||||
@site: https://pyqt5.com , https://github.com/892768447
|
||||
@email: 892768447@qq.com
|
||||
@file: OpencvWidget
|
||||
@description:
|
||||
@file: FacePoints
|
||||
@description: 人脸特征点
|
||||
'''
|
||||
from bz2 import BZ2Decompressor
|
||||
import cgitb
|
||||
import os
|
||||
import sys
|
||||
|
||||
from PyQt5.QtCore import QTimer
|
||||
from PyQt5.QtCore import QTimer, QUrl, QFile, QIODevice
|
||||
from PyQt5.QtGui import QImage, QPixmap
|
||||
from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest
|
||||
from PyQt5.QtWidgets import QLabel, QMessageBox, QApplication
|
||||
import cv2 # @UnresolvedImport
|
||||
import dlib
|
||||
|
@ -24,23 +28,66 @@ __Copyright__ = "Copyright (c) 2018 Irony.\"[讽刺]"
|
|||
__Version__ = "Version 1.0"
|
||||
|
||||
DOWNSCALE = 4
|
||||
URL = 'http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2'
|
||||
|
||||
|
||||
class OpencvWidget(QLabel):
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(OpencvWidget, self).__init__(*args, **kwargs)
|
||||
self.httpRequestAborted = False
|
||||
self.fps = 24
|
||||
self.resize(800, 600)
|
||||
self.setText("请稍候,正在初始化数据和摄像头。。。")
|
||||
|
||||
def start(self):
|
||||
if not os.path.exists("Data/shape_predictor_68_face_landmarks.dat"):
|
||||
self.setText("正在下载数据文件。。。")
|
||||
self.outFile = QFile(
|
||||
"Data/shape_predictor_68_face_landmarks.dat.bz2")
|
||||
if not self.outFile.open(QIODevice.WriteOnly):
|
||||
QMessageBox.critical(self, '错误', '无法写入文件')
|
||||
return
|
||||
self.qnam = QNetworkAccessManager(self)
|
||||
self._reply = self.qnam.get(QNetworkRequest(QUrl(URL)))
|
||||
self._reply.finished.connect(self.httpFinished)
|
||||
self._reply.readyRead.connect(self.httpReadyRead)
|
||||
self._reply.downloadProgress.connect(self.updateDataReadProgress)
|
||||
else:
|
||||
self.startCapture()
|
||||
|
||||
def httpFinished(self):
|
||||
self.outFile.close()
|
||||
if self.httpRequestAborted or self._reply.error():
|
||||
self.outFile.remove()
|
||||
self._reply.deleteLater()
|
||||
del self._reply
|
||||
# 下载完成解压文件并加载摄像头
|
||||
self.setText("正在解压数据。。。")
|
||||
try:
|
||||
bz = BZ2Decompressor()
|
||||
data = bz.decompress(
|
||||
open('Data/shape_predictor_68_face_landmarks.dat.bz2', 'rb').read())
|
||||
open('Data/shape_predictor_68_face_landmarks.dat', 'wb').write(data)
|
||||
except Exception as e:
|
||||
self.setText('解压失败:' + str(e))
|
||||
return
|
||||
self.setText('正在开启摄像头。。。')
|
||||
self.startCapture()
|
||||
|
||||
def httpReadyRead(self):
|
||||
self.outFile.write(self._reply.readAll())
|
||||
self.outFile.flush()
|
||||
|
||||
def updateDataReadProgress(self, bytesRead, totalBytes):
|
||||
self.setText('已下载:{} %'.format(round(bytesRead / 64040097 * 100, 2)))
|
||||
|
||||
def startCapture(self):
|
||||
self.setText("请稍候,正在初始化数据和摄像头。。。")
|
||||
try:
|
||||
# 检测相关
|
||||
self.detector = dlib.get_frontal_face_detector()
|
||||
self.predictor = dlib.shape_predictor(
|
||||
"data/shape_predictor_68_face_landmarks.dat")
|
||||
cascade_fn = "data/lbpcascades/lbpcascade_frontalface.xml"
|
||||
"Data/shape_predictor_68_face_landmarks.dat")
|
||||
cascade_fn = "Data/lbpcascades/lbpcascade_frontalface.xml"
|
||||
self.cascade = cv2.CascadeClassifier(cascade_fn)
|
||||
if not self.cascade:
|
||||
return QMessageBox.critical(self, "错误", cascade_fn + " 无法找到")
|
||||
|
@ -54,6 +101,17 @@ class OpencvWidget(QLabel):
|
|||
QMessageBox.critical(self, "错误", str(e))
|
||||
|
||||
def closeEvent(self, event):
|
||||
if hasattr(self, "_reply") and self._reply:
|
||||
self.httpRequestAborted = True
|
||||
self._reply.abort()
|
||||
try:
|
||||
os.unlink("Data/shape_predictor_68_face_landmarks.dat.bz2")
|
||||
except:
|
||||
pass
|
||||
try:
|
||||
os.unlink("Data/shape_predictor_68_face_landmarks.dat")
|
||||
except:
|
||||
pass
|
||||
if hasattr(self, "timer"):
|
||||
self.timer.stop()
|
||||
self.timer.deleteLater()
|
||||
|
@ -105,9 +163,8 @@ class OpencvWidget(QLabel):
|
|||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.excepthook = cgitb.enable(1, None, 5, '')
|
||||
app = QApplication(sys.argv)
|
||||
w = OpencvWidget()
|
||||
w.show()
|
||||
# 5秒后启动
|
||||
QTimer.singleShot(5000, w.start)
|
||||
sys.exit(app.exec_())
|
|
@ -7,7 +7,7 @@ Created on 2018年10月22日
|
|||
@site: https://github.com/892768447
|
||||
@email: 892768447@qq.com
|
||||
@file: FollowWindow
|
||||
@description:
|
||||
@description: 跟随外部窗口
|
||||
"""
|
||||
import os
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
from PyQt5.QtGui import QIcon
|
||||
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QPushButton, QTextEdit
|
||||
|
||||
from FramelessWindow import FramelessWindow # @UnresolvedImport
|
||||
from Lib.FramelessWindow import FramelessWindow # @UnresolvedImport
|
||||
|
||||
|
||||
# Created on 2018年4月30日
|
||||
|
@ -68,7 +68,7 @@ if __name__ == '__main__':
|
|||
app.setStyleSheet(StyleSheet)
|
||||
w = FramelessWindow()
|
||||
w.setWindowTitle('测试标题栏')
|
||||
w.setWindowIcon(QIcon('Qt.ico'))
|
||||
w.setWindowIcon(QIcon('Data/Qt.ico'))
|
||||
w.setWidget(MainWindow(w)) # 把自己的窗口添加进来
|
||||
w.show()
|
||||
sys.exit(app.exec_())
|
|
@ -1,22 +1,24 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
"""Created on 2018年8月2日
|
||||
author: Irony
|
||||
site: https://pyqt5.com , https://github.com/892768447
|
||||
email: 892768447@qq.com
|
||||
file: win无边框调整大小
|
||||
description:
|
||||
"""
|
||||
|
||||
from ctypes.wintypes import POINT
|
||||
import ctypes.wintypes
|
||||
|
||||
from PyQt5.QtCore import Qt
|
||||
from PyQt5.QtWidgets import QWidget
|
||||
from PyQt5.QtWidgets import QWidget, QPushButton
|
||||
from PyQt5.QtWinExtras import QtWin
|
||||
import win32api
|
||||
import win32con
|
||||
import win32gui
|
||||
|
||||
|
||||
# Created on 2018年8月2日
|
||||
# author: Irony
|
||||
# site: https://pyqt5.com , https://github.com/892768447
|
||||
# email: 892768447@qq.com
|
||||
# file: win无边框调整大小
|
||||
# description:
|
||||
__Author__ = """By: Irony
|
||||
QQ: 892768447
|
||||
Email: 892768447@qq.com"""
|
||||
|
@ -64,6 +66,12 @@ class Window(QWidget):
|
|||
retval, result = super(Window, self).nativeEvent(eventType, message)
|
||||
if eventType == "windows_generic_MSG":
|
||||
msg = ctypes.wintypes.MSG.from_address(message.__int__())
|
||||
# 获取鼠标移动经过时的坐标
|
||||
x = win32api.LOWORD(msg.lParam) - self.frameGeometry().x()
|
||||
y = win32api.HIWORD(msg.lParam) - self.frameGeometry().y()
|
||||
# 判断鼠标位置是否有其它控件
|
||||
if self.childAt(x, y) != None:
|
||||
return retval, result
|
||||
if msg.message == win32con.WM_NCCALCSIZE:
|
||||
# 拦截不显示顶部的系统自带的边框
|
||||
return True, 0
|
||||
|
@ -77,9 +85,6 @@ class Window(QWidget):
|
|||
# 修改放置点的x,y坐标为0,0
|
||||
info.ptMaxPosition.x, info.ptMaxPosition.y = 0, 0
|
||||
if msg.message == win32con.WM_NCHITTEST:
|
||||
# 获取鼠标移动经过时的坐标
|
||||
x = win32api.LOWORD(msg.lParam) - self.frameGeometry().x()
|
||||
y = win32api.HIWORD(msg.lParam) - self.frameGeometry().y()
|
||||
w, h = self.width(), self.height()
|
||||
lx = x < self.BorderWidth
|
||||
rx = x > w - self.BorderWidth
|
||||
|
@ -119,5 +124,7 @@ if __name__ == '__main__':
|
|||
from PyQt5.QtWidgets import QApplication
|
||||
app = QApplication(sys.argv)
|
||||
w = Window()
|
||||
btn = QPushButton('exit', w, clicked=app.quit)
|
||||
btn.setGeometry(10, 10, 100, 40)
|
||||
w.show()
|
||||
sys.exit(app.exec_())
|
|
@ -1,17 +1,20 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Created on 2018年6月8日
|
||||
author: Irony
|
||||
site: https://pyqt5.com , https://github.com/892768447
|
||||
email: 892768447@qq.com
|
||||
file: ProbeWindow
|
||||
description: 简单探测窗口和放大截图
|
||||
"""
|
||||
|
||||
from PyQt5.QtCore import Qt, QRect
|
||||
from PyQt5.QtGui import QPainter, QPen, QCursor, QColor
|
||||
from PyQt5.QtWidgets import QLabel, QWidget, QApplication
|
||||
import win32gui
|
||||
|
||||
|
||||
# Created on 2018年6月8日
|
||||
# author: Irony
|
||||
# site: https://pyqt5.com , https://github.com/892768447
|
||||
# email: 892768447@qq.com
|
||||
# file: 简单探测窗口和放大截图
|
||||
# description:
|
||||
__Author__ = """By: Irony
|
||||
QQ: 892768447
|
||||
Email: 892768447@qq.com"""
|
|
@ -1,34 +0,0 @@
|
|||
# 图片加载测试
|
||||
|
||||
### [Python3.4.4 or Python3.5][PyQt5]
|
||||
|
||||
### 分别通过2种情况加载图片文件和资源文件
|
||||
|
||||
1. 通过pyrcc5转换res.qrc为res_rc.py文件,可以直接import加载
|
||||
- 转换命令pyrcc5 res.qrc -o res_rc.py
|
||||
- import res_rc
|
||||
- 此时可以通过QPixmap(":/images/head.jpg")来加载
|
||||
|
||||
2. 通过rcc命令转成为二进制文件res.rcc
|
||||
- 转换命令cd tools
|
||||
- rcc.exe -binary ../res.qrc -o ../res.data
|
||||
- 通过QResource.registerResource("res.data")注册
|
||||
- 此时可以通过QPixmap(":/images/head.jpg")来加载
|
||||
|
||||
3. 文本资源读取
|
||||
|
||||
```
|
||||
def readText(path):
|
||||
file = QFile(path)
|
||||
if not file.open(QIODevice.ReadOnly):
|
||||
return ''
|
||||
stream = QTextStream(file)
|
||||
#下面这句设置编码根据文件的编码自行确定
|
||||
stream.setCodec(QTextCodec.codecForName('UTF-8'))
|
||||
data = stream.readAll()
|
||||
file.close()
|
||||
del stream
|
||||
return data
|
||||
```
|
||||
|
||||
其它方式见https://github.com/892768447/PyQt/tree/master/%E5%9B%BE%E7%89%87%E5%8A%A0%E8%BD%BD
|
Before Width: | Height: | Size: 6.5 KiB |
|
@ -1,44 +0,0 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
'''
|
||||
Created on 2018年05月01日
|
||||
@author: Irony."[讽刺]
|
||||
@site: https://pyqt5.com , https://github.com/892768447
|
||||
@email: 892768447@qq.com
|
||||
@file: qrctest1
|
||||
@description:
|
||||
'''
|
||||
|
||||
from PyQt5.QtGui import QPixmap
|
||||
from PyQt5.QtWidgets import QLabel
|
||||
|
||||
import res_rc # @UnusedImport @UnresolvedImport
|
||||
|
||||
|
||||
__Author__ = "By: Irony.\"[讽刺]\nQQ: 892768447\nEmail: 892768447@qq.com"
|
||||
__Copyright__ = "Copyright (c) 2017 Irony.\"[讽刺]"
|
||||
__Version__ = "Version 1.0"
|
||||
|
||||
|
||||
class ImageView(QLabel):
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(ImageView, self).__init__(*args, **kwargs)
|
||||
self.resize(800, 600)
|
||||
|
||||
# 从资源文件res_rc.py中加载
|
||||
# 转换命令pyrcc5 res.qrc -o res_rc.py
|
||||
# 这种方式是从通过pyrcc5转换res.qrc为res_rc.py文件,可以直接import加载
|
||||
# 此时可以通过路径:/images/head.jpg来访问
|
||||
self.setPixmap(QPixmap(":/images/head.jpg"))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import sys
|
||||
from PyQt5.QtWidgets import QApplication
|
||||
app = QApplication(sys.argv)
|
||||
app.aboutToQuit.connect(res_rc.qCleanupResources) # 退出时要清理资源
|
||||
w = ImageView()
|
||||
w.show()
|
||||
sys.exit(app.exec_())
|
|
@ -1,44 +0,0 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
'''
|
||||
Created on 2018年05月01日
|
||||
@author: Irony."[讽刺]
|
||||
@site: https://pyqt5.com , https://github.com/892768447
|
||||
@email: 892768447@qq.com
|
||||
@file: qrctest2
|
||||
@description:
|
||||
'''
|
||||
|
||||
|
||||
from PyQt5.QtCore import QResource
|
||||
from PyQt5.QtGui import QPixmap
|
||||
from PyQt5.QtWidgets import QLabel
|
||||
|
||||
|
||||
__Author__ = "By: Irony.\"[讽刺]\nQQ: 892768447\nEmail: 892768447@qq.com"
|
||||
__Copyright__ = "Copyright (c) 2017 Irony.\"[讽刺]"
|
||||
__Version__ = "Version 1.0"
|
||||
|
||||
|
||||
class ImageView(QLabel):
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(ImageView, self).__init__(*args, **kwargs)
|
||||
self.resize(800, 600)
|
||||
self.setPixmap(QPixmap(":/images/head.jpg"))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import sys
|
||||
from PyQt5.QtWidgets import QApplication
|
||||
app = QApplication(sys.argv)
|
||||
# 从二进制资源文件res.data中加载
|
||||
# 转换命令cd tools
|
||||
# rcc.exe -binary ../res.qrc -o ../res.data
|
||||
# 此时需要注册
|
||||
QResource.registerResource("res.data")
|
||||
app.aboutToQuit.connect(lambda: QResource.unregisterResource("res.data"))
|
||||
w = ImageView()
|
||||
w.show()
|
||||
sys.exit(app.exec_())
|
|
@ -1,6 +0,0 @@
|
|||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file>images/head.jpg</file>
|
||||
<file>README.md</file>
|
||||
</qresource>
|
||||
</RCC>
|
|
@ -1,545 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Resource object code
|
||||
#
|
||||
# Created by: The Resource Compiler for PyQt5 (Qt v5.10.1)
|
||||
#
|
||||
# WARNING! All changes made in this file will be lost!
|
||||
|
||||
from PyQt5 import QtCore
|
||||
|
||||
qt_resource_data = b"\
|
||||
\x00\x00\x04\x0e\
|
||||
\x23\
|
||||
\x20\xe5\x9b\xbe\xe7\x89\x87\xe5\x8a\xa0\xe8\xbd\xbd\xe6\xb5\x8b\
|
||||
\xe8\xaf\x95\x0d\x0a\x0d\x0a\x23\x23\x23\x20\x5b\x50\x79\x74\x68\
|
||||
\x6f\x6e\x33\x2e\x34\x2e\x34\x20\x6f\x72\x20\x50\x79\x74\x68\x6f\
|
||||
\x6e\x33\x2e\x35\x5d\x5b\x50\x79\x51\x74\x35\x5d\x0d\x0a\x0d\x0a\
|
||||
\x23\x23\x23\x20\xe5\x88\x86\xe5\x88\xab\xe9\x80\x9a\xe8\xbf\x87\
|
||||
\x32\xe7\xa7\x8d\xe6\x83\x85\xe5\x86\xb5\xe5\x8a\xa0\xe8\xbd\xbd\
|
||||
\xe5\x9b\xbe\xe7\x89\x87\xe6\x96\x87\xe4\xbb\xb6\xe5\x92\x8c\xe8\
|
||||
\xb5\x84\xe6\xba\x90\xe6\x96\x87\xe4\xbb\xb6\x0d\x0a\x0d\x0a\x31\
|
||||
\x2e\x20\xe9\x80\x9a\xe8\xbf\x87\x70\x79\x72\x63\x63\x35\xe8\xbd\
|
||||
\xac\xe6\x8d\xa2\x72\x65\x73\x2e\x71\x72\x63\xe4\xb8\xba\x72\x65\
|
||||
\x73\x5f\x72\x63\x2e\x70\x79\xe6\x96\x87\xe4\xbb\xb6\xef\xbc\x8c\
|
||||
\xe5\x8f\xaf\xe4\xbb\xa5\xe7\x9b\xb4\xe6\x8e\xa5\x69\x6d\x70\x6f\
|
||||
\x72\x74\xe5\x8a\xa0\xe8\xbd\xbd\x0d\x0a\x20\x2d\x20\xe8\xbd\xac\
|
||||
\xe6\x8d\xa2\xe5\x91\xbd\xe4\xbb\xa4\x70\x79\x72\x63\x63\x35\x20\
|
||||
\x72\x65\x73\x2e\x71\x72\x63\x20\x2d\x6f\x20\x72\x65\x73\x5f\x72\
|
||||
\x63\x2e\x70\x79\x0d\x0a\x20\x2d\x20\x69\x6d\x70\x6f\x72\x74\x20\
|
||||
\x72\x65\x73\x5f\x72\x63\x0d\x0a\x20\x2d\x20\xe6\xad\xa4\xe6\x97\
|
||||
\xb6\xe5\x8f\xaf\xe4\xbb\xa5\xe9\x80\x9a\xe8\xbf\x87\x51\x50\x69\
|
||||
\x78\x6d\x61\x70\x28\x22\x3a\x2f\x69\x6d\x61\x67\x65\x73\x2f\x68\
|
||||
\x65\x61\x64\x2e\x6a\x70\x67\x22\x29\xe6\x9d\xa5\xe5\x8a\xa0\xe8\
|
||||
\xbd\xbd\x0d\x0a\x0d\x0a\x32\x2e\x20\xe9\x80\x9a\xe8\xbf\x87\x72\
|
||||
\x63\x63\xe5\x91\xbd\xe4\xbb\xa4\xe8\xbd\xac\xe6\x88\x90\xe4\xb8\
|
||||
\xba\xe4\xba\x8c\xe8\xbf\x9b\xe5\x88\xb6\xe6\x96\x87\xe4\xbb\xb6\
|
||||
\x72\x65\x73\x2e\x72\x63\x63\x0d\x0a\x20\x2d\x20\xe8\xbd\xac\xe6\
|
||||
\x8d\xa2\xe5\x91\xbd\xe4\xbb\xa4\x63\x64\x20\x74\x6f\x6f\x6c\x73\
|
||||
\x0d\x0a\x20\x2d\x20\x72\x63\x63\x2e\x65\x78\x65\x20\x2d\x62\x69\
|
||||
\x6e\x61\x72\x79\x20\x2e\x2e\x2f\x72\x65\x73\x2e\x71\x72\x63\x20\
|
||||
\x2d\x6f\x20\x2e\x2e\x2f\x72\x65\x73\x2e\x64\x61\x74\x61\x0d\x0a\
|
||||
\x20\x2d\x20\xe9\x80\x9a\xe8\xbf\x87\x51\x52\x65\x73\x6f\x75\x72\
|
||||
\x63\x65\x2e\x72\x65\x67\x69\x73\x74\x65\x72\x52\x65\x73\x6f\x75\
|
||||
\x72\x63\x65\x28\x22\x72\x65\x73\x2e\x64\x61\x74\x61\x22\x29\xe6\
|
||||
\xb3\xa8\xe5\x86\x8c\x0d\x0a\x20\x2d\x20\xe6\xad\xa4\xe6\x97\xb6\
|
||||
\xe5\x8f\xaf\xe4\xbb\xa5\xe9\x80\x9a\xe8\xbf\x87\x51\x50\x69\x78\
|
||||
\x6d\x61\x70\x28\x22\x3a\x2f\x69\x6d\x61\x67\x65\x73\x2f\x68\x65\
|
||||
\x61\x64\x2e\x6a\x70\x67\x22\x29\xe6\x9d\xa5\xe5\x8a\xa0\xe8\xbd\
|
||||
\xbd\x0d\x0a\x0d\x0a\x33\x2e\x20\xe6\x96\x87\xe6\x9c\xac\xe8\xb5\
|
||||
\x84\xe6\xba\x90\xe8\xaf\xbb\xe5\x8f\x96\x0d\x0a\x0d\x0a\x60\x60\
|
||||
\x60\x0d\x0a\x64\x65\x66\x20\x72\x65\x61\x64\x54\x65\x78\x74\x28\
|
||||
\x70\x61\x74\x68\x29\x3a\x0d\x0a\x20\x20\x20\x20\x66\x69\x6c\x65\
|
||||
\x20\x3d\x20\x51\x46\x69\x6c\x65\x28\x70\x61\x74\x68\x29\x0d\x0a\
|
||||
\x20\x20\x20\x20\x69\x66\x20\x6e\x6f\x74\x20\x66\x69\x6c\x65\x2e\
|
||||
\x6f\x70\x65\x6e\x28\x51\x49\x4f\x44\x65\x76\x69\x63\x65\x2e\x52\
|
||||
\x65\x61\x64\x4f\x6e\x6c\x79\x29\x3a\x0d\x0a\x20\x20\x20\x20\x20\
|
||||
\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x27\x27\x0d\x0a\x20\x20\
|
||||
\x20\x20\x73\x74\x72\x65\x61\x6d\x20\x3d\x20\x51\x54\x65\x78\x74\
|
||||
\x53\x74\x72\x65\x61\x6d\x28\x66\x69\x6c\x65\x29\x0d\x0a\x20\x20\
|
||||
\x20\x20\x23\xe4\xb8\x8b\xe9\x9d\xa2\xe8\xbf\x99\xe5\x8f\xa5\xe8\
|
||||
\xae\xbe\xe7\xbd\xae\xe7\xbc\x96\xe7\xa0\x81\xe6\xa0\xb9\xe6\x8d\
|
||||
\xae\xe6\x96\x87\xe4\xbb\xb6\xe7\x9a\x84\xe7\xbc\x96\xe7\xa0\x81\
|
||||
\xe8\x87\xaa\xe8\xa1\x8c\xe7\xa1\xae\xe5\xae\x9a\x0d\x0a\x20\x20\
|
||||
\x20\x20\x73\x74\x72\x65\x61\x6d\x2e\x73\x65\x74\x43\x6f\x64\x65\
|
||||
\x63\x28\x51\x54\x65\x78\x74\x43\x6f\x64\x65\x63\x2e\x63\x6f\x64\
|
||||
\x65\x63\x46\x6f\x72\x4e\x61\x6d\x65\x28\x27\x55\x54\x46\x2d\x38\
|
||||
\x27\x29\x29\x0d\x0a\x20\x20\x20\x20\x64\x61\x74\x61\x20\x3d\x20\
|
||||
\x73\x74\x72\x65\x61\x6d\x2e\x72\x65\x61\x64\x41\x6c\x6c\x28\x29\
|
||||
\x0d\x0a\x20\x20\x20\x20\x66\x69\x6c\x65\x2e\x63\x6c\x6f\x73\x65\
|
||||
\x28\x29\x0d\x0a\x20\x20\x20\x20\x64\x65\x6c\x20\x73\x74\x72\x65\
|
||||
\x61\x6d\x0d\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x64\
|
||||
\x61\x74\x61\x0d\x0a\x60\x60\x60\x0d\x0a\x0d\x0a\xe5\x85\xb6\xe5\
|
||||
\xae\x83\xe6\x96\xb9\xe5\xbc\x8f\xe8\xa7\x81\x68\x74\x74\x70\x73\
|
||||
\x3a\x2f\x2f\x67\x69\x74\x68\x75\x62\x2e\x63\x6f\x6d\x2f\x38\x39\
|
||||
\x32\x37\x36\x38\x34\x34\x37\x2f\x50\x79\x51\x74\x2f\x74\x72\x65\
|
||||
\x65\x2f\x6d\x61\x73\x74\x65\x72\x2f\x25\x45\x35\x25\x39\x42\x25\
|
||||
\x42\x45\x25\x45\x37\x25\x38\x39\x25\x38\x37\x25\x45\x35\x25\x38\
|
||||
\x41\x25\x41\x30\x25\x45\x38\x25\x42\x44\x25\x42\x44\
|
||||
\x00\x00\x19\xf0\
|
||||
\xff\
|
||||
\xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x01\x01\x00\x78\x00\
|
||||
\x78\x00\x00\xff\xe1\x00\x3a\x45\x78\x69\x66\x00\x00\x4d\x4d\x00\
|
||||
\x2a\x00\x00\x00\x08\x00\x03\x51\x10\x00\x01\x00\x00\x00\x01\x01\
|
||||
\x00\x00\x00\x51\x11\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x51\
|
||||
\x12\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\xff\
|
||||
\xdb\x00\x43\x00\x02\x01\x01\x02\x01\x01\x02\x02\x02\x02\x02\x02\
|
||||
\x02\x02\x03\x05\x03\x03\x03\x03\x03\x06\x04\x04\x03\x05\x07\x06\
|
||||
\x07\x07\x07\x06\x07\x07\x08\x09\x0b\x09\x08\x08\x0a\x08\x07\x07\
|
||||
\x0a\x0d\x0a\x0a\x0b\x0c\x0c\x0c\x0c\x07\x09\x0e\x0f\x0d\x0c\x0e\
|
||||
\x0b\x0c\x0c\x0c\xff\xdb\x00\x43\x01\x02\x02\x02\x03\x03\x03\x06\
|
||||
\x03\x03\x06\x0c\x08\x07\x08\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\
|
||||
\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\
|
||||
\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\
|
||||
\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\xff\xc0\x00\x11\x08\x00\x78\
|
||||
\x00\x78\x03\x01\x22\x00\x02\x11\x01\x03\x11\x01\xff\xc4\x00\x1f\
|
||||
\x00\x00\x01\x05\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\
|
||||
\x00\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\xff\xc4\x00\
|
||||
\xb5\x10\x00\x02\x01\x03\x03\x02\x04\x03\x05\x05\x04\x04\x00\x00\
|
||||
\x01\x7d\x01\x02\x03\x00\x04\x11\x05\x12\x21\x31\x41\x06\x13\x51\
|
||||
\x61\x07\x22\x71\x14\x32\x81\x91\xa1\x08\x23\x42\xb1\xc1\x15\x52\
|
||||
\xd1\xf0\x24\x33\x62\x72\x82\x09\x0a\x16\x17\x18\x19\x1a\x25\x26\
|
||||
\x27\x28\x29\x2a\x34\x35\x36\x37\x38\x39\x3a\x43\x44\x45\x46\x47\
|
||||
\x48\x49\x4a\x53\x54\x55\x56\x57\x58\x59\x5a\x63\x64\x65\x66\x67\
|
||||
\x68\x69\x6a\x73\x74\x75\x76\x77\x78\x79\x7a\x83\x84\x85\x86\x87\
|
||||
\x88\x89\x8a\x92\x93\x94\x95\x96\x97\x98\x99\x9a\xa2\xa3\xa4\xa5\
|
||||
\xa6\xa7\xa8\xa9\xaa\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xc2\xc3\
|
||||
\xc4\xc5\xc6\xc7\xc8\xc9\xca\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\
|
||||
\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xf1\xf2\xf3\xf4\xf5\xf6\
|
||||
\xf7\xf8\xf9\xfa\xff\xc4\x00\x1f\x01\x00\x03\x01\x01\x01\x01\x01\
|
||||
\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\x05\x06\
|
||||
\x07\x08\x09\x0a\x0b\xff\xc4\x00\xb5\x11\x00\x02\x01\x02\x04\x04\
|
||||
\x03\x04\x07\x05\x04\x04\x00\x01\x02\x77\x00\x01\x02\x03\x11\x04\
|
||||
\x05\x21\x31\x06\x12\x41\x51\x07\x61\x71\x13\x22\x32\x81\x08\x14\
|
||||
\x42\x91\xa1\xb1\xc1\x09\x23\x33\x52\xf0\x15\x62\x72\xd1\x0a\x16\
|
||||
\x24\x34\xe1\x25\xf1\x17\x18\x19\x1a\x26\x27\x28\x29\x2a\x35\x36\
|
||||
\x37\x38\x39\x3a\x43\x44\x45\x46\x47\x48\x49\x4a\x53\x54\x55\x56\
|
||||
\x57\x58\x59\x5a\x63\x64\x65\x66\x67\x68\x69\x6a\x73\x74\x75\x76\
|
||||
\x77\x78\x79\x7a\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x92\x93\x94\
|
||||
\x95\x96\x97\x98\x99\x9a\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xb2\
|
||||
\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\
|
||||
\xca\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xe2\xe3\xe4\xe5\xe6\xe7\
|
||||
\xe8\xe9\xea\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xff\xda\x00\x0c\
|
||||
\x03\x01\x00\x02\x11\x03\x11\x00\x3f\x00\xfd\xfc\xa2\xbc\x87\xf6\
|
||||
\xf5\xf8\xc3\xe2\xef\x80\x1f\xb1\xff\x00\x8f\x3c\x65\xe0\x5d\x36\
|
||||
\xcf\x53\xf1\x3f\x87\xb4\xef\xb5\xda\xa5\xdd\xb4\xb7\x50\x5b\xa0\
|
||||
\x74\x13\x5c\xc9\x0c\x4c\xb2\x4c\xb0\x42\x64\x98\xc6\x8c\x19\xc4\
|
||||
\x5b\x41\x04\x8a\xf0\x6f\x1f\x7f\xc1\x4c\xbe\x20\x7e\xc7\xdf\x04\
|
||||
\x34\xef\x88\x9f\x1a\x3e\x1e\x68\x3e\x22\xf8\x67\x34\x30\xdd\x5c\
|
||||
\xf8\xf7\xe1\xae\xb0\x6f\xb4\xf8\x2d\xa7\x09\xe4\x5d\x49\x63\x74\
|
||||
\xb1\xcf\x1c\x72\x17\x5e\x52\x49\x80\x2c\xa3\x71\xc8\xc8\x07\xda\
|
||||
\xf4\x57\x8e\x7e\xca\xdf\xf0\x50\x4f\x82\xff\x00\xb6\xbf\x83\xe1\
|
||||
\xd6\xbe\x18\xfc\x47\xf0\xb7\x8a\xad\xe4\x00\xbd\xbd\xbd\xea\xa5\
|
||||
\xed\xa9\x3f\xc3\x2d\xbb\xe2\x58\xdb\xd9\x94\x67\xb6\x6b\xd8\xe8\
|
||||
\x00\xa2\xbe\x49\xff\x00\x82\x80\x7f\xc1\x6e\xff\x00\x67\x5f\xf8\
|
||||
\x26\xfc\x37\x16\x7e\x3c\xf1\xc5\xad\xf7\x8a\xa1\x52\x57\xc3\x1a\
|
||||
\x16\xdd\x43\x56\x27\x9e\x1e\x35\x60\xb0\xfd\x66\x64\xf6\xcd\x7c\
|
||||
\x51\xf1\x37\xfe\x0f\x47\xfd\x9f\x7c\x3a\x92\x7f\xc2\x2b\xf0\xff\
|
||||
\x00\xe2\x47\x89\xda\x34\x8d\x81\xb8\x5b\x6d\x35\x19\x9b\xef\x28\
|
||||
\xcc\x8e\xdf\x2f\xae\xdc\x1e\xd4\x01\xfb\x1b\x45\x7f\x3b\x7f\x19\
|
||||
\xff\x00\xe0\xf7\x3f\x19\x5d\xeb\x93\x2f\xc3\xef\x82\xde\x18\xd3\
|
||||
\xb4\xd5\x38\x8a\x4d\x7b\x52\x9e\xf6\x77\x1e\xac\xb0\xf9\x2a\xa7\
|
||||
\xd8\x16\xfa\xd7\x07\xa3\xff\x00\xc1\xec\x3f\x1f\x6d\x2e\xc3\x5e\
|
||||
\xfc\x2e\xf8\x4b\x79\x06\x79\x48\xe3\xbf\x85\xb1\xec\xdf\x68\x61\
|
||||
\xfa\x50\x07\xf4\xc1\x58\x3f\x14\x7c\x7f\x67\xf0\xab\xe1\xbe\xbd\
|
||||
\xe2\x6b\xf0\xcd\x67\xa0\xd8\x4d\x7f\x2a\xa9\xf9\xa4\x11\xa1\x6d\
|
||||
\xa3\xfd\xa6\xc6\x07\xb9\x15\xf8\x63\xf0\x37\xfe\x0f\x74\xd3\xef\
|
||||
\xee\xa3\x87\xe2\x27\xc0\xd9\xac\xe3\x66\x02\x4b\x9d\x03\x5f\x12\
|
||||
\x32\x8e\xe4\x45\x3c\x4a\x0f\xd0\xca\x2b\xf4\x53\xe1\xc7\xfc\x15\
|
||||
\x07\xe0\xbf\xfc\x15\x1b\xe0\x8f\x86\xed\x7e\x18\xf8\x9a\x3b\xfb\
|
||||
\x8f\x11\x78\x97\x4a\xb4\xd5\x34\x0b\xf4\xfb\x26\xaf\x61\x6e\x97\
|
||||
\x2b\x73\x2f\x9b\x6e\xc7\x26\x36\x8e\xdd\xd7\xcc\x42\xf1\x90\xd8\
|
||||
\x0c\x7a\x50\x07\x5d\xf0\x87\xf6\xd1\xf1\x27\xc2\xcf\xda\x83\x41\
|
||||
\xf8\x33\xf1\xc3\xfb\x3a\xc7\xc4\x5f\x11\x34\x81\xae\xf8\x27\x5c\
|
||||
\xb6\x87\xec\xd6\x3a\xbc\xca\xa1\xaf\xb4\x56\x19\x21\x6e\xed\x09\
|
||||
\x0c\x87\x3f\xbe\x85\x95\xb8\x75\x60\x7e\xaa\xaf\x8b\x3f\xe0\xe0\
|
||||
\x0f\xd9\xbe\xf3\xf6\x82\xff\x00\x82\x63\xf8\xea\xff\x00\x41\x4b\
|
||||
\x98\xfc\x69\xf0\xc7\xc9\xf1\xdf\x86\xef\x2c\xdc\xc5\x79\x65\x75\
|
||||
\xa7\x38\x9d\xde\x09\x17\xe6\x49\x0c\x02\x65\x05\x79\xc9\x15\xc3\
|
||||
\x7f\xc1\xbd\xff\x00\xf0\x59\xbb\x5f\xf8\x2a\x7f\xec\xfb\x7d\xa3\
|
||||
\x78\x9a\xea\xc9\x7e\x2d\x7c\x3d\x58\xa0\xd6\x96\x30\x21\xfe\xdc\
|
||||
\xb5\x60\x04\x5a\x94\x71\x7f\x06\xe3\x94\x95\x57\x2a\x92\x0c\x8c\
|
||||
\x2c\x88\x28\x03\xf4\x32\x8a\x28\xa0\x02\x8a\x28\xa0\x06\x5c\x5b\
|
||||
\xc7\x79\x6f\x24\x33\x46\xb2\x45\x2a\x94\x74\x61\x95\x75\x3c\x10\
|
||||
\x47\xa1\xaf\x92\x7f\xe0\x99\x1f\x0f\x74\x2f\x8c\x5f\xf0\x4b\xcd\
|
||||
\x33\xe1\xbf\x8b\xf4\xcb\x4d\x7f\x41\xd3\x64\xd7\x7c\x0d\xaa\x69\
|
||||
\x97\xa9\xe6\x45\x2d\xb5\x9e\xa9\x79\x64\x20\x60\x7b\x08\x62\x40\
|
||||
\x31\xd3\x00\x8c\x60\x57\xd7\x35\xf2\x7f\xc0\x2b\xc9\x3f\x63\xcf\
|
||||
\xdb\x87\xc7\x9f\x0c\xf5\x80\x6d\xfc\x23\xf1\xa3\x55\xb8\xf1\xd7\
|
||||
\x81\x6f\xdb\x88\x4e\xa5\x24\x6a\x75\x7d\x24\xb7\x41\x2f\x98\x9f\
|
||||
\x6c\x8d\x7f\x8d\x27\x9f\x19\xf2\x9a\x80\x3f\x9f\xcf\xf8\x2c\xe7\
|
||||
\xfc\x10\x8b\xe2\x67\xfc\x11\xe7\xe2\x95\xd7\xc5\x4f\x84\x7a\x86\
|
||||
\xbd\xa9\x7c\x20\x6b\x8f\x36\xcf\x59\xb3\x99\x86\xa1\xe1\x62\xef\
|
||||
\x81\x6d\x78\x57\xac\x7b\x88\x55\x9b\xee\xb8\x20\x30\x0d\xc1\xf2\
|
||||
\x0f\x08\x7f\xc1\xc3\xdf\xb4\xce\x91\xfb\x3d\x6b\x1f\x0e\xb5\x2f\
|
||||
\x88\xfe\x20\xbc\xd1\xef\x97\x6d\xb4\xb6\xaf\x1d\x9d\xf4\x00\xae\
|
||||
\xd6\x8b\xed\x4a\xbe\x6a\xc2\x7a\x94\x8c\xa9\x27\x20\x32\x82\x6b\
|
||||
\xee\x6f\xf8\x3b\x97\xfe\x0b\x01\x75\xe3\x7f\x88\xb2\x7e\xcb\xfe\
|
||||
\x03\xd4\xb6\x68\x3e\x1d\x68\xee\x7c\x6d\x73\x03\x7f\xc7\xf5\xef\
|
||||
\x0f\x15\x96\x7f\xbb\x08\xda\xee\x3f\xe7\xa1\x00\xf2\x95\xf8\x5f\
|
||||
\x40\x16\x35\x6d\x5a\xe7\x5d\xd4\xa7\xbc\xbc\x9a\x5b\x8b\xab\xa9\
|
||||
\x1a\x59\x65\x91\x8b\x34\x8e\xc7\x25\x89\x3c\x92\x7d\x4d\x57\xa2\
|
||||
\x8a\x00\x28\xa2\x8a\x00\x2b\xf4\x47\xfe\x0d\x7e\xf8\xdd\xa4\x7c\
|
||||
\x2d\xff\x00\x82\xbe\xfc\x35\xb7\xf1\x46\xa8\x2c\xf4\x8d\x59\x2f\
|
||||
\xb4\xeb\x2f\xb4\x49\x88\x63\xbe\x9a\xd6\x44\x83\xaf\x00\xb3\x31\
|
||||
\x41\xd0\x65\xc7\xb5\x7e\x77\x55\xef\x0d\x78\x8e\xf7\xc1\xfe\x22\
|
||||
\xb0\xd5\xb4\xdb\x89\x2d\x35\x0d\x2e\xe2\x3b\xbb\x59\xe3\x38\x68\
|
||||
\x65\x46\x0c\xac\x3d\xc3\x00\x68\x03\xfb\xe1\xd5\x34\xdb\x1f\x18\
|
||||
\x78\x72\xe2\xce\xe1\x61\xbd\xd3\x75\x4b\x66\x86\x55\xc8\x68\xe7\
|
||||
\x8a\x45\x20\x8f\x42\xac\xa7\xf1\x06\xbf\x8c\x4f\xd9\xe7\xf6\x8f\
|
||||
\xf1\x37\xfc\x11\x8f\xfe\x0a\xc7\x79\xe2\x2d\x0d\x6e\x1b\xfe\x15\
|
||||
\xaf\x8b\x2f\xf4\x4d\x4f\x4f\x0f\xb4\x6a\xda\x62\xdc\x3c\x33\xdb\
|
||||
\xb7\x6f\x9e\x21\x95\x27\x21\x5d\x51\xba\xa8\xaf\x70\xfd\x85\x3f\
|
||||
\xe0\xe5\xef\x8f\x5f\xb2\xcc\x27\x45\xd4\xf5\xcb\x7d\x5f\x43\x68\
|
||||
\xed\x2d\x2d\x5e\xea\xd4\xdc\x7f\x64\xda\xc1\x34\x92\x0b\x78\x60\
|
||||
\xde\x23\x58\xd9\x65\x74\x24\x28\x90\x05\x8f\x0d\x84\xda\x7c\x5f\
|
||||
\xfe\x0a\x91\xf1\xf3\xc0\x9f\xb7\x4f\xc6\xe3\xf1\x5f\xc2\xf7\xba\
|
||||
\x7e\x9f\xe2\x2f\x14\x41\x68\x3c\x41\x65\x24\x0b\x61\xe6\x5e\x6c\
|
||||
\x21\xa6\x75\xc0\x8f\xcc\x2a\x14\x4b\x24\x78\x8d\x99\x77\xe1\x0c\
|
||||
\x8c\x8a\x01\xfd\x8e\x7c\x1e\xf8\xb5\xa0\x7c\x7a\xf8\x53\xe1\xcf\
|
||||
\x1b\x78\x57\x50\x87\x56\xf0\xdf\x8a\xf4\xe8\x35\x5d\x36\xee\x23\
|
||||
\x95\x9e\x09\x90\x3a\x37\xb1\xc3\x0c\x83\xc8\x39\x07\x91\x5d\x25\
|
||||
\x7e\x1b\xff\x00\xc1\xa6\xdf\xf0\x54\x4d\x23\x48\xf8\x67\xa4\x7e\
|
||||
\xcb\x7e\x32\x76\xd2\xf5\xfb\x67\xbc\xbe\xf0\xb4\xb7\x53\xb3\x7d\
|
||||
\xb4\x3b\xb5\xc4\x96\xca\x49\xda\x32\xa5\xe4\x8c\x2e\x01\x0b\x20\
|
||||
\xe4\xed\x2d\xfb\x91\x40\x05\x14\x51\x40\x05\x7c\xc7\xff\x00\x05\
|
||||
\x87\xf8\xe7\xe0\xcf\xd9\x9b\xfe\x09\xe9\xf1\x03\xc7\xfe\x34\xd3\
|
||||
\xe1\xd4\xa1\xf0\xa5\xb4\x77\xda\x24\x26\x53\x0c\xeb\xac\x07\x0b\
|
||||
\x60\xf0\x4a\xa4\x3c\x72\xac\xec\x84\x3a\x10\xc1\x43\x76\xc8\x3f\
|
||||
\x4e\x57\xe1\xbf\xfc\x1e\xbb\xfb\x55\x2f\x86\xbe\x03\xfc\x2c\xf8\
|
||||
\x37\x6b\x20\x37\x1e\x28\xd4\xa5\xf1\x2e\xa0\x81\xb0\x52\x1b\x51\
|
||||
\xe5\x41\x9f\x50\xcf\x2c\xbf\x8c\x7e\xd4\x01\xfc\xf0\xf8\xfb\xc7\
|
||||
\x5a\xb7\xc5\x0f\x1c\x6b\x1e\x24\xd7\xaf\xae\x35\x4d\x73\x5e\xbd\
|
||||
\x9b\x50\xbf\xbc\x9d\xb7\x49\x73\x3c\xae\x5e\x47\x63\xea\x59\x89\
|
||||
\xfc\x6b\x26\x8a\xfd\x0c\xff\x00\x82\x00\x7f\xc1\x1c\x97\xfe\x0a\
|
||||
\x5f\xf1\xa7\x56\xf1\x67\x8e\x05\xc5\x8f\xc1\x5f\x86\x2a\x2f\xbc\
|
||||
\x45\x32\x13\x1b\xeb\x12\xaa\x99\x12\xc2\x37\xfe\x1d\xca\xa5\xa4\
|
||||
\x61\xca\xa0\xc0\xc3\x32\x9a\x00\xfc\xf3\xa2\xba\x2f\x8b\xbe\x28\
|
||||
\xb7\xf1\xb7\xc5\x4f\x11\xea\xf6\x76\x96\xba\x7d\x96\xa5\xa9\x5c\
|
||||
\x5c\x5b\x5a\xdb\x46\x23\x86\xda\x26\x91\x8a\x46\x8a\x38\x0a\xab\
|
||||
\x85\x03\xd0\x57\x3b\x40\x16\x34\xbd\x22\xef\x5b\xba\x30\x59\xda\
|
||||
\xdc\x5e\x4c\xb1\xbc\xc6\x38\x63\x32\x30\x44\x42\xee\xd8\x1c\xed\
|
||||
\x54\x56\x62\x7a\x00\xa4\x9e\x05\x57\xaf\xbb\xbf\xe0\xda\xbf\x87\
|
||||
\x31\xfc\x51\xff\x00\x82\xc8\xfc\x2a\xd2\xee\x6c\xe1\xbe\xd3\x5e\
|
||||
\x3d\x55\xb5\x0b\x79\xa3\xf3\x22\x9e\xd8\xe9\x97\x4b\x2a\x38\xe8\
|
||||
\x55\x95\x8a\x9c\xff\x00\x7a\xb8\x6f\xf8\x2d\x1f\xfc\x13\xff\x00\
|
||||
\x4b\xff\x00\x82\x79\xfe\xdc\x7e\x28\xf0\x9f\x85\x75\x9b\x3f\x10\
|
||||
\x78\x1a\xf2\xe5\xee\xf4\x3b\xab\x69\xbc\xef\xb1\xc6\xcc\x77\x59\
|
||||
\x4c\xc3\x8f\x3a\x06\xca\x11\xd4\x80\xad\xc6\x71\x40\x1f\x25\x51\
|
||||
\x45\x14\x00\x51\x45\x14\x01\xd5\x7c\x1d\xf8\xc7\xe2\x0f\x81\xff\
|
||||
\x00\x14\x3c\x37\xe2\xef\x0d\xea\x37\x1a\x7e\xbd\xe1\x3d\x46\x0d\
|
||||
\x53\x4c\xb9\x47\x39\xb6\x9e\x19\x04\x88\x47\xb6\xe0\x32\x3b\x8c\
|
||||
\x8e\xf5\xfd\xc1\x7e\xc5\x5f\xb4\xde\x97\xfb\x66\x7e\xc9\xbf\x0f\
|
||||
\xbe\x29\x68\xfb\x56\xcb\xc6\xda\x25\xbe\xa4\x62\x5f\xf9\x76\x99\
|
||||
\x97\x13\x43\xf5\x8e\x51\x22\x1f\x74\xaf\xe1\x51\x4e\x18\x57\xf5\
|
||||
\x01\xff\x00\x06\x71\x7e\xd2\x8f\xf1\x27\xf6\x06\xf1\x77\xc3\x9b\
|
||||
\xb9\xcc\x97\x5f\x0e\x3c\x42\x2e\x2d\x15\x9f\x25\x2c\xb5\x08\xfc\
|
||||
\xe5\x00\x7a\x0b\x88\xee\xbf\x3a\x00\xfd\x7b\xa2\x8a\x28\x00\xaf\
|
||||
\xe4\x5b\xfe\x0e\x87\xfd\xab\x47\xed\x37\xff\x00\x05\x65\xf1\xa5\
|
||||
\x9d\xac\x8d\x26\x97\xf0\xee\x38\xbc\x2f\x6a\x77\xee\x52\x61\x5d\
|
||||
\xd3\x15\xf6\xf3\x9e\x4a\xfe\xb2\xfe\x28\xf8\xc5\x7e\x1d\xfc\x33\
|
||||
\xf1\x17\x88\x1b\x69\x5d\x0f\x4c\xb9\xbf\x20\xf4\x3e\x54\x4c\xf8\
|
||||
\xff\x00\xc7\x6b\xf8\x79\xfd\xbb\x3c\x49\xff\x00\x09\x6f\xed\x8d\
|
||||
\xf1\x2b\x50\xf3\x1a\x66\xb9\xf1\x05\xdb\x33\xb1\xcb\x3b\x07\x20\
|
||||
\x93\xf5\x20\x9a\x00\xf3\x5f\x0c\x78\x6e\xfb\xc6\x5e\x24\xd3\xf4\
|
||||
\x8d\x36\xde\x5b\xcd\x47\x54\xb9\x8e\xd2\xd6\x08\xd7\x73\xcd\x2c\
|
||||
\x8c\x15\x14\x0e\xe4\xb1\x03\xf1\xaf\xeb\xeb\xf6\x64\xff\x00\x82\
|
||||
\x5b\x78\x4f\xf6\x15\xff\x00\x82\x5a\x58\xf8\x5e\xdf\x4f\x92\xf3\
|
||||
\xc7\x9e\x0b\xf0\x4e\xad\x79\x73\x3c\x37\xb3\x2a\x4b\xac\x5d\xd8\
|
||||
\xcb\xf6\x99\x0c\x48\xe2\x39\x1b\x27\xca\x47\x75\x2c\x12\x35\x00\
|
||||
\x8a\xfe\x57\x3f\x61\x4f\x88\xf6\x1f\x02\x3e\x3f\xe9\x7f\x11\xb5\
|
||||
\x38\x74\x8b\x9b\x7f\x01\x93\xaa\xdb\xc1\xa9\x43\x24\xf0\xdd\x5d\
|
||||
\xaf\x16\xf1\x88\xa3\x64\x69\x1b\xcc\x2a\xc1\x77\xa2\xfc\x84\xb3\
|
||||
\x00\x39\xf7\xfb\x0f\xf8\x38\x6b\xf6\x94\xf0\xb7\xc4\x4d\x67\x5e\
|
||||
\xf0\xe6\xbd\xe1\x3f\x0f\x7f\x6e\x42\xf6\x77\x50\x59\x78\x47\x4d\
|
||||
\x8d\x2e\x2d\x98\x9c\xc7\x21\xf2\x77\x37\xd4\xb6\x73\xde\x80\x3e\
|
||||
\x1e\xb9\x84\xdb\xdc\x49\x19\xeb\x1b\x15\x3f\x85\x32\xa6\xd4\x2e\
|
||||
\xda\xfe\xfe\x69\xdf\x6e\xf9\xa4\x69\x1b\x68\xc0\xc9\x39\xe0\x54\
|
||||
\x34\x01\xfb\x29\xff\x00\x06\x5e\xfe\xcf\x32\x78\xdb\xf6\xec\xf1\
|
||||
\xe7\xc4\x8b\x88\x5b\xfb\x3b\xe1\xff\x00\x85\xda\xd5\x27\x23\xe5\
|
||||
\x4b\xab\xd9\x02\x28\xcf\x6f\xdc\xc5\x71\x5f\xae\xdf\xf0\x56\xe9\
|
||||
\xff\x00\x66\x7f\xdb\x6b\xf6\x67\xd4\xbe\x15\xfc\x46\xd7\x22\x5b\
|
||||
\x5b\xe9\xc7\xf6\x57\x88\xac\x6d\xc3\x43\xe1\xdb\xf0\x76\xa5\xd4\
|
||||
\x77\x2e\x56\x16\x08\x49\x12\x22\x39\xca\x6f\x07\x1d\x47\x85\x7f\
|
||||
\xc1\x0d\x3f\xe0\x98\x7e\x3c\xfd\x9d\xbf\xe0\x91\xbe\x1d\xf0\xf6\
|
||||
\x9c\xf6\x3e\x11\xf1\x57\xc7\x8b\xa3\xe2\x4f\x18\x6b\x57\x96\xcb\
|
||||
\x71\x75\xa1\x69\x4f\x12\x8b\x6b\x78\x2d\xdf\xe5\x7b\x86\x80\x29\
|
||||
\x1e\x68\x29\x13\x4f\x29\x65\x72\xa1\x1b\xf0\x03\xfe\x0a\x81\xfb\
|
||||
\x4c\x69\xbf\x1b\xff\x00\x6b\x1f\x19\x47\xe1\x3f\xed\x01\xe1\x3d\
|
||||
\x1f\x50\x9b\x48\xd2\xee\x75\x0b\xd9\x2f\xaf\xf5\x0b\x68\x1c\xc6\
|
||||
\x2e\x26\x9e\x42\x58\xb4\xc5\x4c\x85\x53\x6a\x28\x65\x55\x55\x55\
|
||||
\x02\x80\x3c\xbb\xf6\xab\xfd\x9b\x75\x4f\xd9\x3b\xe3\x96\xb9\xe0\
|
||||
\x9d\x53\x54\xf0\xff\x00\x88\x1b\x49\x9c\xad\xb6\xad\xa1\x6a\x31\
|
||||
\x6a\x1a\x6e\xab\x01\xe6\x39\xe1\x9a\x36\x2a\x55\x97\x07\x07\x0c\
|
||||
\xa7\x20\x80\x41\x15\xe7\x55\x7d\x3c\x43\x33\x68\xc3\x4f\x99\x63\
|
||||
\x9a\xd5\x18\xbc\x41\x94\x6f\x85\x8f\x52\xad\xd4\x03\x8e\x47\x43\
|
||||
\xe9\x9e\x6b\xd1\xfe\x32\xfe\xc5\x3f\x12\xfe\x05\xfc\x27\xf0\x4f\
|
||||
\x8f\xb5\xff\x00\x09\xea\xf6\xbe\x07\xf8\x89\xa7\xae\xa5\xa0\x6b\
|
||||
\x62\x02\xf6\x77\x88\x49\x05\x0c\x83\x84\x91\x4a\x9c\xa3\x60\x91\
|
||||
\x86\x00\xa9\x06\x80\x3c\xa6\x8a\x28\xa0\x02\xbf\x6c\xff\x00\xe0\
|
||||
\xcb\x5f\x89\xb3\x69\x3f\xb6\x5f\xc4\x0f\x0c\x33\xb0\xb7\xd7\xbc\
|
||||
\x12\x6e\x0a\xe7\xe5\x69\x2d\x2f\xa3\xd8\x71\xea\x12\xe6\x41\xf8\
|
||||
\xd7\xe2\x65\x7e\xb7\x7f\xc1\xa0\x1e\x26\xb5\xd0\x7f\xe0\xa5\x9a\
|
||||
\x7c\x12\x17\xfb\x56\xb5\xa1\x6b\x5a\x6c\x63\xf8\x71\xe5\x5a\xdc\
|
||||
\x8f\xfd\x27\x7f\xce\x80\x3f\xa8\xea\x28\xa2\x80\x3c\xbf\xf6\xcf\
|
||||
\x2f\x27\xec\xc3\xe2\xeb\x78\xdb\x6b\x5f\xdb\x25\x89\x27\xd2\x79\
|
||||
\xa3\x84\xfe\x8e\x6b\xf8\x9c\xfd\xb2\x34\x1b\x8f\x0c\x7e\xd6\xff\
|
||||
\x00\x14\x34\xeb\xa4\x68\xe7\xb1\xf1\x66\xab\x6e\xea\x47\x2a\x52\
|
||||
\xf2\x55\x23\xf4\xaf\xee\x27\xe3\x6f\x80\x24\xf8\xa3\xf0\xab\x5a\
|
||||
\xd0\xa1\x99\x60\xb8\xbe\x80\x79\x12\x30\xf9\x52\x54\x61\x22\x13\
|
||||
\xed\xb9\x57\x3e\xd5\xfc\x93\xff\x00\xc1\xc5\xbf\xb2\x56\xa5\xfb\
|
||||
\x3e\xff\x00\xc1\x4f\xfe\x32\x6a\x1f\x63\x92\x2d\x1f\x5c\xf1\x02\
|
||||
\x6b\xd0\x36\xcc\x2f\x97\xa9\xc6\xd7\x4a\x47\xb7\x9c\xb7\x49\xec\
|
||||
\x63\x22\x80\x3e\x78\x87\xf6\x5b\xd6\x13\xfe\x09\xd9\x2f\xc6\x2f\
|
||||
\x29\xbf\xb1\x24\xf1\xbf\xfc\x23\x3e\x66\x38\xf3\x56\xd1\x66\xc7\
|
||||
\xe2\x1b\xff\x00\x1d\x35\x3f\xed\x57\xe0\xef\x80\xfe\x1f\xfd\x9e\
|
||||
\x7e\x06\x6a\x1f\x0a\x7c\x4d\xe2\x0d\x63\xe2\x06\xb1\xa1\x5c\xc9\
|
||||
\xf1\x27\x4f\xd4\x22\x65\x83\x48\xd4\x16\x65\x11\x2c\x04\xc6\xa0\
|
||||
\xab\x29\x93\x85\x67\x1b\x52\x32\x48\x66\x22\xbf\x63\x3f\xe0\xdd\
|
||||
\xff\x00\xd9\xb3\xc1\x5f\xf0\x54\x7f\xf8\x22\x57\xc6\x2f\xd9\xaf\
|
||||
\xc6\x30\xff\x00\x67\x9d\x1f\xc5\x11\xea\x76\xfa\x9d\xaa\x06\xb9\
|
||||
\xd3\xee\x2e\xad\xa3\x9a\xd6\xed\x73\xc1\x64\x78\x64\x52\x38\xdd\
|
||||
\x1e\xe5\x38\xc9\x35\xf2\xb7\x89\xff\x00\xe0\xce\x8f\xda\xc7\x4b\
|
||||
\xf8\x91\x75\xa4\xe9\xb7\x5f\x0d\x75\x5d\x0e\x36\xcc\x1a\xe9\xd7\
|
||||
\x1a\xde\x09\x97\x23\xac\x2d\x11\x99\x58\x0e\x48\xda\x47\x1c\x31\
|
||||
\xe3\x20\x1f\x9e\xfa\xbf\xec\xbb\xab\x69\x1f\x03\x5b\xc7\x53\xc7\
|
||||
\x71\x0e\x9a\xda\x55\x86\xa5\x13\x3a\x61\x66\xfb\x55\xed\xdd\xa2\
|
||||
\x80\x7b\xf3\x67\x31\xff\x00\x80\x9a\xfb\xcf\xfe\x0d\xc3\xff\x00\
|
||||
\x82\x20\x6a\x1f\xf0\x50\x5f\xda\x07\x4c\xf8\x8d\xe3\xad\x26\x64\
|
||||
\xf8\x3b\xe0\x3b\xe4\xbb\xbd\xfb\x44\x65\x62\xf1\x15\xe4\x78\x78\
|
||||
\xb4\xf4\xcf\xdf\x4c\xed\x79\x88\xe1\x50\x04\xce\xe9\x3e\x5f\xde\
|
||||
\xef\x86\x9f\xf0\x44\x4f\x82\x5a\x7f\xec\x65\xf0\xd3\xe1\x0f\x8e\
|
||||
\x3c\x37\x6b\xe3\x0b\x3f\x02\xe9\xba\x75\xad\xe5\xcb\x49\x2d\xb0\
|
||||
\xd6\xe6\xb4\x69\xe6\xcc\xc1\x18\x16\x84\xdc\x5d\x5c\xc8\x22\x62\
|
||||
\x47\xef\x30\x73\x8a\xfa\xbb\xe1\xf7\xc3\xcd\x07\xe1\x3f\x83\x34\
|
||||
\xff\x00\x0e\xf8\x67\x47\xd3\x7c\x3f\xa0\xe9\x30\x88\x2c\xb4\xfb\
|
||||
\x0b\x75\xb7\xb7\xb6\x41\xfc\x28\x8a\x00\x1d\xcf\xb9\x24\xf5\x34\
|
||||
\x01\x37\x8a\x74\x99\xb5\x5f\x08\xea\x56\x36\x6e\xb6\xd3\xdc\xd9\
|
||||
\xcb\x04\x0e\x38\x11\x33\x21\x55\x3f\x81\x23\xf2\xaf\xe1\x87\xe1\
|
||||
\x77\x8a\xee\xff\x00\x64\x0f\xda\xfb\xc3\xfa\xdf\x88\x34\x1b\x5d\
|
||||
\x77\x50\xf8\x65\xe2\xe8\x2e\xf5\x3d\x16\xf7\xfd\x4d\xec\xb6\x37\
|
||||
\x81\xa5\xb6\x90\x90\x78\x66\x89\x94\x92\x0f\x5e\x87\xa5\x7f\x76\
|
||||
\x15\xf8\xef\xff\x00\x05\x75\xff\x00\x83\x4e\xfc\x3d\xfb\x73\xfc\
|
||||
\x7b\xd6\xbe\x2a\x7c\x29\xf1\xb5\xa7\xc3\xbf\x15\x78\xaa\xe0\xde\
|
||||
\x6b\xba\x4e\xa5\x62\xd7\x1a\x55\xfd\xd3\x7f\xac\xb9\x8d\xa3\x22\
|
||||
\x48\x1d\xcf\xcc\xe3\x6b\xab\x31\x66\x1b\x49\x39\x00\xfe\x7b\x3f\
|
||||
\x6f\xff\x00\xda\x8a\xc7\xf6\xd4\xfd\xb2\xbe\x21\x7c\x54\xd3\x3c\
|
||||
\x2b\x67\xe0\x8b\x1f\x1b\x6a\x87\x50\x87\x45\xb6\x90\x4a\x96\x43\
|
||||
\x62\x21\xcb\xaa\x20\x67\x62\xa5\xd9\x82\x8c\xb3\xb1\xc5\x7e\xec\
|
||||
\xfc\x7b\xf8\x13\xac\x37\xfc\x19\x93\xe1\x7b\x3d\x69\x6e\xad\x75\
|
||||
\x6d\x07\xc3\x9a\x77\x89\xa1\x07\x2a\xe9\x0b\x6a\xa2\xe2\x1c\xf7\
|
||||
\xc1\xb7\x9d\x7e\x99\xaf\x31\xf8\x2b\xff\x00\x06\xa1\xfc\x25\xfd\
|
||||
\x91\x3e\x2a\x78\x27\x50\xfd\xa6\x7e\x3a\x59\xeb\x50\xea\xd7\x8e\
|
||||
\xd6\xbe\x15\xd0\xf4\x99\x6d\xe1\xd5\x3e\xce\xbe\x6c\xa6\x6b\x92\
|
||||
\xcd\x22\xda\x46\x83\x74\xd2\x18\xe2\x54\x53\xcc\x89\x90\x4f\xe9\
|
||||
\x77\xfc\x16\x2f\xc7\x3e\x0c\xf8\xb1\xff\x00\x04\x3e\xf8\xf1\x75\
|
||||
\xe0\xbd\x57\x43\xd6\x3c\x33\x67\xe1\x79\xac\xe0\x9b\x4a\x95\x24\
|
||||
\xb3\x88\xdb\xcb\x1a\x98\x90\xa7\xcb\x84\x2a\x17\x03\x81\x8c\x76\
|
||||
\xa0\x0f\xe3\xa6\xea\xe9\xef\x27\x69\x24\x21\xa4\x73\x96\x20\x01\
|
||||
\x93\xf8\x54\x74\x51\x40\x05\x7e\xc4\x7f\xc1\xaa\xbf\x09\x5b\x4d\
|
||||
\xfd\xaa\xfe\x10\xf8\xf3\xec\xf2\x08\xf5\x0f\x13\x78\x97\x42\x69\
|
||||
\x73\xf2\xb3\x27\x87\xfc\xe5\x1f\x80\x2f\x5f\x8e\xf5\xfd\x49\x7f\
|
||||
\xc1\xae\xdf\xb1\x43\x78\x63\xfe\x09\xbd\xf0\xc3\xc5\x1a\xe6\x9f\
|
||||
\x2d\x8e\xb1\x63\xe3\xad\x73\xc5\x10\x09\x17\x6c\x83\x7d\x9c\x9a\
|
||||
\x56\xd3\xe9\xc6\xf3\x8f\xf6\x45\x00\x7e\xb5\x51\x45\x14\x00\x57\
|
||||
\xc7\xdf\xf0\x57\x2f\xf8\x25\x0f\x87\x7f\xe0\xa5\xdf\x06\xf5\x6b\
|
||||
\x36\xfb\x35\x8f\x8b\x7f\xb0\x6e\xb4\xbb\x1b\xb9\x23\x1b\x64\x62\
|
||||
\xc9\x3d\xb6\xf6\xea\x3c\xab\x88\x94\x83\xd9\x65\x9c\x63\xe7\x35\
|
||||
\xf6\x0d\x14\x01\xf8\x37\xff\x00\x06\x65\x49\x6f\xf0\xaf\xe2\xc7\
|
||||
\xed\x49\xf0\xd3\x56\xba\x6b\x7f\x16\xe8\xf7\x9a\x52\xc9\x61\x32\
|
||||
\xf9\x72\xb2\x59\xc9\x7b\x6b\x3b\x6c\xc9\xff\x00\x57\x2b\x22\xb7\
|
||||
\x27\x05\xd7\xd6\xbf\x79\x2b\xf9\x65\xfd\xbb\x3e\x2a\xf8\xeb\xfe\
|
||||
\x08\x8f\xff\x00\x07\x0d\xfc\x50\xf8\x9f\xe0\xdb\x1b\x7b\xff\x00\
|
||||
\x33\x56\x3e\x23\x96\xc2\xf0\xed\xb7\xd6\x74\x8d\x5c\x09\x2e\x21\
|
||||
\x2c\x06\x55\x44\xec\xc8\x24\x19\xd8\xe8\x84\x86\xc1\x07\xf6\x23\
|
||||
\xe0\xd7\xfc\x1c\x4f\xf0\x9f\xf6\xd6\xf8\x0c\x63\xf8\x23\x71\x0d\
|
||||
\xf7\xc7\x8d\x68\xc1\xa6\x68\x9f\x0f\x7c\x46\x4d\x8d\xd7\xf6\x84\
|
||||
\xec\xa9\xe6\x3b\x80\x52\x6b\x58\x01\x79\xa5\x92\x16\x27\xca\x85\
|
||||
\xb8\x56\x20\x50\x07\xd2\x3f\xb6\x4f\xed\xdf\x6b\xfb\x3a\x6b\x9a\
|
||||
\x47\x80\xfc\x1b\xe1\xfb\xaf\x89\x5f\x1b\x3c\x61\x13\x3f\x87\x7c\
|
||||
\x19\xa7\xcc\x23\x73\x10\x3b\x5a\xfe\xfa\x63\x95\xb3\xb0\x8c\x9f\
|
||||
\x9e\x79\x3a\x9f\x95\x03\xb7\x03\xc9\x3e\x14\xfe\xc4\x1f\xb5\x9f\
|
||||
\x83\x34\x8b\xdd\x62\xe3\xf6\xaa\xd3\x63\xf1\x37\x89\xb5\x3b\xad\
|
||||
\x63\x55\xd1\xe6\xf0\x34\x5a\xa6\x81\xa5\x49\x75\xb3\x75\xbd\x89\
|
||||
\x92\x74\xb9\x11\x5b\x88\xd4\x45\xba\x40\xa4\xf9\x8c\xc8\x7c\xc2\
|
||||
\x07\xb6\xfe\xc5\x9f\xb1\x56\x9b\xfb\x2a\x68\x1a\xa6\xad\xaa\x6a\
|
||||
\x52\x78\xcb\xe2\xa7\x8d\xa4\x5b\xef\x1a\x78\xce\xf6\x31\xf6\xcd\
|
||||
\x76\xeb\x1f\x71\x3f\xe7\x8d\xa4\x5f\x72\x0b\x74\xc2\x44\x80\x70\
|
||||
\x58\xb3\x37\xb7\xd0\x07\xc6\x5e\x0a\xf8\x55\xfb\x44\x7e\xc1\x1e\
|
||||
\x23\xd7\xbc\x49\x71\xe3\xad\x73\xf6\x9e\xf0\x16\xb4\xd1\xdf\xeb\
|
||||
\x5a\x6e\xa7\x04\x56\x7e\x2a\xd0\xa4\x8e\x20\x92\xc9\xa5\x47\x0a\
|
||||
\xad\xb5\xcc\x2c\x15\x58\xda\x30\x89\xc6\xcf\x91\xdd\xd8\x87\xfa\
|
||||
\x7b\xe0\x4f\xc7\xaf\x08\xfe\xd2\xff\x00\x0c\x74\xef\x18\xf8\x1f\
|
||||
\x5b\xb4\xd7\xfc\x3f\xaa\x06\xf2\xae\x20\xc8\x68\xdd\x4e\xd9\x22\
|
||||
\x95\x18\x07\x8a\x54\x60\x55\xe3\x70\x1d\x18\x10\xc0\x11\x8a\xeb\
|
||||
\xeb\xe2\xbf\xdb\x0b\xc0\x3a\x9f\xfc\x13\xc7\xe2\x86\xab\xfb\x4c\
|
||||
\x7c\x37\xb2\xba\x9f\xc1\xf7\x8e\xb3\xfc\x63\xf0\x75\x92\x6e\x8b\
|
||||
\x55\xb2\x5c\x2b\xf8\x82\xd2\x21\xc2\xea\x16\xa9\xf3\xca\x17\x1f\
|
||||
\x69\x81\x18\x37\xce\x88\xc4\x03\xec\x6d\x53\xc3\x5a\x6e\xb8\xec\
|
||||
\xd7\xda\x7d\x8d\xe3\x34\x0f\x6a\x4c\xf0\x2c\x84\xc4\xfb\x4b\xc7\
|
||||
\xc8\x3f\x23\x6d\x5c\xaf\x43\xb4\x67\xa0\xaf\x89\xff\x00\xe0\xe2\
|
||||
\x2d\x7b\x4d\xf8\x41\xff\x00\x04\x44\xf8\xe5\x1d\xad\xbd\xae\x9d\
|
||||
\x6b\x3e\x91\x6f\xa5\xdb\xdb\xc1\x12\xc5\x1a\xb5\xcd\xfd\xbc\x58\
|
||||
\x55\x50\x00\xcf\x98\xc7\x8f\x7a\xfb\x5f\xc2\xbe\x29\xd3\xbc\x73\
|
||||
\xe1\x7d\x37\x5a\xd1\xef\x2d\xf5\x2d\x27\x58\xb5\x8a\xf6\xca\xee\
|
||||
\x07\xdf\x15\xd4\x12\x20\x78\xe4\x46\xee\xac\xac\x08\x3d\xc1\xaf\
|
||||
\xc9\xef\xf8\x3b\xfb\xe3\xee\x97\x61\xff\x00\x04\xfd\xd0\x7e\x12\
|
||||
\xe9\xba\x95\xad\xe7\x8c\xfe\x20\x78\xc3\x4b\x8c\x68\x96\xf2\xac\
|
||||
\x97\xcf\x68\x9e\x7c\xa2\x4f\x24\x1d\xfb\x5a\x68\xa2\x55\x38\xc1\
|
||||
\x6e\x07\x34\x01\xfc\xba\x30\xda\x68\x55\xdd\x9f\x61\x9a\xbb\xe2\
|
||||
\x4d\x3a\x4d\x1f\x5a\xb8\xb3\x9a\x36\x86\x7b\x57\x68\x65\x8d\xbe\
|
||||
\xf4\x6e\xa4\xab\x29\xf7\x04\x11\x56\x3c\x2f\xe0\xdb\xcf\x16\xcd\
|
||||
\x75\x15\xa7\x93\xbe\xde\x23\x21\x12\x48\x13\x79\x1d\x11\x73\xd5\
|
||||
\xce\x0e\x14\x72\x48\xc0\xe7\x02\x80\x13\xc0\xba\x1d\xd7\x89\xfc\
|
||||
\x6d\xa3\xe9\xb6\x36\xf2\x5e\x5f\x6a\x17\xb0\xdb\x5b\xdb\xa2\xee\
|
||||
\x69\xe4\x77\x0a\x88\x07\x72\xcc\x40\xfc\x6b\xfb\x98\xfd\x8b\x3e\
|
||||
\x01\xa7\xec\xb9\xfb\x26\xfc\x3d\xf8\x7e\x36\x99\xbc\x2f\xa2\x5b\
|
||||
\xda\x5d\xba\xf4\x96\xeb\x6e\xeb\x89\x3f\xe0\x53\x34\x8d\xff\x00\
|
||||
\x02\xaf\xe5\xe3\xfe\x08\x93\xff\x00\x04\xee\xf1\x17\x87\xff\x00\
|
||||
\xe0\xbe\x5f\x0d\x7e\x1b\xfc\x42\xd0\x66\xd3\x75\x2f\x87\xb7\x2d\
|
||||
\xe2\x7d\x5a\xc6\xe9\x39\x85\xed\x6c\xbe\xd7\x06\x47\x71\xe7\xb5\
|
||||
\xbf\xb5\x7f\x5a\xd4\x00\x51\x45\x14\x00\x51\x45\x14\x01\xf2\x07\
|
||||
\xfc\x14\xa3\xfe\x09\x07\xe0\xbf\xf8\x28\x4f\x8e\x3c\x27\xe3\x0b\
|
||||
\xa9\x21\xd2\xfc\x5d\xe1\xdb\x79\x74\x3b\xc9\xe5\x8b\xcd\xb7\xd6\
|
||||
\xf4\x3b\x9c\xad\xd5\x8c\xe8\x30\x72\x15\xdd\xe1\x90\x10\x63\x93\
|
||||
\x9e\x87\x8f\xcd\x8f\xf8\x20\xbf\xec\x79\xe0\x9f\xf8\x24\x07\xfc\
|
||||
\x14\x97\xe2\xc6\x87\xf1\xc3\xc4\xd3\x78\x37\xc7\x92\x33\x78\x63\
|
||||
\xc0\x57\x3a\xd5\xa7\xd8\x74\x3f\x15\xe9\x8e\xeb\x37\xda\xed\xaf\
|
||||
\xe4\x1e\x53\xdd\x48\x12\x20\x60\x0e\xac\xbf\x30\xc3\x92\x42\x7e\
|
||||
\xf3\x57\xc8\x5f\xf0\x5c\xed\x02\x1f\x19\xff\x00\xc1\x39\xfc\x4f\
|
||||
\xe1\xd9\x74\x3d\x3f\x58\xff\x00\x84\xb7\x56\xd1\xfc\x3a\x67\xbe\
|
||||
\xb1\x4b\xa8\x74\x48\xef\xb5\x1b\x7b\x59\xb5\x03\xbd\x48\x8b\xc8\
|
||||
\x86\x59\x5c\x4b\xc7\x96\x40\x6c\x8c\x66\x80\x3e\xbb\x8e\x45\x9a\
|
||||
\x35\x65\x65\x65\x61\x90\x41\xc8\x22\x9d\x5c\xef\xc2\x6b\xaf\x0c\
|
||||
\x4d\xf0\xe7\x48\x83\xc1\xb7\x9a\x4d\xf7\x86\x74\xdb\x64\xd3\xf4\
|
||||
\xf7\xd3\x2e\x52\xe2\xd6\x38\xa0\x1e\x50\x8d\x1d\x09\x5f\x93\x66\
|
||||
\xdc\x03\xc1\x5c\x57\x45\x40\x05\x56\xd6\x34\x8b\x5f\x10\x69\x17\
|
||||
\x5a\x7d\xf4\x11\xdd\x59\xdf\x42\xf6\xf3\xc3\x22\xee\x49\x63\x75\
|
||||
\x2a\xca\xc0\xf5\x04\x12\x08\xf7\xab\x35\xf9\x1f\xff\x00\x07\x3a\
|
||||
\xfe\xdf\xbe\x32\xfd\x89\x6e\x7c\x0f\xa7\xe8\xfe\x32\xf1\xff\x00\
|
||||
\x87\x34\x3f\x1e\xe8\x5a\x85\xaa\xa7\x85\xef\x21\xd3\x5e\xdb\x50\
|
||||
\x82\xea\xcc\xa4\xf3\x5d\x18\x24\x95\x63\x68\x26\x99\x36\xc6\x54\
|
||||
\xe4\x2b\x73\x82\x08\x07\x3b\xfb\x01\x2f\xc6\x4b\x5f\xda\x0a\x1f\
|
||||
\xd8\xf4\xfc\x66\xf1\x86\x9b\xe1\x3f\x84\xba\x87\x89\x74\x7d\x46\
|
||||
\x1f\x0e\xe9\xf6\x36\x7a\xd6\x99\xa1\x59\x8b\x19\x74\x3b\x96\xbd\
|
||||
\x96\x39\x64\x54\xb9\x8e\xfc\xc2\x36\xaa\x90\x6d\xf0\xad\x85\x26\
|
||||
\xbc\x0f\xe2\x64\x3f\x0b\x7f\x65\x7f\xf8\x28\x47\xc7\x1f\x10\x7c\
|
||||
\x4c\x97\xce\xf8\x95\xfb\x33\x78\x72\x3b\xaf\x87\xfa\x25\xf4\x93\
|
||||
\xea\xba\xa7\xc4\x5d\x5e\xfd\x47\xd9\x75\xdb\xbb\x89\x9e\x57\x9a\
|
||||
\x78\xbc\xeb\x45\x16\xca\x76\xc5\x82\xe8\xaa\xaa\x45\x74\x1f\xf0\
|
||||
\x4d\x6f\xf8\x28\x17\x83\x7f\x63\x3f\xd9\xdb\x51\xd0\xff\x00\x65\
|
||||
\x3f\x82\xdf\x16\xbf\x69\xef\x8f\x5e\x3f\x75\xbf\xf1\x67\x8b\xce\
|
||||
\x87\x79\x6f\xa2\x4d\x7d\x83\xb5\x5e\xf2\xe3\x33\x9b\x58\x0b\xb0\
|
||||
\x40\xe1\x0b\xfc\xce\xce\x8c\xe7\x17\xbf\x64\x5f\xf8\x37\x47\xf6\
|
||||
\x9c\xf8\xf9\xfb\x52\xf8\x93\xf6\x9a\xf8\xff\x00\xf1\x2b\x4f\xf8\
|
||||
\x77\xf1\x63\x53\x9e\x6d\x7b\x41\xb4\xd1\x4a\x5f\x5c\xe9\xda\xbe\
|
||||
\xc1\xf6\x39\x27\x2a\x4c\x11\xdb\x40\x56\x34\xf2\x11\xa5\x2f\x1a\
|
||||
\x6c\x2c\xbc\xe4\x03\xf3\xb7\xe0\x27\xfc\x11\x7f\xe2\x89\xfd\xa8\
|
||||
\xfc\x1f\xe0\xad\x6f\xc3\x70\xeb\xdf\x17\xbc\x51\x69\x1f\x89\x21\
|
||||
\xf0\x8d\xd8\x97\xca\xd0\xad\x26\x67\xf2\xaf\xf5\xc9\x02\xec\xb6\
|
||||
\xb7\x42\x04\xaf\x0e\xe6\x96\x43\xb2\x10\xa1\x9d\xb1\xfb\x19\xfb\
|
||||
\x1a\xff\x00\xc1\xa7\xbf\x0b\xff\x00\x67\x76\xf8\x5b\xe2\x6f\x12\
|
||||
\x78\xa6\xfb\xc4\x9f\x10\x3c\x17\xe2\x2b\x1f\x12\xeb\x13\x0b\x48\
|
||||
\xdb\x4b\xd4\xa4\xb7\xf3\x9c\xda\x45\x11\x0a\x52\x26\x9e\x48\x1c\
|
||||
\xbb\xef\x62\x2d\x55\x40\x50\xc6\xbe\xc9\xff\x00\x82\x61\x7c\x4f\
|
||||
\xf0\xf7\xc6\xef\x87\xfe\x2e\xf1\x35\xc7\x85\x2c\xbc\x23\xf1\x9a\
|
||||
\x2d\x72\x4d\x13\xe2\x9d\x87\x98\xd3\xdd\x5b\xeb\x76\x8a\xa8\xca\
|
||||
\x24\x72\x5d\xad\x1a\x32\x92\xdb\x00\x76\x08\x66\x5d\xa0\x12\xd5\
|
||||
\xf4\xed\x00\x78\x3e\xb3\xff\x00\x04\xe5\xf8\x6b\xab\xfe\xdf\x9a\
|
||||
\x37\xed\x28\xb6\xba\xad\x8f\xc4\xdd\x23\x44\x97\x40\x79\xad\x6e\
|
||||
\xfc\xbb\x3d\x4a\xd9\xd1\x90\x1b\x88\xb6\x9f\x31\xd1\x5b\x0a\x77\
|
||||
\x0c\x6d\x5c\x83\xb5\x71\xe9\x5f\x18\x3e\x3e\xf8\x17\xf6\x7b\xd0\
|
||||
\x23\xd5\x7c\x7b\xe3\x2f\x0a\xf8\x2b\x4c\x99\x8a\x47\x75\xae\xea\
|
||||
\xb0\x69\xf0\xca\xc3\xaa\xab\x4a\xca\x18\xf2\x38\x1c\xf3\x5a\x9f\
|
||||
\x11\xfc\x7d\xa6\xfc\x2a\xf8\x7b\xaf\x78\xa3\x5a\x9b\xec\xda\x3f\
|
||||
\x86\xf4\xeb\x8d\x52\xfa\x6c\x7f\xaa\x82\x08\xda\x59\x1b\xf0\x55\
|
||||
\x26\xbf\x89\xdf\xf8\x29\x5f\xfc\x14\x4b\xc7\x1f\xf0\x53\x0f\xda\
|
||||
\xab\xc4\x1f\x12\x3c\x65\x7d\x70\xd6\xf7\x53\xc9\x06\x87\xa4\x97\
|
||||
\xdd\x6d\xa0\xe9\xe1\x8f\x95\x6d\x12\xf4\x18\x5c\x17\x61\xcb\xb9\
|
||||
\x66\x3c\x9a\x00\xfe\xd7\x7e\x19\xfc\x56\xf0\xbf\xc6\x8f\x09\x41\
|
||||
\xaf\xf8\x3f\xc4\x9a\x0f\x8a\xb4\x3b\xa2\x56\x1d\x47\x47\xbf\x8a\
|
||||
\xfa\xd6\x52\x3a\x81\x24\x4c\xca\x48\xc8\xc8\xcf\x14\x57\xf3\xa9\
|
||||
\xff\x00\x06\x4f\x6a\x1f\x10\x8f\xed\x77\xf1\x52\xd7\x4f\x93\x52\
|
||||
\x6f\x85\xeb\xe1\x75\x97\x5a\x8c\xbb\x7d\x8a\x3d\x50\xdc\xc4\x2c\
|
||||
\xdb\x1d\x3c\xe3\x12\xdd\x80\x47\x25\x03\x67\xa0\xa2\x80\x3f\xa4\
|
||||
\xaa\x28\xa2\x80\x0a\xf9\x17\xf6\x9f\xf8\xa7\xe1\xbf\x10\xff\x00\
|
||||
\xc1\x43\x3c\x2d\xf0\xb7\xe2\x86\xa9\xa4\x69\x7f\x0d\x57\xc0\x97\
|
||||
\x3e\x30\xb5\xb3\xd5\xae\x52\xdb\x4e\xf1\x1e\xa5\x15\xfa\x41\x24\
|
||||
\x57\x0d\x23\x04\x99\x6d\xa1\x64\x94\x40\xd9\x52\x67\xde\xc0\xf9\
|
||||
\x63\x05\x14\x00\xdf\xf8\x26\x86\xa5\xe0\xbd\x33\xf6\x80\xfd\xa7\
|
||||
\xbc\x3b\xe0\xfd\x4a\xc6\xf2\x2b\x7f\x1a\xd8\xeb\xad\x0e\x8c\x22\
|
||||
\x1a\x1d\xad\xbd\xf6\x93\x68\xd6\xe2\xd8\x44\x4a\x09\x58\x43\x23\
|
||||
\x4d\x8c\x16\x76\x57\x20\x6f\x15\xf5\xe5\x14\x50\x07\x01\xfb\x55\
|
||||
\xfc\x6d\x87\xf6\x6c\xfd\x9a\x3c\x7b\xf1\x02\x68\x5a\xe2\x3f\x06\
|
||||
\xe8\x37\x9a\xbf\x94\xab\x9f\x30\xc3\x0b\x3a\x83\xe8\x09\x03\x27\
|
||||
\xb0\xc9\xed\x5f\x9b\xdf\x1d\xbf\xe0\x84\xbf\x0f\xfc\x4d\xff\x00\
|
||||
\x04\xbf\xd6\x3c\x59\xe2\x9b\x7d\x3f\xe2\x07\xed\x01\x6f\xa3\x47\
|
||||
\xe3\xad\x53\xc6\x5a\x8e\xa9\x7b\xab\x41\xe2\x0d\x4e\xda\x3f\xb5\
|
||||
\xc9\x07\xcd\x27\x36\x13\x05\x78\x84\x51\x85\x5d\x8e\xa4\x0c\xa8\
|
||||
\x34\x51\x40\x1b\x9f\x02\x3f\xe0\xe5\x6f\x80\x7a\x4e\x81\xa3\xea\
|
||||
\xfe\x32\xb0\xf1\x47\xc1\x4f\x86\x3a\x96\x83\x6c\xbe\x0b\x8f\x50\
|
||||
\xf0\x7d\xda\xda\xeb\x8d\x11\xf2\xee\xda\xd6\x5b\x68\xde\x2f\x26\
|
||||
\xde\x41\xe4\x22\x2e\x09\x11\xbb\x1c\x02\x82\xba\xdf\x8d\xbf\xf0\
|
||||
\x75\x2f\xec\x65\xf0\x93\xc1\xd2\xea\x3a\x5f\xc4\x4d\x4b\xc7\x9a\
|
||||
\x87\x94\x64\x83\x4a\xd0\x74\x2b\xc3\x71\x33\x63\x85\x2f\x71\x1c\
|
||||
\x51\x26\x4f\xf7\x9c\x63\xde\x8a\x28\x03\xe1\xaf\xf8\x24\xb7\xfc\
|
||||
\x15\x03\xe2\xe7\xc6\x5f\xf8\x29\x27\x8c\x7f\x6a\x4f\x14\x78\x6d\
|
||||
\x7c\x33\xf0\x07\xe3\x77\x8b\x34\xdf\x85\xd7\x51\x22\x15\x83\x4e\
|
||||
\xbc\x30\xc8\x34\x99\xcc\x98\x02\x67\x89\x92\x3b\x79\xa6\x38\x1b\
|
||||
\xaf\xd4\x60\x00\xaa\xbf\xbf\x94\x51\x40\x1f\x2f\x7f\xc1\x6b\xf5\
|
||||
\x2b\xcd\x27\xfe\x09\x23\xfb\x45\x4d\x63\xe6\x0b\x81\xe0\x3d\x51\
|
||||
\x33\x1f\xde\x08\xd0\x32\xb9\xfc\x10\xb7\xe1\x5f\xc5\x34\x60\x06\
|
||||
\x56\x65\x2c\x99\x19\xf7\xa2\x8a\x00\xfe\xc0\xff\x00\xe0\xda\x2f\
|
||||
\xd9\x7f\x4e\xfd\x99\xff\x00\xe0\x8f\xdf\x0b\x64\x87\x4f\x8a\xd3\
|
||||
\x59\xf1\xfd\xb4\x9e\x2e\xd5\xe7\x09\x89\x2e\xe4\xbb\x72\xd0\x33\
|
||||
\x1e\xa7\x6d\xa8\xb7\x41\xec\xbe\xe6\x8a\x28\xa0\x0f\xff\xd9\
|
||||
"
|
||||
|
||||
qt_resource_name = b"\
|
||||
\x00\x09\
|
||||
\x05\x91\xe8\x14\
|
||||
\x00\x52\
|
||||
\x00\x45\x00\x41\x00\x44\x00\x4d\x00\x45\x00\x2e\x00\x6d\x00\x64\
|
||||
\x00\x06\
|
||||
\x07\x03\x7d\xc3\
|
||||
\x00\x69\
|
||||
\x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\
|
||||
\x00\x08\
|
||||
\x0b\x77\x5c\xa7\
|
||||
\x00\x68\
|
||||
\x00\x65\x00\x61\x00\x64\x00\x2e\x00\x6a\x00\x70\x00\x67\
|
||||
"
|
||||
|
||||
qt_resource_struct_v1 = b"\
|
||||
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\
|
||||
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
|
||||
\x00\x00\x00\x18\x00\x02\x00\x00\x00\x01\x00\x00\x00\x03\
|
||||
\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x01\x00\x00\x04\x12\
|
||||
"
|
||||
|
||||
qt_resource_struct_v2 = b"\
|
||||
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\
|
||||
\x00\x00\x00\x00\x00\x00\x00\x00\
|
||||
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
|
||||
\x00\x00\x01\x63\x19\x74\xf8\x4b\
|
||||
\x00\x00\x00\x18\x00\x02\x00\x00\x00\x01\x00\x00\x00\x03\
|
||||
\x00\x00\x00\x00\x00\x00\x00\x00\
|
||||
\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x01\x00\x00\x04\x12\
|
||||
\x00\x00\x01\x60\x83\x46\x10\xc7\
|
||||
"
|
||||
|
||||
qt_version = QtCore.qVersion().split('.')
|
||||
if qt_version < ['5', '8', '0']:
|
||||
rcc_version = 1
|
||||
qt_resource_struct = qt_resource_struct_v1
|
||||
else:
|
||||
rcc_version = 2
|
||||
qt_resource_struct = qt_resource_struct_v2
|
||||
|
||||
def qInitResources():
|
||||
QtCore.qRegisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data)
|
||||
|
||||
def qCleanupResources():
|
||||
QtCore.qUnregisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data)
|
||||
|
||||
qInitResources()
|
|
@ -1,48 +0,0 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
from PyQt5.QtCore import QFile, QIODevice, QTextStream, QTextCodec
|
||||
from PyQt5.QtWidgets import QTextBrowser
|
||||
|
||||
import res_rc # @UnresolvedImport @UnusedImport
|
||||
|
||||
|
||||
# Created on 2018年5月1日
|
||||
# author: Irony
|
||||
# site: https://pyqt5.com , https://github.com/892768447
|
||||
# email: 892768447@qq.com
|
||||
# file: QRC资源文件使用.textread
|
||||
# description:
|
||||
__Author__ = """By: Irony
|
||||
QQ: 892768447
|
||||
Email: 892768447@qq.com"""
|
||||
__Copyright__ = 'Copyright (c) 2018 Irony'
|
||||
__Version__ = 1.0
|
||||
|
||||
|
||||
class TextBrowser(QTextBrowser):
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(TextBrowser, self).__init__(*args, **kwargs)
|
||||
self.setText(self.readText(':/README.md'))
|
||||
|
||||
def readText(self, path):
|
||||
file = QFile(path)
|
||||
if not file.open(QIODevice.ReadOnly):
|
||||
return ''
|
||||
stream = QTextStream(file)
|
||||
# 下面这句设置编码根据文件的编码自行确定
|
||||
stream.setCodec(QTextCodec.codecForName('UTF-8'))
|
||||
data = stream.readAll()
|
||||
file.close()
|
||||
del stream
|
||||
return data
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
import sys
|
||||
from PyQt5.QtWidgets import QApplication
|
||||
app = QApplication(sys.argv)
|
||||
app.aboutToQuit.connect(res_rc.qCleanupResources) # 退出时要清理资源
|
||||
w = TextBrowser()
|
||||
w.show()
|
||||
sys.exit(app.exec_())
|
122
Demo/README.md
|
@ -1,21 +1,14 @@
|
|||
# 窗口案例
|
||||
# Demo
|
||||
|
||||
## [1、重启窗口Widget](窗口重启.py)
|
||||
## 1、重启窗口Widget
|
||||
[运行 RestartWindow.py](RestartWindow.py)
|
||||
|
||||
利用类变量对窗口的变量进行引用,防止被回收(导致窗口一闪而过),重启时先显示新窗口后关闭自己
|
||||
|
||||
![截图](ScreenShot/窗口重启.gif)
|
||||
![RestartWindow](ScreenShot/RestartWindow.gif)
|
||||
|
||||
## [2、分割窗口的分割条重绘](分割窗口的分割条重写.py)
|
||||
|
||||
1. 原理在于`QSplitter`在创建分割条的时候会调用`createHandle`函数
|
||||
1. 通过重新写`createHandle`返回自己的`QSplitterHandle`类
|
||||
1. 通过`QSplitterHandle`的`paintEvent`实现绘制其它形状,
|
||||
1. 重写`mousePressEvent`和`mouseMoveEvent`来实现鼠标的其它事件
|
||||
|
||||
![截图](ScreenShot/分割窗口的分割条重写.gif)
|
||||
|
||||
## [3、简单的窗口贴边隐藏](简单的窗口贴边隐藏.py)
|
||||
## 2、简单的窗口贴边隐藏
|
||||
[运行 WeltHideWindow.py](WeltHideWindow.py)
|
||||
|
||||
1. 大概思路
|
||||
1. 思路是当窗口进入左边,顶部,右边一半时,此时判断窗口的坐标
|
||||
|
@ -30,60 +23,119 @@
|
|||
1. `enterEvent`,鼠标进入事件,用于窗口隐藏后,是否需要暂时显示预览
|
||||
1. `leaveEvent`,鼠标离开事件,用于窗口暂时显示后自动隐藏效果
|
||||
|
||||
## [4、嵌入外部窗口](嵌入外部窗口.py)
|
||||
![WeltHideWindow](ScreenShot/WeltHideWindow.gif)
|
||||
|
||||
## 3、嵌入外部窗口
|
||||
[运行 EmbedWindow.py](EmbedWindow.py)
|
||||
|
||||
1. 使用`SetParent`函数设置外部窗口的`parent`为Qt的窗口
|
||||
1. Qt使用`QWidget.createWindowContainer(QWindow.fromWinId(窗口ID))`生成QWidget
|
||||
1. 使用`GetWindowLong`得到原来窗口的样式属性`style = win32gui.GetWindowLong(hwnd, win32con.GWL_STYLE)`和`exstyle = win32gui.GetWindowLong(hwnd, win32con.GWL_EXSTYLE)`
|
||||
1. 这里还原窗口后不会显示,用spy++发现没有了WS_VISIBLE样式(未解决)
|
||||
|
||||
![截图](ScreenShot/嵌入外部窗口.gif)
|
||||
![EmbedWindow](ScreenShot/EmbedWindow.gif)
|
||||
|
||||
|
||||
## [5、简单跟随其它窗口](外部窗口跟随.py)
|
||||
## 4、简单跟随其它窗口
|
||||
[运行 FollowWindow.py](FollowWindow.py)
|
||||
|
||||
1. 利用win32gui模块获取目标窗口的句柄
|
||||
1. 通过句柄获取目标窗口的大小位置,并设置自己的位置
|
||||
1. 当句柄失效时关闭自己
|
||||
1. 主要是检测时间,在10毫秒以下很流畅
|
||||
|
||||
![截图](ScreenShot/外部窗口跟随.gif)
|
||||
![FollowWindow](ScreenShot/FollowWindow.gif)
|
||||
|
||||
|
||||
## [6、简单探测窗口和放大截图](简单探测窗口和放大截图.py)
|
||||
## 5、简单探测窗口和放大截图
|
||||
[运行 ProbeWindow.py](ProbeWindow.py)
|
||||
|
||||
1. 利用`win32gui`模块获取鼠标所在位置的窗口大小(未去掉边框)和rgb颜色
|
||||
1. 利用一个全屏的全透明鼠标穿透的窗口(目的在于绘制矩形框和截图)
|
||||
|
||||
![截图](ScreenShot/简单探测窗口和放大截图.gif)
|
||||
![ProbeWindow](ScreenShot/ProbeWindow.gif)
|
||||
|
||||
|
||||
## [7、消息对话框倒计时关闭](消息对话框倒计时关闭.py)
|
||||
## 6、无边框自定义标题栏窗口
|
||||
[运行 FramelessWindow.py](FramelessWindow.py) | [运行 NativeEvent.py](NativeEvent.py)
|
||||
|
||||
1. 通过继承`QMessageBox`实现倒计时关闭的对话框
|
||||
1. `QTimer`定时器关闭窗口
|
||||
|
||||
![截图](ScreenShot/消息对话框倒计时关闭.gif)
|
||||
|
||||
## [8、无边框自定义标题栏窗口](无边框自定义标题栏窗口/)
|
||||
|
||||
1. 方式一(QWidget)
|
||||
1. 重写鼠标事件
|
||||
|
||||
1. 使用一个`QWidget`(`FramelessWindow`)作为父窗口, 一个`TitleBar`作为标题栏, 一个`QWidget`作为底部容器
|
||||
1. 父窗口`FramelessWindow`设置为背景透明,但是需要绘制一定宽度的透明度很高的矩形边框用来接受鼠标事件(变形鼠标样式进行调整窗口大小)
|
||||
1. `TitleBar`的最小化最大化关闭等按钮事件关联到父窗口里
|
||||
1. `TitleBar`中的鼠标按下移动事件得到坐标也传递到父窗口调用move方法进行窗口移动
|
||||
|
||||
![截图](无边框自定义标题栏窗口/ScreenShot/无边框自定义标题栏窗口.gif)
|
||||
|
||||
1. 方式二(windows api)
|
||||
2. windows api
|
||||
|
||||
1. 使用`win32gui`设置薄边框
|
||||
1. 重写`nativeEvent`事件拦截边框的系统边框的显示,并返回各个方向
|
||||
|
||||
## 截图
|
||||
![截图](无边框自定义标题栏窗口/ScreenShot/win无边框调整大小1.jpg)
|
||||
![FramelessWindow](ScreenShot/FramelessWindow.gif)
|
||||
|
||||
![截图](无边框自定义标题栏窗口/ScreenShot/win无边框调整大小2.jpg)
|
||||
## 7、右下角弹出框
|
||||
[运行 WindowNotify.py](WindowNotify.py)
|
||||
|
||||
![截图](无边框自定义标题栏窗口/ScreenShot/win无边框调整大小3.gif)
|
||||
![WindowNotify](ScreenShot/WindowNotify.gif)
|
||||
|
||||
## 8、程序重启
|
||||
[运行 AutoRestart.py](AutoRestart.py)
|
||||
|
||||
![AutoRestart](ScreenShot/AutoRestart.png)
|
||||
|
||||
## 9、自定义属性
|
||||
[运行 CustomProperties.py](CustomProperties.py)
|
||||
|
||||
![CustomProperties](ScreenShot/CustomProperties.png)
|
||||
|
||||
## 10、调用截图DLL
|
||||
[运行 ScreenShotDll.py](ScreenShotDll.py)
|
||||
|
||||
![ScreenShotDll](ScreenShot/ScreenShotDll.gif)
|
||||
|
||||
## 11、单实例应用
|
||||
[运行 SingleApplication.py](SingleApplication.py) | [运行 SharedMemory.py](SharedMemory.py)
|
||||
|
||||
1. QSharedMemory
|
||||
2. QLocalSocket, QLocalServer
|
||||
|
||||
## 12、简单的右下角气泡提示
|
||||
[运行 BubbleTips.py](BubbleTips.py)
|
||||
|
||||
1. 使用 `QWidget` 包含一个 `QLabel`, 其中 `QWidget` 通过 `paintEvent` 绘制气泡形状
|
||||
2. 使用 `QPropertyAnimation` 属性动画来移动气泡和改变气泡的透明度
|
||||
3. 使用 `QParallelAnimationGroup` 动画组来同时运行两个动画
|
||||
|
||||
![BubbleTips](ScreenShot/BubbleTips.gif)
|
||||
|
||||
## 13、右侧消息通知栏
|
||||
[运行 Notification.py](Notification.py)
|
||||
|
||||
![Notification](ScreenShot/Notification.gif)
|
||||
|
||||
## 14、验证码
|
||||
[运行 VerificationCode.py](VerificationCode.py)
|
||||
|
||||
1. 更新为paintEvent方式,采用上下跳动
|
||||
2. 参考网上一些代码,都是采用paintEvent绘制,这里采用QLabel显示html结合字体来显示文字<br />
|
||||
然后在paintEvent中绘制噪点和线条
|
||||
|
||||
![VerificationCode](ScreenShot/VerificationCode.gif)
|
||||
|
||||
## 15、人脸特征点
|
||||
[运行 FacePoints.py](FacePoints.py)
|
||||
|
||||
PyQt 结合 Opencv 进行人脸检测;
|
||||
由于直接在主线程中进行特征点获取,效率比较低
|
||||
|
||||
依赖文件
|
||||
|
||||
1. [opencv](https://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv)
|
||||
2. [numpy](https://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy)
|
||||
3. [dlib](http://dlib.net/)
|
||||
1. [dlib-19.4.0.win32-py2.7.exe](dist/dlib-19.4.0.win32-py2.7.exe)
|
||||
2. [dlib-19.4.0.win32-py3.4.exe](dist/dlib-19.4.0.win32-py3.4.exe)
|
||||
3. [dlib-19.4.0.win32-py3.5.exe](dist/dlib-19.4.0.win32-py3.5.exe)
|
||||
4. [shape-predictor-68-face-landmarks.dat.bz2](http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2)
|
||||
|
||||
![FacePoints](ScreenShot/FacePoints.png)
|
|
@ -6,8 +6,8 @@ Created on 2018年1月17日
|
|||
@author: Irony."[讽刺]
|
||||
@site: https://pyqt5.com , https://github.com/892768447
|
||||
@email: 892768447@qq.com
|
||||
@file: RestartMainWindow
|
||||
@description:
|
||||
@file: RestartWindow
|
||||
@description: 窗口重启
|
||||
'''
|
||||
from PyQt5.QtCore import pyqtSignal
|
||||
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QPushButton, QLineEdit,\
|
||||
|
@ -19,14 +19,14 @@ __Copyright__ = "Copyright (c) 2018 Irony.\"[讽刺]"
|
|||
__Version__ = "Version 1.0"
|
||||
|
||||
|
||||
class RestartMainWindow(QWidget):
|
||||
class RestartWindow(QWidget):
|
||||
|
||||
restarted = pyqtSignal(QWidget, str)
|
||||
_Self = None # 很重要,保留窗口引用
|
||||
|
||||
def __init__(self, path, *args, **kwargs):
|
||||
super(RestartMainWindow, self).__init__(*args, **kwargs)
|
||||
RestartMainWindow._Self = self
|
||||
super(RestartWindow, self).__init__(*args, **kwargs)
|
||||
RestartWindow._Self = self
|
||||
layout = QVBoxLayout(self)
|
||||
layout.addWidget(QLabel("当前工作目录:" + path, self))
|
||||
self.dirEdit = QLineEdit(
|
||||
|
@ -34,7 +34,7 @@ class RestartMainWindow(QWidget):
|
|||
layout.addWidget(self.dirEdit)
|
||||
layout.addWidget(QPushButton(
|
||||
"点我切换工作目录", self, clicked=self.onChangeDir))
|
||||
self.restarted.connect(RestartMainWindow.onRestart)
|
||||
self.restarted.connect(RestartWindow.onRestart)
|
||||
|
||||
def onChangeDir(self):
|
||||
path = self.dirEdit.text().strip()
|
||||
|
@ -46,7 +46,7 @@ class RestartMainWindow(QWidget):
|
|||
|
||||
@classmethod
|
||||
def onRestart(cls, widget, path):
|
||||
w = RestartMainWindow(path)
|
||||
w = RestartWindow(path)
|
||||
w.show()
|
||||
widget.close()
|
||||
widget.deleteLater()
|
||||
|
@ -57,6 +57,6 @@ if __name__ == "__main__":
|
|||
import sys
|
||||
from PyQt5.QtWidgets import QApplication
|
||||
app = QApplication(sys.argv)
|
||||
w = RestartMainWindow("test")
|
||||
w = RestartWindow("test")
|
||||
w.show()
|
||||
sys.exit(app.exec_())
|
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 5.6 KiB |
Before Width: | Height: | Size: 1.9 MiB After Width: | Height: | Size: 1.9 MiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 344 KiB After Width: | Height: | Size: 344 KiB |
Before Width: | Height: | Size: 306 KiB After Width: | Height: | Size: 306 KiB |
Before Width: | Height: | Size: 988 KiB After Width: | Height: | Size: 988 KiB |
Before Width: | Height: | Size: 3.2 MiB After Width: | Height: | Size: 3.2 MiB |
Before Width: | Height: | Size: 374 KiB After Width: | Height: | Size: 374 KiB |
Before Width: | Height: | Size: 1.3 MiB After Width: | Height: | Size: 1.3 MiB |
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 951 KiB After Width: | Height: | Size: 951 KiB |
Before Width: | Height: | Size: 164 KiB After Width: | Height: | Size: 164 KiB |
BIN
Demo/ScreenShot/WeltHideWindow.gif
Normal file
After Width: | Height: | Size: 375 KiB |
BIN
Demo/ScreenShot/WindowNotify.gif
Normal file
After Width: | Height: | Size: 617 KiB |
|
@ -1,3 +1,3 @@
|
|||
from ctypes import CDLL
|
||||
dll = CDLL('ScreenShot.dll')
|
||||
dll = CDLL('Data/ScreenShot.dll')
|
||||
dll.PrScrn()
|
|
@ -12,7 +12,7 @@ Created on 2017年3月30日
|
|||
from PyQt5.QtWidgets import QWidget
|
||||
|
||||
|
||||
from Application import SharedApplication # @UnresolvedImport
|
||||
from Lib.Application import SharedApplication # @UnresolvedImport
|
||||
|
||||
__version__ = "0.0.1"
|
||||
|
|
@ -11,7 +11,7 @@ Created on 2017年3月30日
|
|||
'''
|
||||
from PyQt5.QtWidgets import QTextEdit
|
||||
|
||||
from Application import QSingleApplication # @UnresolvedImport
|
||||
from Lib.Application import QSingleApplication # @UnresolvedImport
|
||||
|
||||
|
||||
__version__ = "0.0.1"
|
|
@ -114,7 +114,7 @@ if __name__ == "__main__":
|
|||
from PyQt5.QtWidgets import QLineEdit
|
||||
app = QApplication(sys.argv)
|
||||
app.setApplicationName("Validate Code")
|
||||
QFontDatabase.addApplicationFont("itckrist.ttf")
|
||||
QFontDatabase.addApplicationFont("Data/itckrist.ttf")
|
||||
w = QWidget()
|
||||
layout = QHBoxLayout(w)
|
||||
|
|
@ -7,7 +7,7 @@ Created on 2018年3月1日
|
|||
@site: https://pyqt5.com , https://github.com/892768447
|
||||
@email: 892768447@qq.com
|
||||
@file: WeltHideWindow
|
||||
@description:
|
||||
@description: 简单的窗口贴边隐藏
|
||||
"""
|
||||
from PyQt5.QtCore import Qt
|
||||
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QPushButton
|
|
@ -7,14 +7,14 @@ Created on 2017年3月30日
|
|||
@site: https://pyqt5.com , https://github.com/892768447
|
||||
@email: 892768447@qq.com
|
||||
@file: WindowNotify
|
||||
@description:
|
||||
@description: 右下角弹窗
|
||||
'''
|
||||
import webbrowser
|
||||
|
||||
from PyQt5.QtCore import Qt, QPropertyAnimation, QPoint, QTimer, pyqtSignal
|
||||
from PyQt5.QtWidgets import QWidget, QPushButton
|
||||
|
||||
from UiNotify import Ui_NotifyForm # @UnresolvedImport
|
||||
from Lib.UiNotify import Ui_NotifyForm # @UnresolvedImport
|
||||
|
||||
|
||||
__version__ = "0.0.1"
|
|
@ -1,17 +0,0 @@
|
|||
# Opencv 人脸描点检测
|
||||
|
||||
简单联系PyQt 结合 Opencv 进行人脸检测;
|
||||
由于直接在主线程中进行特征点获取,效率比较低
|
||||
|
||||
### 依赖文件
|
||||
- [opencv](https://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv)
|
||||
- [numpy](https://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy)
|
||||
- [dlib](http://dlib.net/)
|
||||
- [dlib-19.4.0.win32-py2.7.exe](dist/dlib-19.4.0.win32-py2.7.exe)
|
||||
- [dlib-19.4.0.win32-py3.4.exe](dist/dlib-19.4.0.win32-py3.4.exe)
|
||||
- [dlib-19.4.0.win32-py3.5.exe](dist/dlib-19.4.0.win32-py3.5.exe)
|
||||
- [shape-predictor-68-face-landmarks.dat.bz2](http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2)
|
||||
|
||||
截图
|
||||
|
||||
![1](ScreenShot/1.png)
|
1
Demo/人脸描点检测/data/.gitignore
vendored
|
@ -1 +0,0 @@
|
|||
/shape_predictor_68_face_landmarks.dat
|
|
@ -1,7 +0,0 @@
|
|||
This folder contains various data that is used by cv libraries and/or demo applications.
|
||||
----------------------------------------------------------------------------------------
|
||||
|
||||
haarcascades - the folder contains trained classifiers for detecting objects
|
||||
of a particular type, e.g. faces (frontal, profile), pedestrians etc.
|
||||
Some of the classifiers have a special license - please,
|
||||
look into the files for details.
|
|
@ -1,6 +0,0 @@
|
|||
#单实例应用 Application
|
||||
|
||||
###[Python3.4.4 or Python3.5][PyQt5]
|
||||
|
||||
- 方法1:QSharedMemory
|
||||
- 方法2:QLocalSocket, QLocalServer
|
|
@ -1,7 +0,0 @@
|
|||
# 右下角弹出框
|
||||
|
||||
### [Python3.4.4 or Python3.5][PyQt5]
|
||||
|
||||
# 截图
|
||||
![截图](ScreenShot/1.png)
|
||||
![截图](ScreenShot/2.png)
|
Before Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 6.2 KiB |
|
@ -1,49 +0,0 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
'''
|
||||
Created on 2017年3月30日
|
||||
@author: Irony."[讽刺]
|
||||
@site: https://pyqt5.com , https://github.com/892768447
|
||||
@email: 892768447@qq.com
|
||||
@file: TestFontRoboto
|
||||
@description:
|
||||
'''
|
||||
|
||||
__Author__ = "By: Irony.\"[讽刺]\nQQ: 892768447\nEmail: 892768447@qq.com"
|
||||
__Copyright__ = "Copyright (c) 2017 Irony.\"[讽刺]"
|
||||
__Version__ = "Version 1.0"
|
||||
|
||||
import glob
|
||||
import os
|
||||
import sys
|
||||
|
||||
from PyQt5.QtGui import QFontDatabase, QFont
|
||||
from PyQt5.QtWidgets import QApplication, QLabel, QWidget, QGridLayout
|
||||
|
||||
|
||||
app = QApplication(sys.argv)
|
||||
|
||||
names = []
|
||||
|
||||
for path in glob.glob("Fonts/Roboto/*.ttf"):
|
||||
print("path", os.path.abspath(path))
|
||||
names.append(os.path.basename(path.replace(".ttf", "")).replace("-", ""))
|
||||
fid = QFontDatabase.addApplicationFont(os.path.abspath(path))
|
||||
print("fid", fid)
|
||||
print(QFontDatabase.applicationFontFamilies(fid))
|
||||
|
||||
w = QWidget()
|
||||
w.setWindowTitle("Roboto Fonts")
|
||||
layout = QGridLayout(w)
|
||||
|
||||
print("names", names)
|
||||
for row in range(4):
|
||||
for col in range(4):
|
||||
layout.addWidget(QLabel(names[row * 4 + col],
|
||||
font=QFont(names[row * 4 + col], 26)),
|
||||
row, col, 1, 1)
|
||||
# print(row, col, row * 4 + col)
|
||||
|
||||
w.show()
|
||||
sys.exit(app.exec_())
|
|
@ -1,88 +0,0 @@
|
|||
# 无边框自定义标题栏窗口
|
||||
|
||||
### [Python3.4.4 or Python3.5][PyQt5]
|
||||
|
||||
原理说明:
|
||||
|
||||
- 使用一个QWidget(FramelessWindow)作为父窗口, 一个TitleBar作为标题栏, 一个QWidget作为底部容器
|
||||
- 父窗口FramelessWindow设置为背景透明,但是需要绘制一定宽度的透明度很高的矩形边框用来接受鼠标事件(变形鼠标样式进行调整窗口大小)
|
||||
- TitleBar的最小化最大化关闭等按钮事件关联到父窗口里
|
||||
- TitleBar中的鼠标按下移动事件得到坐标也传递到父窗口调用move方法进行窗口移动
|
||||
|
||||
使用方法:
|
||||
|
||||
```
|
||||
class MainWindow(QWidget):
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(MainWindow, self).__init__(*args, **kwargs)
|
||||
layout = QVBoxLayout(self, spacing=0)
|
||||
layout.setContentsMargins(0, 0, 0, 0)
|
||||
layout.addWidget(QPushButton('按钮', self))
|
||||
layout.addWidget(QTextEdit(self))
|
||||
|
||||
|
||||
# 样式
|
||||
StyleSheet = """
|
||||
/*标题栏*/
|
||||
TitleBar {
|
||||
background-color: rgb(54, 157, 180);
|
||||
}
|
||||
|
||||
/*最小化最大化关闭按钮通用默认背景*/
|
||||
#buttonMinimum,#buttonMaximum,#buttonClose {
|
||||
border: none;
|
||||
background-color: rgb(54, 157, 180);
|
||||
}
|
||||
|
||||
/*悬停*/
|
||||
#buttonMinimum:hover,#buttonMaximum:hover {
|
||||
background-color: rgb(48, 141, 162);
|
||||
}
|
||||
#buttonClose:hover {
|
||||
color: white;
|
||||
background-color: rgb(232, 17, 35);
|
||||
}
|
||||
|
||||
/*鼠标按下不放*/
|
||||
#buttonMinimum:pressed,#buttonMaximum:pressed {
|
||||
background-color: rgb(44, 125, 144);
|
||||
}
|
||||
#buttonClose:pressed {
|
||||
color: white;
|
||||
background-color: rgb(161, 73, 92);
|
||||
}
|
||||
"""
|
||||
|
||||
if __name__ == '__main__':
|
||||
import sys
|
||||
from PyQt5.QtWidgets import QApplication
|
||||
app = QApplication(sys.argv)
|
||||
app.setStyleSheet(StyleSheet)
|
||||
w = FramelessWindow()
|
||||
w.setWindowTitle('测试标题栏')
|
||||
w.setWindowIcon(QIcon('Qt.ico'))
|
||||
w.setWidget(MainWindow(w)) # 把自己的窗口添加进来
|
||||
w.show()
|
||||
sys.exit(app.exec_())
|
||||
|
||||
```
|
||||
|
||||
## 截图
|
||||
![截图](ScreenShot/1.gif)
|
||||
|
||||
|
||||
|
||||
# 利用windows api
|
||||
|
||||
原理说明:
|
||||
|
||||
- 使用win32gui设置薄边框
|
||||
- 重写nativeEvent事件拦截边框的系统边框的显示,并返回各个方向
|
||||
|
||||
## 截图
|
||||
![截图](ScreenShot/1.jpg)
|
||||
|
||||
![截图](ScreenShot/2.jpg)
|
||||
|
||||
![截图](ScreenShot/3.gif)
|
Before Width: | Height: | Size: 79 KiB |
Before Width: | Height: | Size: 101 KiB |
Before Width: | Height: | Size: 235 KiB |
|
@ -1,17 +0,0 @@
|
|||
# 消息提示
|
||||
|
||||
### 简单的右下角气泡提示:
|
||||
- 1.使用QWidget包含一个QLabel,其中QWidget通过paintEvent绘制气泡形状
|
||||
- 2.使用QPropertyAnimation属性动画来移动气泡和改变气泡的透明度
|
||||
- 3.使用QParallelAnimationGroup动画组来同时运行两个动画
|
||||
|
||||
见 [Issues#3](https://github.com/892768447/PyQt/issues/3)
|
||||
|
||||
截图
|
||||
|
||||
![1](ScreenShot/1.gif)
|
||||
|
||||
|
||||
### 右侧消息通知栏
|
||||
|
||||
![2](ScreenShot/2.gif)
|
|
@ -1,9 +0,0 @@
|
|||
# 程序重启
|
||||
|
||||
### [Python3.4.4 or Python3.5][PyQt5]
|
||||
|
||||
# 截图
|
||||
![截图2](ScreenShot/1.png)
|
||||
|
||||
# exe 下载
|
||||
[AutoRestart.exe](dist/AutoRestart.exe)
|
|
@ -1,6 +0,0 @@
|
|||
# 自定义属性测试
|
||||
|
||||
### [Python3.4.4 or Python3.5][PyQt5]
|
||||
|
||||
# 截图
|
||||
![截图](ScreenShot/1.png)
|
|
@ -1,3 +0,0 @@
|
|||
# 只允许32位python调用 , 64位会报错
|
||||
|
||||
![1](ScreenShot/1.gif)
|
|
@ -1,11 +0,0 @@
|
|||
# 验证码控件
|
||||
|
||||
### [Python3.4.4 or Python3.5][PyQt5]
|
||||
|
||||
# 截图
|
||||
![截图](ScreenShot/1.gif)
|
||||
|
||||
# 说明
|
||||
2.更新为paintEvent方式,采用上下跳动
|
||||
1.参考网上一些代码,都是采用paintEvent绘制,这里采用QLabel显示html结合字体来显示文字<br />
|
||||
然后在paintEvent中绘制噪点和线条
|
|
@ -6,7 +6,7 @@ Created on 2017年3月30日
|
|||
@author: Irony."[讽刺]
|
||||
@site: https://pyqt5.com , https://github.com/892768447
|
||||
@email: 892768447@qq.com
|
||||
@file: TestFontAwesome
|
||||
@file: AwesomeFont
|
||||
@description:
|
||||
'''
|
||||
|
||||
|
@ -14,15 +14,13 @@ __Author__ = "By: Irony.\"[讽刺]\nQQ: 892768447\nEmail: 892768447@qq.com"
|
|||
__Copyright__ = "Copyright (c) 2017 Irony.\"[讽刺]"
|
||||
__Version__ = "Version 1.0"
|
||||
|
||||
import glob
|
||||
import os
|
||||
import sys
|
||||
|
||||
from PyQt5.QtGui import QFontDatabase, QFont
|
||||
from PyQt5.QtWidgets import QApplication, QLabel, QWidget, QGridLayout,\
|
||||
QScrollArea
|
||||
from PyQt5.QtWidgets import QApplication, QWidget, QGridLayout,\
|
||||
QScrollArea, QPushButton
|
||||
|
||||
from FontAwesome import FontAwesomes
|
||||
from Lib.FontAwesome import FontAwesomes # @UnresolvedImport
|
||||
|
||||
|
||||
class ScrollArea(QScrollArea):
|
||||
|
@ -30,7 +28,6 @@ class ScrollArea(QScrollArea):
|
|||
def __init__(self):
|
||||
super(ScrollArea, self).__init__()
|
||||
self.setWindowTitle("FontAwesome Fonts")
|
||||
self.resize(800, 600)
|
||||
self.window = QWidget(self)
|
||||
self.setWidget(self.window)
|
||||
|
||||
|
@ -41,18 +38,31 @@ class ScrollArea(QScrollArea):
|
|||
for row in range(131):
|
||||
for col in range(6):
|
||||
# print(row, col, row * 6 + col)
|
||||
layout.addWidget(QLabel(": ".join(fonts[row * 6 + col]),
|
||||
layout.addWidget(QPushButton(
|
||||
": ".join(fonts[row * 6 + col]),
|
||||
self.window,
|
||||
minimumHeight=33,
|
||||
font=QFont("FontAwesome", 14)),
|
||||
row, col, 1, 1)
|
||||
|
||||
self.showMaximized()
|
||||
|
||||
def resizeEvent(self, event):
|
||||
super(ScrollArea, self).resizeEvent(event)
|
||||
self.window.resize(self.width(), self.height() * 4)
|
||||
|
||||
app = QApplication(sys.argv)
|
||||
|
||||
QFontDatabase.addApplicationFont("Fonts/FontAwesome/fontawesome-webfont.ttf")
|
||||
app = QApplication(sys.argv)
|
||||
app.setStyleSheet("""QPushButton:hover {
|
||||
color: green;
|
||||
}
|
||||
QPushButton:pressed {
|
||||
color: red;
|
||||
}
|
||||
""")
|
||||
|
||||
QFontDatabase.addApplicationFont(
|
||||
"Data/Fonts/fontawesome-webfont.ttf")
|
||||
|
||||
window = ScrollArea()
|
||||
|
|
@ -13,11 +13,17 @@ Created on 2017年3月30日
|
|||
# 字体图标地址: http://fontawesome.io/icons/
|
||||
# 字体字符地址: http://fontawesome.io/cheatsheet/
|
||||
|
||||
|
||||
class FontAwesomes:
|
||||
|
||||
FA = None
|
||||
|
||||
@classmethod
|
||||
def alls(cls):
|
||||
return {name: getattr(cls, name) for name in dir(cls) if name.startswith("fa_")}
|
||||
if not cls.FA:
|
||||
cls.FA = {name: getattr(cls, name)
|
||||
for name in dir(cls) if name.startswith("fa_")}
|
||||
return cls.FA
|
||||
|
||||
fa_500px = "\uf26e"
|
||||
fa_address_book = "\uf2b9"
|
||||
|
@ -806,5 +812,6 @@ class FontAwesomes:
|
|||
fa_youtube_play = "\uf16a"
|
||||
fa_youtube_square = "\uf166"
|
||||
|
||||
if __name__ =="__main__":
|
||||
|
||||
if __name__ == "__main__":
|
||||
print(len(FontAwesomes.alls()))
|
Before Width: | Height: | Size: 127 KiB After Width: | Height: | Size: 127 KiB |
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |