support PySide2

This commit is contained in:
Irony 2021-07-13 14:52:26 +08:00
parent e397db884f
commit 48ef9a5b88
220 changed files with 2457 additions and 2542 deletions

View file

@ -1,21 +1,23 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
"""
Created on 2017年3月31日
@author: Irony."[讽刺]
@site: https://pyqt5.com , https://github.com/892768447
@author: Irony
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: AutoRestart
@description:
'''
"""
from optparse import OptionParser
import os
import sys
from optparse import OptionParser
from PyQt5.QtWidgets import QApplication, QPushButton, QWidget, QHBoxLayout
try:
from PyQt5.QtWidgets import QApplication, QPushButton, QWidget, QHBoxLayout
except ImportError:
from PySide2.QtWidgets import QApplication, QPushButton, QWidget, QHBoxLayout
canRestart = True

View file

@ -1,30 +1,31 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
"""
Created on 2018年1月27日
@author: Irony."[讽刺]
@site: https://pyqt5.com , https://github.com/892768447
@author: Irony
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: BubbleTips
@description:
'''
"""
import sys
from PyQt5.QtCore import QRectF, Qt, QPropertyAnimation, pyqtProperty, \
try:
from PyQt5.QtCore import QRectF, Qt, QPropertyAnimation, pyqtProperty, \
QPoint, QParallelAnimationGroup, QEasingCurve
from PyQt5.QtGui import QPainter, QPainterPath, QColor, QPen
from PyQt5.QtWidgets import QLabel, QWidget, QVBoxLayout, QApplication,\
from PyQt5.QtGui import QPainter, QPainterPath, QColor, QPen
from PyQt5.QtWidgets import QLabel, QWidget, QVBoxLayout, QApplication, \
QLineEdit, QPushButton
except ImportError:
from PySide2.QtCore import QRectF, Qt, QPropertyAnimation, Property as pyqtProperty, \
QPoint, QParallelAnimationGroup, QEasingCurve
from PySide2.QtGui import QPainter, QPainterPath, QColor, QPen
from PySide2.QtWidgets import QLabel, QWidget, QVBoxLayout, QApplication, \
QLineEdit, QPushButton
__Author__ = "By: Irony.\"[讽刺]\nQQ: 892768447\nEmail: 892768447@qq.com"
__Copyright__ = "Copyright (c) 2018 Irony.\"[讽刺]"
__Version__ = "Version 1.0"
class BubbleLabel(QWidget):
BackgroundColor = QColor(195, 195, 195)
BorderColor = QColor(150, 150, 150)
@ -133,10 +134,10 @@ class BubbleLabel(QWidget):
opacity = pyqtProperty(float, windowOpacity, setWindowOpacity)
class TestWidget(QWidget):
class Window(QWidget):
def __init__(self, *args, **kwargs):
super(TestWidget, self).__init__(*args, **kwargs)
super(Window, self).__init__(*args, **kwargs)
layout = QVBoxLayout(self)
self.msgEdit = QLineEdit(self, returnPressed=self.onMsgShow)
self.msgButton = QPushButton("显示内容", self, clicked=self.onMsgShow)
@ -158,6 +159,6 @@ class TestWidget(QWidget):
if __name__ == "__main__":
app = QApplication(sys.argv)
w = TestWidget()
w = Window()
w.show()
sys.exit(app.exec_())

View file

@ -4,20 +4,19 @@
"""
Created on 2019年5月22日
@author: Irony
@site: https://pyqt5.com https://github.com/892768447
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: Demo.CallVirtualKeyboard
@description: 调用系统虚拟键盘
"""
import glob
from PyQt5.QtCore import QProcess, QSysInfo
from PyQt5.QtWidgets import QWidget, QTextEdit, QVBoxLayout, QPushButton
__Author__ = 'Irony'
__Copyright__ = 'Copyright (c) 2019 Irony'
__Version__ = 1.0
try:
from PyQt5.QtCore import QProcess, QSysInfo
from PyQt5.QtWidgets import QApplication, QWidget, QTextEdit, QVBoxLayout, QPushButton
except ImportError:
from PySide2.QtCore import QProcess, QSysInfo
from PySide2.QtWidgets import QApplication, QWidget, QTextEdit, QVBoxLayout, QPushButton
class Window(QWidget):
@ -50,7 +49,7 @@ class Window(QWidget):
self.resultEdit.append('start osk error: %s' % e)
elif kernelType == 'darwin':
pass
# elif kernelType=='linux':
# elif kernelType=='linux':
else:
ret = QProcess.startDetached('florence')
self.resultEdit.append('start florence: %s' % ret)
@ -62,7 +61,7 @@ class Window(QWidget):
if __name__ == '__main__':
import sys
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
w = Window()
w.show()

View file

@ -4,7 +4,7 @@
"""
Created on 2019年3月19日
@author: Irony
@site: https://pyqt5.com https://github.com/892768447
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: CircleLine
@description:
@ -14,13 +14,14 @@ from math import floor, pi, cos, sin
from random import random, randint
from time import time
from PyQt5.QtCore import QTimer, Qt
from PyQt5.QtGui import QColor, QPainter, QPainterPath, QPen
from PyQt5.QtWidgets import QWidget
__Author__ = 'Irony'
__Copyright__ = 'Copyright (c) 2019'
try:
from PyQt5.QtCore import QTimer, Qt
from PyQt5.QtGui import QColor, QPainter, QPainterPath, QPen
from PyQt5.QtWidgets import QWidget, QApplication
except ImportError:
from PySide2.QtCore import QTimer, Qt
from PySide2.QtGui import QColor, QPainter, QPainterPath, QPen
from PySide2.QtWidgets import QWidget, QApplication
# 最小和最大半径、半径阈值和填充圆的百分比
radMin = 10
@ -60,18 +61,21 @@ circleExpMin = 0.997
circleExpSp = 0.00004
circlePulse = False
# 生成随机整数 a<=x<=b
def randint(a, b):
return floor(random() * (b - a + 1) + a)
# 生成随机小数
def randRange(a, b):
return random() * (b - a) + a
# 生成接近a的随机小数
@ -243,7 +247,7 @@ class CircleLineWindow(QWidget):
path = QPainterPath()
path.moveTo(circles[i].x + xi, circles[i].y + yi)
path.lineTo(circles[j].x + xj, circles[j].y + yj)
# samecolor = circles[i].color == circles[j].color
# samecolor = circles[i].color == circles[j].color
c = QColor(circles[i].borderColor)
c.setAlphaF(min(circles[i].opacity, circles[j].opacity)
* ((self.linkDist - dist) / self.linkDist))
@ -255,7 +259,7 @@ class CircleLineWindow(QWidget):
if __name__ == '__main__':
import sys
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
w = CircleLineWindow()
w.resize(800, 600)

View file

@ -1,25 +1,25 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
"""
Created on 2017年4月12日
@author: Irony."[讽刺]
@site: https://pyqt5.com , https://github.com/892768447
@author: Irony
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: 自定义属性测试
@description:
'''
"""
from random import randint
from PyQt5.QtCore import pyqtProperty, pyqtSignal
from PyQt5.QtWidgets import QPushButton
__version__ = "0.0.1"
try:
from PyQt5.QtCore import pyqtProperty, pyqtSignal
from PyQt5.QtWidgets import QPushButton, QApplication
except ImportError:
from PySide2.QtCore import Property as pyqtProperty, Signal as pyqtSignal
from PySide2.QtWidgets import QPushButton, QApplication
class Window(QPushButton):
bgChanged = pyqtSignal(str, str)
def __init__(self):
@ -56,7 +56,7 @@ class Window(QPushButton):
if __name__ == "__main__":
import sys
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
w = Window()
w.setStyleSheet(

View file

@ -4,22 +4,25 @@
"""
Created on 2018年3月1日
@author: Irony
@site: https://pyqt5.com , https://github.com/892768447
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: EmbedWindow
@description: 嵌入外部窗口
"""
__Author__ = 'By: Irony\nQQ: 892768447\nEmail: 892768447@qq.com'
__Copyright__ = 'Copyright (c) 2018 Irony'
__Version__ = 1.0
import win32con
import win32gui
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QWindow
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QPushButton, QListWidget, \
QLabel
try:
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QWindow
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QPushButton, QListWidget, \
QLabel, QApplication
except ImportError:
from PySide2.QtCore import Qt
from PySide2.QtGui import QWindow
from PySide2.QtWidgets import QWidget, QVBoxLayout, QPushButton, QListWidget, \
QLabel, QApplication
class Window(QWidget):
@ -113,8 +116,7 @@ if __name__ == '__main__':
import sys
import cgitb
cgitb.enable(format='txt')
from PyQt5.QtWidgets import QApplication
cgitb.enable(format='text')
app = QApplication(sys.argv)
w = Window()

View file

@ -1,31 +1,33 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
"""
Created on 2018年1月29日
@author: Irony."[讽刺]
@site: https://pyqt5.com , https://github.com/892768447
@author: Irony
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: FacePoints
@description: 人脸特征点
'''
from bz2 import BZ2Decompressor
"""
import cgitb
import os
import sys
from bz2 import BZ2Decompressor
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
import numpy
__Author__ = "By: Irony.\"[讽刺]\nQQ: 892768447\nEmail: 892768447@qq.com"
__Copyright__ = "Copyright (c) 2018 Irony.\"[讽刺]"
__Version__ = "Version 1.0"
try:
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
except ImportError:
from PySide2.QtCore import QTimer, QUrl, QFile, QIODevice
from PySide2.QtGui import QImage, QPixmap
from PySide2.QtNetwork import QNetworkAccessManager, QNetworkRequest
from PySide2.QtWidgets import QLabel, QMessageBox, QApplication
DOWNSCALE = 4
URL = 'http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2'
@ -163,7 +165,7 @@ class OpencvWidget(QLabel):
if __name__ == "__main__":
cgitb.enable(1, None, 5, '')
cgitb.enable(format='text')
app = QApplication(sys.argv)
w = OpencvWidget()
w.show()

View file

@ -4,23 +4,21 @@
"""
Created on 2018年10月22日
@author: Irony
@site: https://github.com/892768447
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: FollowWindow
@description: 跟随外部窗口
"""
import os
from PyQt5.QtCore import QTimer
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QPushButton
import win32gui
__Author__ = """By: Irony
QQ: 892768447
Email: 892768447@qq.com"""
__Copyright__ = "Copyright (c) 2018 Irony"
__Version__ = "Version 1.0"
try:
from PyQt5.QtCore import QTimer
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QPushButton, QApplication
except ImportError:
from PySide2.QtCore import QTimer
from PySide2.QtWidgets import QWidget, QVBoxLayout, QPushButton, QApplication
class Window(QWidget):
@ -53,7 +51,7 @@ class Window(QWidget):
if __name__ == '__main__':
import sys
from PyQt5.QtWidgets import QApplication
# 先检测是否已有记事本打开
hwnd = win32gui.FindWindow('Notepad', None)
print('hwnd', hwnd)

View file

@ -4,20 +4,22 @@
"""
Created on 2019年4月19日
@author: Irony
@site: https://pyqt5.com https://github.com/892768447
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: FramelessDialog
@description: 无边框圆角对话框
"""
from PyQt5.QtCore import Qt, QSize, QTimer
from PyQt5.QtWidgets import QDialog, QVBoxLayout, QWidget,\
QGraphicsDropShadowEffect, QPushButton, QGridLayout, QSpacerItem,\
QSizePolicy
__Author__ = "Irony"
__Copyright__ = 'Copyright (c) 2019 Irony'
__Version__ = 1.0
try:
from PyQt5.QtCore import Qt, QSize, QTimer
from PyQt5.QtWidgets import QDialog, QVBoxLayout, QWidget, \
QGraphicsDropShadowEffect, QPushButton, QGridLayout, QSpacerItem, \
QSizePolicy, QApplication
except ImportError:
from PySide2.QtCore import Qt, QSize, QTimer
from PySide2.QtWidgets import QDialog, QVBoxLayout, QWidget, \
QGraphicsDropShadowEffect, QPushButton, QGridLayout, QSpacerItem, \
QSizePolicy, QApplication
Stylesheet = """
#Custom_Widget {
@ -77,7 +79,7 @@ class Dialog(QDialog):
if __name__ == '__main__':
import sys
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
w = Dialog()
w.exec_()

View file

@ -1,24 +1,26 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QPushButton, QTextEdit
"""
Created on 2018年4月30日
@author: Irony
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: Test
@description:
"""
try:
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QPushButton, QTextEdit, QApplication
except ImportError:
from PySide2.QtGui import QIcon
from PySide2.QtWidgets import QWidget, QVBoxLayout, QPushButton, QTextEdit, QApplication
from Lib.FramelessWindow import FramelessWindow # @UnresolvedImport
# Created on 2018年4月30日
# author: Irony
# site: https://pyqt5.com , https://github.com/892768447
# email: 892768447@qq.com
# file: Test
# description:
__Author__ = """By: Irony
QQ: 892768447
Email: 892768447@qq.com"""
__Copyright__ = 'Copyright (c) 2018 Irony'
__Version__ = 1.0
class MainWindow(QWidget):
def __init__(self, *args, **kwargs):
@ -63,7 +65,7 @@ TitleBar {
if __name__ == '__main__':
import sys
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
app.setStyleSheet(StyleSheet)
w = FramelessWindow()

View file

@ -4,21 +4,20 @@
"""
Created on 2020年3月13日
@author: Irony
@site: https://pyqt.site https://github.com/892768447
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: Demo.GifCursor
@description:
"""
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QPushButton
try:
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QPushButton, QApplication
except ImportError:
from PySide2.QtWidgets import QWidget, QVBoxLayout, QPushButton, QApplication
from Lib.QCursorGif import QCursorGif
__Author__ = 'Irony'
__Copyright__ = 'Copyright (c) 2020'
__Version__ = 1.0
class Window(QWidget, QCursorGif):
def __init__(self, *args, **kwargs):
@ -38,8 +37,9 @@ class Window(QWidget, QCursorGif):
if __name__ == '__main__':
import sys
import cgitb
cgitb.enable(1, None, 5, '')
from PyQt5.QtWidgets import QApplication
cgitb.enable(format='text')
app = QApplication(sys.argv)
w = Window()
w.show()

View file

@ -4,7 +4,7 @@
"""
Created on 2019年2月24日
@author: Irony
@site: https://pyqt5.com https://github.com/892768447
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: IsSignalConnected
@description: 判断信号是否连接
@ -13,13 +13,6 @@ Created on 2019年2月24日
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QPushButton, QTextBrowser
__Author__ = """By: Irony
QQ: 892768447
Email: 892768447@qq.com"""
__Copyright__ = 'Copyright (c) 2019 Irony'
__Version__ = 1.0
class Window(QWidget):
def __init__(self, *args, **kwargs):
@ -37,8 +30,10 @@ class Window(QWidget):
# button1 clicked 是否连接: %s, %s
# button2 clicked 是否连接: %s, %s
""" % (
self.isSignalConnected(self.button1, 'clicked()'), self.button1.receivers(self.button1.clicked) > 0,
self.isSignalConnected(self.button2, 'clicked()'), self.button2.receivers(self.button2.clicked) > 0,
self.isSignalConnected(self.button1, 'clicked()'),
self.button1.receivers(self.button1.clicked) > 0,
self.isSignalConnected(self.button2, 'clicked()'),
self.button2.receivers(self.button2.clicked) > 0,
))
def isSignalConnected(self, obj, name):
@ -57,6 +52,7 @@ class Window(QWidget):
if __name__ == '__main__':
import sys
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
w = Window()
w.show()

View file

@ -1,27 +1,26 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
"""
Created on 2017年3月30日
@author: Irony."[讽刺]
@site: https://pyqt5.com , https://github.com/892768447
@author: Irony
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: 单实例应用.Application
@description:
'''
"""
from PyQt5.QtCore import QSharedMemory, pyqtSignal, Qt
from PyQt5.QtNetwork import QLocalSocket, QLocalServer
from PyQt5.QtWidgets import QApplication
__version__ = "0.0.1"
class SharedApplication(QApplication):
def __init__(self, *args, **kwargs):
super(SharedApplication, self).__init__(*args, **kwargs)
self._running = False
key = "SharedApplication" + __version__
key = "SharedApplication"
self._memory = QSharedMemory(key, self)
isAttached = self._memory.isAttached()
@ -41,8 +40,8 @@ class SharedApplication(QApplication):
def isRunning(self):
return self._running
class QSingleApplication(QApplication):
class QSingleApplication(QApplication):
messageReceived = pyqtSignal(str)
def __init__(self, *args, **kwargs):

View file

@ -1,26 +1,29 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from PyQt5.QtCore import Qt, pyqtSignal, QPoint
from PyQt5.QtGui import QFont, QEnterEvent, QPainter, QColor, QPen
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QLabel,\
"""
Created on 2018年4月30日
@author: Irony
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: FramelessWindow
@description:
"""
try:
from PyQt5.QtCore import Qt, pyqtSignal, QPoint
from PyQt5.QtGui import QFont, QEnterEvent, QPainter, QColor, QPen
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QLabel, \
QSpacerItem, QSizePolicy, QPushButton
except ImportError:
from PySide2.QtCore import Qt, Signal as pyqtSignal, QPoint
from PySide2.QtGui import QFont, QEnterEvent, QPainter, QColor, QPen
from PySide2.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QLabel, \
QSpacerItem, QSizePolicy, QPushButton
# Created on 2018年4月30日
# author: Irony
# site: https://pyqt5.com , https://github.com/892768447
# email: 892768447@qq.com
# file: FramelessWindow
# description:
__Author__ = """By: Irony
QQ: 892768447
Email: 892768447@qq.com"""
__Copyright__ = 'Copyright (c) 2018 Irony'
__Version__ = 1.0
class TitleBar(QWidget):
# 窗口最小化信号
windowMinimumed = pyqtSignal()
# 窗口最大化信号
@ -48,7 +51,7 @@ class TitleBar(QWidget):
layout.setContentsMargins(0, 0, 0, 0)
# 窗口图标
self.iconLabel = QLabel(self)
# self.iconLabel.setScaledContents(True)
# self.iconLabel.setScaledContents(True)
layout.addWidget(self.iconLabel)
# 窗口标题
self.titleLabel = QLabel(self)
@ -138,7 +141,6 @@ Left, Top, Right, Bottom, LeftTop, RightTop, LeftBottom, RightBottom = range(8)
class FramelessWindow(QWidget):
# 四周边距
Margins = 5

View file

@ -4,19 +4,20 @@
"""
Created on 2020年3月13日
@author: Irony
@site: https://pyqt.site https://github.com/892768447
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: Demo.Lib.QCursorGif
@description:
"""
from PyQt5.QtCore import QTimer, Qt
from PyQt5.QtGui import QCursor, QPixmap
from PyQt5.QtWidgets import QApplication
__Author__ = 'Irony'
__Copyright__ = 'Copyright (c) 2020'
__Version__ = 1.0
try:
from PyQt5.QtCore import QTimer, Qt
from PyQt5.QtGui import QCursor, QPixmap
from PyQt5.QtWidgets import QApplication
except ImportError:
from PySide2.QtCore import QTimer, Qt
from PySide2.QtGui import QCursor, QPixmap
from PySide2.QtWidgets import QApplication
class QCursorGif:

View file

@ -6,46 +6,50 @@
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
try:
from PyQt5 import QtCore, QtGui, QtWidgets
except ImportError:
from PySide2 import QtCore, QtGui, QtWidgets
class Ui_NotifyForm(object):
def setupUi(self, NotifyForm):
NotifyForm.setObjectName("NotifyForm")
NotifyForm.resize(300, 200)
NotifyForm.setStyleSheet("QWidget#widgetTitle {\n"
" background-color: rgb(76, 169, 106);\n"
"}\n"
"QWidget#widgetBottom {\n"
" border-top-style: solid;\n"
" border-top-width: 2px;\n"
" border-top-color: rgb(185, 218, 201);\n"
"}\n"
"QLabel#labelTitle {\n"
" color: rgb(255, 255, 255);\n"
"}\n"
"QLabel#labelContent {\n"
" padding: 5px;\n"
"}\n"
"QPushButton {\n"
" border: none;\n"
" background: transparent;\n"
"}\n"
"QPushButton#buttonClose {\n"
" font-family: \"webdings\";\n"
" color: rgb(255, 255, 255);\n"
"}\n"
"QPushButton#buttonClose:hover {\n"
" background-color: rgb(212, 64, 39);\n"
"}\n"
"QPushButton#buttonView {\n"
" color: rgb(255, 255, 255);\n"
" border-radius: 5px;\n"
" border: solid 1px rgb(76, 169, 106);\n"
" background-color: rgb(76, 169, 106);\n"
"}\n"
"QPushButton#buttonView:hover {\n"
" color: rgb(0, 0, 0);\n"
"}")
" background-color: rgb(76, 169, 106);\n"
"}\n"
"QWidget#widgetBottom {\n"
" border-top-style: solid;\n"
" border-top-width: 2px;\n"
" border-top-color: rgb(185, 218, 201);\n"
"}\n"
"QLabel#labelTitle {\n"
" color: rgb(255, 255, 255);\n"
"}\n"
"QLabel#labelContent {\n"
" padding: 5px;\n"
"}\n"
"QPushButton {\n"
" border: none;\n"
" background: transparent;\n"
"}\n"
"QPushButton#buttonClose {\n"
" font-family: \"webdings\";\n"
" color: rgb(255, 255, 255);\n"
"}\n"
"QPushButton#buttonClose:hover {\n"
" background-color: rgb(212, 64, 39);\n"
"}\n"
"QPushButton#buttonView {\n"
" color: rgb(255, 255, 255);\n"
" border-radius: 5px;\n"
" border: solid 1px rgb(76, 169, 106);\n"
" background-color: rgb(76, 169, 106);\n"
"}\n"
"QPushButton#buttonView:hover {\n"
" color: rgb(0, 0, 0);\n"
"}")
self.verticalLayout = QtWidgets.QVBoxLayout(NotifyForm)
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.verticalLayout.setSpacing(6)
@ -61,7 +65,8 @@ class Ui_NotifyForm(object):
self.labelTitle.setText("")
self.labelTitle.setObjectName("labelTitle")
self.horizontalLayout_3.addWidget(self.labelTitle)
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding,
QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_3.addItem(spacerItem)
self.buttonClose = QtWidgets.QPushButton(self.widgetTitle)
self.buttonClose.setMinimumSize(QtCore.QSize(26, 26))
@ -80,7 +85,8 @@ class Ui_NotifyForm(object):
self.horizontalLayout.setContentsMargins(0, 5, 5, 5)
self.horizontalLayout.setSpacing(0)
self.horizontalLayout.setObjectName("horizontalLayout")
spacerItem1 = QtWidgets.QSpacerItem(170, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
spacerItem1 = QtWidgets.QSpacerItem(170, 20, QtWidgets.QSizePolicy.Expanding,
QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout.addItem(spacerItem1)
self.buttonView = QtWidgets.QPushButton(self.widgetBottom)
self.buttonView.setMinimumSize(QtCore.QSize(75, 25))
@ -102,10 +108,10 @@ class Ui_NotifyForm(object):
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
NotifyForm = QtWidgets.QWidget()
ui = Ui_NotifyForm()
ui.setupUi(NotifyForm)
NotifyForm.show()
sys.exit(app.exec_())

View file

@ -8,7 +8,10 @@
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
try:
from PyQt5 import QtCore, QtGui, QtWidgets
except ImportError:
from PySide2 import QtCore, QtGui, QtWidgets
class Ui_FormFrameless(object):
@ -28,7 +31,8 @@ class Ui_FormFrameless(object):
self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout.setSpacing(0)
self.horizontalLayout.setObjectName("horizontalLayout")
spacerItem = QtWidgets.QSpacerItem(253, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
spacerItem = QtWidgets.QSpacerItem(253, 20, QtWidgets.QSizePolicy.Expanding,
QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout.addItem(spacerItem)
self.buttonMinimum = QtWidgets.QPushButton(self.widgetTitleBar)
self.buttonMinimum.setMinimumSize(QtCore.QSize(36, 36))
@ -83,15 +87,17 @@ class Ui_FormFrameless(object):
self.buttonNormal.setText(_translate("FormFrameless", "2"))
self.buttonClose.setToolTip(_translate("FormFrameless", "Close"))
self.buttonClose.setText(_translate("FormFrameless", "r"))
self.textEdit.setHtml(_translate("FormFrameless", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'Sans Serif\'; font-size:9pt; font-weight:400; font-style:normal;\">\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">frameless window with move and resize</p></body></html>"))
self.textEdit.setHtml(_translate("FormFrameless",
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'Sans Serif\'; font-size:9pt; font-weight:400; font-style:normal;\">\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">frameless window with move and resize</p></body></html>"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
FormFrameless = QtWidgets.QWidget()
ui = Ui_FormFrameless()

View file

@ -2,28 +2,27 @@
# -*- coding: utf-8 -*-
"""Created on 2018年8月2日
author: Irony
site: https://pyqt5.com , https://github.com/892768447
site: https://pyqt.site , https://github.com/PyQt5
email: 892768447@qq.com
file: win无边框调整大小
description:
"""
from ctypes.wintypes import POINT
import ctypes.wintypes
from ctypes.wintypes import POINT
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QWidget, QPushButton
from PyQt5.QtWinExtras import QtWin
import win32api
import win32con
import win32gui
__Author__ = """By: Irony
QQ: 892768447
Email: 892768447@qq.com"""
__Copyright__ = 'Copyright (c) 2018 Irony'
__Version__ = 1.0
try:
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QWidget, QPushButton, QApplication
from PyQt5.QtWinExtras import QtWin
except ImportError:
from PySide2.QtCore import Qt
from PySide2.QtWidgets import QWidget, QPushButton, QApplication
from PySide2.QtWinExtras import QtWin
class MINMAXINFO(ctypes.Structure):
@ -37,7 +36,6 @@ class MINMAXINFO(ctypes.Structure):
class Window(QWidget):
BorderWidth = 5
def __init__(self, *args, **kwargs):
@ -121,7 +119,7 @@ class Window(QWidget):
if __name__ == '__main__':
import sys
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
w = Window()
btn = QPushButton('exit', w, clicked=app.quit)

View file

@ -10,10 +10,16 @@ Created on 2018年4月30日
@description:
"""
try:
from PyQt5.QtCore import QTimer, Qt, QEvent, QObject
from PyQt5.QtGui import QWindow, QPainter, QColor, QMouseEvent
from PyQt5.QtWidgets import QApplication, QWidget, QMessageBox
except ImportError:
from PySide2.QtCore import QTimer, Qt, QEvent, QObject
from PySide2.QtGui import QWindow, QPainter, QColor, QMouseEvent
from PySide2.QtWidgets import QApplication, QWidget, QMessageBox
from Lib.ui_frameless import Ui_FormFrameless
from PyQt5.QtCore import QTimer, Qt, QEvent, QObject
from PyQt5.QtGui import QWindow, QPainter, QColor, QMouseEvent
from PyQt5.QtWidgets import QApplication, QWidget, QMessageBox
class FramelessObject(QObject):

View file

@ -4,30 +4,30 @@
"""
Created on 2018年9月9日
@author: Irony
@site: https://pyqt5.com , https://github.com/892768447
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: Notification
@description:
"""
import base64
from PyQt5.QtCore import Qt, QRectF, QSize, pyqtSignal, QTimer
from PyQt5.QtGui import QPixmap, QImage, QPainter, QPainterPath,\
try:
from PyQt5.QtCore import Qt, QRectF, QSize, pyqtSignal, QTimer
from PyQt5.QtGui import QPixmap, QImage, QPainter, QPainterPath, \
QColor
from PyQt5.QtWidgets import QWidget, QLabel, QHBoxLayout,\
QGridLayout, QSpacerItem, QSizePolicy, QGraphicsDropShadowEffect,\
QListWidget, QListWidgetItem
__Author__ = """By: Irony
QQ: 892768447
Email: 892768447@qq.com"""
__Copyright__ = 'Copyright (c) 2018 Irony'
__Version__ = 1.0
from PyQt5.QtWidgets import QWidget, QLabel, QHBoxLayout, \
QGridLayout, QSpacerItem, QSizePolicy, QGraphicsDropShadowEffect, \
QListWidget, QListWidgetItem, QApplication, QPushButton
except ImportError:
from PySide2.QtCore import Qt, QRectF, QSize, Signal as pyqtSignal, QTimer
from PySide2.QtGui import QPixmap, QImage, QPainter, QPainterPath, \
QColor
from PySide2.QtWidgets import QWidget, QLabel, QHBoxLayout, \
QGridLayout, QSpacerItem, QSizePolicy, QGraphicsDropShadowEffect, \
QListWidget, QListWidgetItem, QApplication, QPushButton
class NotificationIcon:
Info, Success, Warning, Error, Close = range(5)
Types = {
Info: None,
@ -39,10 +39,14 @@ class NotificationIcon:
@classmethod
def init(cls):
cls.Types[cls.Info] = QPixmap(QImage.fromData(base64.b64decode('iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAC5ElEQVRYR8VX0VHbQBB9e/bkN3QQU0FMBSEVYFcQ8xPBJLJ1FWAqOMcaxogfTAWQCiAVRKkgTgfmM4zRZu6QhGzL0p0nDPr17e7bt7tv14RX/uiV48MJgAon+8TiAMRtMFogaqUJxADPwRRzg67kl8+xbWJWANR40iPQSSFgtX/mGQkaDr56V3VAKgGos4s2JXwJoF3naMPvMS+SrpTHs032GwGkdF+DsFMVnJm/oyGGeHico0EjIjpYes+YMyVd6R/flfkpBWCCQ9zaZM2LZDfLMGXsZ5kdI/lYBmINgHHyyLd1mWdBbAFAM/GY7K2WYx1AeB4T6L1N9umbGxZ0qktATaEAdCps48D39oq/LwEw3U5CN92LfczJoewfT7MAywDCaEbAuxeLrh0zz4L+0e4aAJfGy+sP3IMxlH1vpMJoSMCJDXgWtJeJVc6ACs9HBBrYODCJAFdYvAmkPJxnNqMwYht7Bn+T/lGg3z4DGEd3RPhQ54DBvwAOVkeqagRXfTLjh+x7+8sALOtfHLuiYzWOAiLoKbD58mnIGbCmLxUepS6NQmYlUGE0JeCTTXT9JvA9E9sZgO5iIpoyc6/YzcqSwQzgGgBXB7oXpH9klpRSkxY1xW/b7Iu2zk34PILPnazCqEPAtTWA8iZ0HsOu9L0bw4DzCJeNocMGNDpQ3IKO+6NUiJ4ysZNiBv5I3zPnmJmG5oM+wbS+9+qkvGi7NAXGmeUy0ioofa+XA0jH0UaMKpdRWs/adcwMqfV/tenqpqHY/Znt+j2gJi00RUzA201dXaxh9iZdZloJS+9H1otrkbRrD5InFqpPskxEshJQ468CkSmJC+i1HigaaxCAuCljgoDhwPdOjf7rFVxxuJrMkXScjtKc1rOLNpJk6nii5XmYzbngzlZn+RIb40kPJPTBYXUt6VEDJ8Pi6bWpNFb/jFYY6YGpDeKdjBmTKdMcxDGEmP73v2a2Gr/NOycGtglQZ/MPzEqCMLGckJEAAAAASUVORK5CYII=')))
cls.Types[cls.Success] = QPixmap(QImage.fromData(base64.b64decode('iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAACZUlEQVRYR8VXS3LTQBDtVsDbcAPMCbB3limkcAKSG4QFdnaYE2BOQLKzxSLJCeAGSUQheSnfwLmB2VJhXmpExpFHI2sk2RWv5FJPv9evP9NieuIfPzE+VSJw8qt3IMDvmahDoDYxt2UAACXMWIIowR5ffn8TJbaBWRE4CXvHAH9RgKXOgQUI48CfXZbZbiTw8Xe/w3d0zkydMkem91IZpyWOJu5sUXS+kEAqt3B+MNOLOuDqDEBLxxFHk7eza5MfIwEJDjhXTYD1s8zinYlEjsCD7FdNI9cJpEq0RFdPR47AMOzLCn69zegz6UgCP+pmfa8RSKudnPNdgCufTOLDxJtdPP7PoA1Cd8HEL5sSUCCD0B0x8bc1f8Bi6sevcgS2VXh6hMOwDz0gsUddNaxWKRjeuKfE/KlJ9Dq4UYH/o/Ns6scj+bgiMAjdayb26xLQwTfVEwg3gRcf6ARq578KuLo7VDc8psCQqwfjr4EfjYvkrAquFJ56UYpdSkAZSmNd1rrg0leOQFELgvA58OJTxVyRaAJORPOpF6UXnFUR5sDiXjs7UqsOMGMRlrWhTkJXpFL3mNrQZhA1lH3F0TiI5FurUQyMpn58VjhkSqQA4Tbw4nSVW6sBU5VXktXSeONlJH3s8jrOVr9RgVSFuNcWfzlh5n3LoKzMAPxxWuiULiQpiR2sZNnCyzIuWUr5Z1Ml0sgdHFZaShVDuR86/0huL3VXtDk/F4e11vKsTHLSCeKx7bYkW80hjLOrV1GhWH0ZrSlyh2MwdZhYfi8oZeYgLBmUiGd8sfVPM6syr2lUSYGaGBuP3QN6rVUwYV/egwAAAABJRU5ErkJggg==')))
cls.Types[cls.Warning] = QPixmap(QImage.fromData(base64.b64decode('iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAACmElEQVRYR8VXTW7TUBD+xjYSXZFukOIsSE9AskNJJMoJmq4r7OYEwAkabhBOkB/Emt4gVIojdpgbpIumEitX6gKB7UHPkauXxLHfc4F6Z3l+vvnmm/fGhAd+6IHzQwvA9cfOITMfAdQAcx1EdVEAM/tEFADsWyaPn57MfdXClABcT1qnzHSWJiwMzrwgoF91vXGRbS6AH59ajd8hDYmoURQo67tgxoij42rv62KX/04Agu44xmciVMokT32YERgGjquvZ1+y4mQCWPUa0/sk3vQlwqssEFsAVrQbU4XKL/ai2+5PPK6waQ4AOsoDnDARh83NdmwBuJq0fQI9L6p+L7rd3+/5gbAToMPI+FbkIzRRc72mbLcGIFE7jGFRIPHddmZrvstJh1X8CHGv6sxHqe1GkPYCoGcqgcoCAPPCdr2DLQC6wqMoPEj7qdqCNKllxs30sLpjYDluDUDGG5XqhY2sal3w4PiD7c7fJnHShMtJR8zpy/8CALiwndnhBgD1/t+XAXkaZAaUVHwnHulg0W6BNEWlAQD8zna8gQB0Ne70iXCm2j55jCUAei1gxvuaO+uXAcDg7zXHSy640iKUAehOEDJFqDmGQkiPLO5Fv+KADXOqvCuIsrPGsIyQdHou22YeRMJgOdHTQTkAfGk7XrLKrWlAvOhcRgBfWiZ3RQti0zxXuUFXCXMuo0TRitfxugjbIxC5RYzI6s9kIGFh+KLOpiW22id5AUuI8IaisFG4kCQg/sFKJgtPLix3KWXGeRETRbQDuCFCV2spTYMm+2FEI1WBbYIRPTeiqFtqLZeDraaD+qrbkpgQAvfl1WsXU0p/RjIjYYhTkNFgcCVlRlRKoAAc+5aF0V//NVPoc2kTLQZKZ8lx/AMXBmMwuXUwOAAAAABJRU5ErkJggg==')))
cls.Types[cls.Error] = QPixmap(QImage.fromData(base64.b64decode('iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAACrklEQVRYR82XW27aQBSG/4PtiNhIpStouoImKwjZAV1B07coWCpZQcgK6kh2lLeSFZSsIOwgdAdkBaUSEBQDpxpjU9vM+EJR03nDzJz/mzm3GcIrD3plfZQCeD47O1ho2jERNRmoE9AQG2BgBGBAwIiZe5Zh3JPjiG+5oxCAEF5q2iWITnMtRhOYu5XF4mr/9naYtSYXYGLbHQCXhYVTEwlom657rVqvBOB2uz71/a+ldq1SYe6ahnEhc4sSYGzbfQKOt915eh0D/ZrrnqS/SwEmrVYXRJ92Jb4OC+C65rrtuN0NgIltNwF837V4zN5Hy3V70e9NgFZrCKJ3CQDmJ9MwDsW36XzeB/AhA/CHqeuN2WxWX2paX2JraHneeynA+Pz8lCqVbxLjV5brimxAEJxqiEA8CjZVBvFy+bl2c9MV9hInoAw85qFpGEeRYQVEQjzMokcQHWxsiPne8jzh6j8AodGfyqNlHpiGcaKAkIk/gChwm2yYuv5W2FqfwLNtN5bAQ2bwySB83zENo50A8/1McaFRAU72XVek+mpk+D/JlIKI/xkee654uCbIhjVAqZIrgSgpLhiCwN4OAEj4vEB2yDybBCjsAol4ZD0nRdMQSRcUCsKUeNSw4o2mKMRGEOamoVx8FXDZKVosDYNMUHXAsBRnppo8RQcbpTgIGEkhykpFjnWxzGhPQYxt2yHgS/oIlKVYTJxImpG482nz+VG1Wh1N84pMCCGa0ULXHwmoJwCYnyzPW5fn/68dh7EgPbrMMl3gz7gro+n/7EoWD7w4a96l1NnJ1Yz5Lt6wCgFEk0r1CIkbiPnC9DxH5aHcd4FYGD5MOqVOg/muslh0/vphkm63k5eXZvA0I6qD+ZCI3jDzLxANiHn1NNvb6+30aVYgwLeeUsgFW1svsPA3Ncq4MHzVeO8AAAAASUVORK5CYII=')))
cls.Types[cls.Info] = QPixmap(QImage.fromData(base64.b64decode(
'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAC5ElEQVRYR8VX0VHbQBB9e/bkN3QQU0FMBSEVYFcQ8xPBJLJ1FWAqOMcaxogfTAWQCiAVRKkgTgfmM4zRZu6QhGzL0p0nDPr17e7bt7tv14RX/uiV48MJgAon+8TiAMRtMFogaqUJxADPwRRzg67kl8+xbWJWANR40iPQSSFgtX/mGQkaDr56V3VAKgGos4s2JXwJoF3naMPvMS+SrpTHs032GwGkdF+DsFMVnJm/oyGGeHico0EjIjpYes+YMyVd6R/flfkpBWCCQ9zaZM2LZDfLMGXsZ5kdI/lYBmINgHHyyLd1mWdBbAFAM/GY7K2WYx1AeB4T6L1N9umbGxZ0qktATaEAdCps48D39oq/LwEw3U5CN92LfczJoewfT7MAywDCaEbAuxeLrh0zz4L+0e4aAJfGy+sP3IMxlH1vpMJoSMCJDXgWtJeJVc6ACs9HBBrYODCJAFdYvAmkPJxnNqMwYht7Bn+T/lGg3z4DGEd3RPhQ54DBvwAOVkeqagRXfTLjh+x7+8sALOtfHLuiYzWOAiLoKbD58mnIGbCmLxUepS6NQmYlUGE0JeCTTXT9JvA9E9sZgO5iIpoyc6/YzcqSwQzgGgBXB7oXpH9klpRSkxY1xW/b7Iu2zk34PILPnazCqEPAtTWA8iZ0HsOu9L0bw4DzCJeNocMGNDpQ3IKO+6NUiJ4ysZNiBv5I3zPnmJmG5oM+wbS+9+qkvGi7NAXGmeUy0ioofa+XA0jH0UaMKpdRWs/adcwMqfV/tenqpqHY/Znt+j2gJi00RUzA201dXaxh9iZdZloJS+9H1otrkbRrD5InFqpPskxEshJQ468CkSmJC+i1HigaaxCAuCljgoDhwPdOjf7rFVxxuJrMkXScjtKc1rOLNpJk6nii5XmYzbngzlZn+RIb40kPJPTBYXUt6VEDJ8Pi6bWpNFb/jFYY6YGpDeKdjBmTKdMcxDGEmP73v2a2Gr/NOycGtglQZ/MPzEqCMLGckJEAAAAASUVORK5CYII=')))
cls.Types[cls.Success] = QPixmap(QImage.fromData(base64.b64decode(
'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAACZUlEQVRYR8VXS3LTQBDtVsDbcAPMCbB3limkcAKSG4QFdnaYE2BOQLKzxSLJCeAGSUQheSnfwLmB2VJhXmpExpFHI2sk2RWv5FJPv9evP9NieuIfPzE+VSJw8qt3IMDvmahDoDYxt2UAACXMWIIowR5ffn8TJbaBWRE4CXvHAH9RgKXOgQUI48CfXZbZbiTw8Xe/w3d0zkydMkem91IZpyWOJu5sUXS+kEAqt3B+MNOLOuDqDEBLxxFHk7eza5MfIwEJDjhXTYD1s8zinYlEjsCD7FdNI9cJpEq0RFdPR47AMOzLCn69zegz6UgCP+pmfa8RSKudnPNdgCufTOLDxJtdPP7PoA1Cd8HEL5sSUCCD0B0x8bc1f8Bi6sevcgS2VXh6hMOwDz0gsUddNaxWKRjeuKfE/KlJ9Dq4UYH/o/Ns6scj+bgiMAjdayb26xLQwTfVEwg3gRcf6ARq578KuLo7VDc8psCQqwfjr4EfjYvkrAquFJ56UYpdSkAZSmNd1rrg0leOQFELgvA58OJTxVyRaAJORPOpF6UXnFUR5sDiXjs7UqsOMGMRlrWhTkJXpFL3mNrQZhA1lH3F0TiI5FurUQyMpn58VjhkSqQA4Tbw4nSVW6sBU5VXktXSeONlJH3s8jrOVr9RgVSFuNcWfzlh5n3LoKzMAPxxWuiULiQpiR2sZNnCyzIuWUr5Z1Ml0sgdHFZaShVDuR86/0huL3VXtDk/F4e11vKsTHLSCeKx7bYkW80hjLOrV1GhWH0ZrSlyh2MwdZhYfi8oZeYgLBmUiGd8sfVPM6syr2lUSYGaGBuP3QN6rVUwYV/egwAAAABJRU5ErkJggg==')))
cls.Types[cls.Warning] = QPixmap(QImage.fromData(base64.b64decode(
'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAACmElEQVRYR8VXTW7TUBD+xjYSXZFukOIsSE9AskNJJMoJmq4r7OYEwAkabhBOkB/Emt4gVIojdpgbpIumEitX6gKB7UHPkauXxLHfc4F6Z3l+vvnmm/fGhAd+6IHzQwvA9cfOITMfAdQAcx1EdVEAM/tEFADsWyaPn57MfdXClABcT1qnzHSWJiwMzrwgoF91vXGRbS6AH59ajd8hDYmoURQo67tgxoij42rv62KX/04Agu44xmciVMokT32YERgGjquvZ1+y4mQCWPUa0/sk3vQlwqssEFsAVrQbU4XKL/ai2+5PPK6waQ4AOsoDnDARh83NdmwBuJq0fQI9L6p+L7rd3+/5gbAToMPI+FbkIzRRc72mbLcGIFE7jGFRIPHddmZrvstJh1X8CHGv6sxHqe1GkPYCoGcqgcoCAPPCdr2DLQC6wqMoPEj7qdqCNKllxs30sLpjYDluDUDGG5XqhY2sal3w4PiD7c7fJnHShMtJR8zpy/8CALiwndnhBgD1/t+XAXkaZAaUVHwnHulg0W6BNEWlAQD8zna8gQB0Ne70iXCm2j55jCUAei1gxvuaO+uXAcDg7zXHSy640iKUAehOEDJFqDmGQkiPLO5Fv+KADXOqvCuIsrPGsIyQdHou22YeRMJgOdHTQTkAfGk7XrLKrWlAvOhcRgBfWiZ3RQti0zxXuUFXCXMuo0TRitfxugjbIxC5RYzI6s9kIGFh+KLOpiW22id5AUuI8IaisFG4kCQg/sFKJgtPLix3KWXGeRETRbQDuCFCV2spTYMm+2FEI1WBbYIRPTeiqFtqLZeDraaD+qrbkpgQAvfl1WsXU0p/RjIjYYhTkNFgcCVlRlRKoAAc+5aF0V//NVPoc2kTLQZKZ8lx/AMXBmMwuXUwOAAAAABJRU5ErkJggg==')))
cls.Types[cls.Error] = QPixmap(QImage.fromData(base64.b64decode(
'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAACrklEQVRYR82XW27aQBSG/4PtiNhIpStouoImKwjZAV1B07coWCpZQcgK6kh2lLeSFZSsIOwgdAdkBaUSEBQDpxpjU9vM+EJR03nDzJz/mzm3GcIrD3plfZQCeD47O1ho2jERNRmoE9AQG2BgBGBAwIiZe5Zh3JPjiG+5oxCAEF5q2iWITnMtRhOYu5XF4mr/9naYtSYXYGLbHQCXhYVTEwlom657rVqvBOB2uz71/a+ldq1SYe6ahnEhc4sSYGzbfQKOt915eh0D/ZrrnqS/SwEmrVYXRJ92Jb4OC+C65rrtuN0NgIltNwF837V4zN5Hy3V70e9NgFZrCKJ3CQDmJ9MwDsW36XzeB/AhA/CHqeuN2WxWX2paX2JraHneeynA+Pz8lCqVbxLjV5brimxAEJxqiEA8CjZVBvFy+bl2c9MV9hInoAw85qFpGEeRYQVEQjzMokcQHWxsiPne8jzh6j8AodGfyqNlHpiGcaKAkIk/gChwm2yYuv5W2FqfwLNtN5bAQ2bwySB83zENo50A8/1McaFRAU72XVek+mpk+D/JlIKI/xkee654uCbIhjVAqZIrgSgpLhiCwN4OAEj4vEB2yDybBCjsAol4ZD0nRdMQSRcUCsKUeNSw4o2mKMRGEOamoVx8FXDZKVosDYNMUHXAsBRnppo8RQcbpTgIGEkhykpFjnWxzGhPQYxt2yHgS/oIlKVYTJxImpG482nz+VG1Wh1N84pMCCGa0ULXHwmoJwCYnyzPW5fn/68dh7EgPbrMMl3gz7gro+n/7EoWD7w4a96l1NnJ1Yz5Lt6wCgFEk0r1CIkbiPnC9DxH5aHcd4FYGD5MOqVOg/muslh0/vphkm63k5eXZvA0I6qD+ZCI3jDzLxANiHn1NNvb6+30aVYgwLeeUsgFW1svsPA3Ncq4MHzVeO8AAAAASUVORK5CYII=')))
cls.Types[cls.Close] = QPixmap(QImage.fromData(base64.b64decode(
'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAeElEQVQ4T2NkoBAwUqifgboGzJy76AIjE3NCWmL0BWwumzV/qcH/f38XpCfHGcDkUVwAUsDw9+8GBmbmAHRDcMlheAGbQnwGYw0DZA1gp+JwFUgKZyDCDQGpwuIlrGGAHHAUGUCRFygKRIqjkeKERE6+oG5eIMcFAOqSchGwiKKAAAAAAElFTkSuQmCC')))
@ -52,7 +56,6 @@ class NotificationIcon:
class NotificationItem(QWidget):
closed = pyqtSignal(QListWidgetItem)
def __init__(self, title, message, item, *args, ntype=0, callback=None, **kwargs):
@ -152,7 +155,6 @@ class NotificationItem(QWidget):
class NotificationWindow(QListWidget):
_instance = None
def __init__(self, *args, **kwargs):
@ -243,15 +245,18 @@ class NotificationWindow(QListWidget):
if __name__ == '__main__':
import sys
import cgitb
sys.excepthook = cgitb.Hook(1, None, 5, sys.stderr, 'text')
from PyQt5.QtWidgets import QApplication, QPushButton
cgitb.enable(format='text')
app = QApplication(sys.argv)
w = QWidget()
layout = QHBoxLayout(w)
def callback():
print('回调点击')
layout.addWidget(QPushButton(
'Info', w, clicked=lambda: NotificationWindow.info('提示', '这是一条会自动关闭的消息', callback=callback)))
layout.addWidget(QPushButton(
@ -268,9 +273,9 @@ if __name__ == '__main__':
callback=callback)))
w.show()
# NotificationIcon.init()
# ww = NotificationItem('提示', '<html><head/><body><p><span style=" font-style:italic; color:teal;">这是提示文案这是提示文案这是提示文案这是提示文案这是提示文案这是提示文案这是提示文案这是提示文案</span></p></body></html>', None,
# ntype=NotificationIcon.Error)
# ww.bgWidget.setVisible(True)
# ww.show()
# NotificationIcon.init()
# ww = NotificationItem('提示', '<html><head/><body><p><span style=" font-style:italic; color:teal;">这是提示文案这是提示文案这是提示文案这是提示文案这是提示文案这是提示文案这是提示文案这是提示文案</span></p></body></html>', None,
# ntype=NotificationIcon.Error)
# ww.bgWidget.setVisible(True)
# ww.show()
sys.exit(app.exec_())

View file

@ -3,23 +3,22 @@
"""
Created on 2018年6月8日
author: Irony
site: https://pyqt5.com , https://github.com/892768447
site: https://pyqt.site , https://github.com/PyQt5
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
__Author__ = """By: Irony
QQ: 892768447
Email: 892768447@qq.com"""
__Copyright__ = 'Copyright (c) 2018 Irony'
__Version__ = 1.0
try:
from PyQt5.QtCore import Qt, QRect
from PyQt5.QtGui import QPainter, QPen, QCursor, QColor
from PyQt5.QtWidgets import QLabel, QWidget, QApplication
except ImportError:
from PySide2.QtCore import Qt, QRect
from PySide2.QtGui import QPainter, QPen, QCursor, QColor
from PySide2.QtWidgets import QLabel, QWidget, QApplication
class FrameWidget(QWidget):
@ -116,6 +115,7 @@ class Label(QLabel):
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
app.setQuitOnLastWindowClosed(True)
w = Label()

View file

@ -4,7 +4,7 @@
"""
Created on 2019年3月8日
@author: Irony
@site: https://pyqt5.com https://github.com/892768447
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: Threading.QtThreading
@description:
@ -12,19 +12,15 @@ Created on 2019年3月8日
from threading import Thread
from time import sleep
from PyQt5.QtCore import QObject, pyqtSignal, QTimer, Qt
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QProgressBar
__Author__ = """By: Irony
QQ: 892768447
Email: 892768447@qq.com"""
__Copyright__ = 'Copyright (c) 2019 Irony'
__Version__ = 1.0
try:
from PyQt5.QtCore import QObject, pyqtSignal, QTimer, Qt
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QProgressBar, QApplication
except ImportError:
from PySide2.QtCore import QObject, Signal as pyqtSignal, QTimer, Qt
from PySide2.QtWidgets import QWidget, QVBoxLayout, QProgressBar, QApplication
class _Signals(QObject):
updateProgress = pyqtSignal(int)
@ -63,7 +59,7 @@ class Window(QWidget):
if __name__ == '__main__':
import sys
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
w = Window()
w.show()

View file

@ -1,26 +1,26 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
"""
Created on 2018年1月17日
@author: Irony."[讽刺]
@site: https://pyqt5.com , https://github.com/892768447
@author: Irony
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: RestartWindow
@description: 窗口重启
'''
from PyQt5.QtCore import pyqtSignal
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QPushButton, QLineEdit,\
QMessageBox
"""
__Author__ = "By: Irony.\"[讽刺]\nQQ: 892768447\nEmail: 892768447@qq.com"
__Copyright__ = "Copyright (c) 2018 Irony.\"[讽刺]"
__Version__ = "Version 1.0"
try:
from PyQt5.QtCore import pyqtSignal
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QPushButton, QLineEdit, \
QMessageBox, QApplication
except ImportError:
from PySide2.QtCore import Signal as pyqtSignal
from PySide2.QtWidgets import QWidget, QVBoxLayout, QLabel, QPushButton, QLineEdit, \
QMessageBox, QApplication
class RestartWindow(QWidget):
restarted = pyqtSignal(QWidget, str)
_Self = None # 很重要,保留窗口引用
@ -55,7 +55,7 @@ class RestartWindow(QWidget):
if __name__ == "__main__":
import sys
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
w = RestartWindow("test")
w.show()

View file

@ -4,15 +4,19 @@
"""
Created on 2021/4/13
@author: Irony
@site: https://github.com/PyQt5
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: ScreenNotify
@description: 屏幕分辨率DPI变化通知
"""
import sys
from PyQt5.QtCore import QTimer, QRect
from PyQt5.QtWidgets import QApplication, QPlainTextEdit, qApp
try:
from PyQt5.QtCore import QTimer, QRect
from PyQt5.QtWidgets import QApplication, QPlainTextEdit
except ImportError:
from PySide2.QtCore import QTimer, QRect
from PySide2.QtWidgets import QApplication, QPlainTextEdit
class Window(QPlainTextEdit):
@ -27,22 +31,24 @@ class Window(QPlainTextEdit):
self.m_timer.setSingleShot(True) # **重要** 保证多次信号尽量少的调用函数
# 主要是多屏幕->无屏幕->有屏幕
qApp.primaryScreenChanged.connect(lambda _: self.m_timer.start(1000))
QApplication.instance().primaryScreenChanged.connect(lambda _: self.m_timer.start(1000))
# 其它信号最终基本上都会调用该信号
qApp.primaryScreen().virtualGeometryChanged.connect(lambda _: self.m_timer.start(1000))
QApplication.instance().primaryScreen().virtualGeometryChanged.connect(
lambda _: self.m_timer.start(1000))
# DPI变化
qApp.primaryScreen().logicalDotsPerInchChanged.connect(lambda _: self.m_timer.start(1000))
QApplication.instance().primaryScreen().logicalDotsPerInchChanged.connect(
lambda _: self.m_timer.start(1000))
def onSolutionChanged(self):
# 获取主屏幕
screen = qApp.primaryScreen()
screen = QApplication.instance().primaryScreen()
if self.m_rect == screen.availableVirtualGeometry():
return
self.m_rect = screen.availableVirtualGeometry()
# 所有屏幕可用大小
self.appendPlainText('\navailableVirtualGeometry: {0}'.format(str(screen.availableVirtualGeometry())))
# 获取所有屏幕
screens = qApp.screens()
screens = QApplication.instance().screens()
for screen in screens:
self.appendPlainText(
'screen: {0}, geometry({1}), availableGeometry({2}), logicalDotsPerInch({3}), '

View file

@ -1,3 +1,4 @@
from ctypes import CDLL
dll = CDLL('Data/ScreenShot.dll')
dll.PrScrn()

View file

@ -1,28 +1,29 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
"""
Created on 2017年3月30日
@author: Irony."[讽刺]
@site: https://pyqt5.com , https://github.com/892768447
@author: Irony
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: TestQSharedMemory
@description:
'''
from PyQt5.QtWidgets import QWidget
"""
from PyQt5.QtWidgets import QWidget
from Lib.Application import SharedApplication # @UnresolvedImport
__version__ = "0.0.1"
class Widget(QWidget):
def __init__(self,*args,**kwargs):
super(Widget, self).__init__(*args,**kwargs)
def __init__(self, *args, **kwargs):
super(Widget, self).__init__(*args, **kwargs)
if __name__ == "__main__":
import sys,os
import sys, os
print(os.getpid())
app = SharedApplication(sys.argv)
if app.isRunning():

View file

@ -4,20 +4,18 @@
"""
Created on 2019年4月23日
@author: Irony
@site: https://pyqt5.com https://github.com/892768447
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: ShowFrameWhenDrag
@description: 调整窗口显示边框
"""
from ctypes import sizeof, windll, c_int, byref, c_long, c_void_p, c_ulong, c_longlong,\
from ctypes import sizeof, windll, c_int, byref, c_long, c_void_p, c_ulong, c_longlong, \
c_ulonglong, WINFUNCTYPE, c_uint
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel
__Author__ = 'Irony'
__Copyright__ = 'Copyright (c) 2019 Irony'
__Version__ = 1.0
try:
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QApplication
except ImportError:
from PySide2.QtWidgets import QWidget, QVBoxLayout, QLabel, QApplication
if sizeof(c_long) == sizeof(c_void_p):
WPARAM = c_ulong
@ -82,7 +80,7 @@ class Window(QWidget):
if __name__ == '__main__':
import sys
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
w = Window()
w.show()

View file

@ -1,28 +1,29 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
"""
Created on 2017年3月30日
@author: Irony."[讽刺]
@site: https://pyqt5.com , https://github.com/892768447
@author: Irony
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: TestQSingleApplication
@description:
'''
"""
from PyQt5.QtWidgets import QTextEdit
from Lib.Application import QSingleApplication # @UnresolvedImport
__version__ = "0.0.1"
class Widget(QTextEdit):
def __init__(self, *args, **kwargs):
super(Widget, self).__init__(*args, **kwargs)
if __name__ == "__main__":
import sys
app = QSingleApplication(sys.argv)
if app.isRunning():
app.sendMessage("app is running")

View file

@ -1,23 +1,25 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
"""
Created on 2017年4月5日
@author: Irony."[讽刺]
@site: https://pyqt5.com , https://github.com/892768447
@author: Irony
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: widgets.WidgetCode
@description:
'''
from random import sample
"""
import string
from random import sample
from PyQt5.QtCore import Qt, qrand, QPointF, QPoint, QBasicTimer
from PyQt5.QtGui import QPainter, QBrush, QPen, QPalette, QFontMetrics
from PyQt5.QtWidgets import QLabel
__version__ = "0.0.1"
try:
from PyQt5.QtCore import Qt, qrand, QPointF, QPoint, QBasicTimer
from PyQt5.QtGui import QPainter, QBrush, QPen, QPalette, QFontMetrics, QFontDatabase
from PyQt5.QtWidgets import QLabel, QApplication, QWidget, QHBoxLayout, QLineEdit
except ImportError:
from PySide2.QtCore import Qt, qrand, QPointF, QPoint, QBasicTimer
from PySide2.QtGui import QPainter, QBrush, QPen, QPalette, QFontMetrics, QFontDatabase
from PySide2.QtWidgets import QLabel, QApplication, QWidget, QHBoxLayout, QLineEdit
DEF_NOISYPOINTCOUNT = 60 # 噪点数量
COLORLIST = ("black", "gray", "red", "green", "blue", "magenta")
@ -28,6 +30,7 @@ FONT = "<font color=\"{color}\">{word}</font>"
WORDS = list(string.ascii_letters + string.digits)
SINETABLE = (0, 38, 71, 92, 100, 92, 71, 38, 0, -38, -71, -92, -100, -92, -71, -38)
class WidgetCode(QLabel):
def __init__(self, *args, **kwargs):
@ -58,11 +61,11 @@ class WidgetCode(QLabel):
def setSensitive(self, sensitive):
self._sensitive = sensitive
# def setText(self, text):
# text = text if (text and len(text) == 4) else "".join(sample(WORDS, 4)) # 随机4个字符
# self._code = str(text)
# html = "".join([FONT.format(color=COLORLIST[qrand() % 6], word=t) for t in text])
# super(WidgetCode, self).setText(HTML.format(html=html))
# def setText(self, text):
# text = text if (text and len(text) == 4) else "".join(sample(WORDS, 4)) # 随机4个字符
# self._code = str(text)
# html = "".join([FONT.format(color=COLORLIST[qrand() % 6], word=t) for t in text])
# super(WidgetCode, self).setText(HTML.format(html=html))
def mouseReleaseEvent(self, event):
super(WidgetCode, self).mouseReleaseEvent(event)
@ -107,11 +110,10 @@ class WidgetCode(QLabel):
painter.drawText(x, y - ((SINETABLE[index] * metrics.height()) / 400), ch)
x += metrics.width(ch)
if __name__ == "__main__":
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout
from PyQt5.QtGui import QFontDatabase
from PyQt5.QtWidgets import QLineEdit
app = QApplication(sys.argv)
app.setApplicationName("Validate Code")
QFontDatabase.addApplicationFont("Data/itckrist.ttf")
@ -121,7 +123,7 @@ if __name__ == "__main__":
cwidget = WidgetCode(w, minimumHeight=35, minimumWidth=80)
layout.addWidget(cwidget)
lineEdit = QLineEdit(w, maxLength=4, placeholderText="请输入验证码并按回车验证",
returnPressed=lambda:print(cwidget.check(lineEdit.text())))
returnPressed=lambda: print(cwidget.check(lineEdit.text())))
layout.addWidget(lineEdit)
w.show()
sys.exit(app.exec_())

View file

@ -4,18 +4,18 @@
"""
Created on 2018年3月1日
@author: Irony
@site: https://pyqt5.com , https://github.com/892768447
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: WeltHideWindow
@description: 简单的窗口贴边隐藏
"""
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QPushButton
__Author__ = 'By: Irony\nQQ: 892768447\nEmail: 892768447@qq.com'
__Copyright__ = 'Copyright (c) 2018 Irony'
__Version__ = 1.0
try:
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QPushButton, QApplication
except ImportError:
from PySide2.QtCore import Qt
from PySide2.QtWidgets import QWidget, QVBoxLayout, QPushButton, QApplication
class WeltHideWindow(QWidget):
@ -88,7 +88,7 @@ class WeltHideWindow(QWidget):
if __name__ == '__main__':
import sys
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
w = WeltHideWindow()
w.show()

View file

@ -1,27 +1,27 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
"""
Created on 2017年3月30日
@author: Irony."[讽刺]
@site: https://pyqt5.com , https://github.com/892768447
@author: Irony
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: WindowNotify
@description: 右下角弹窗
'''
"""
import webbrowser
from PyQt5.QtCore import Qt, QPropertyAnimation, QPoint, QTimer, pyqtSignal
from PyQt5.QtWidgets import QWidget, QPushButton
try:
from PyQt5.QtCore import Qt, QPropertyAnimation, QPoint, QTimer, pyqtSignal
from PyQt5.QtWidgets import QWidget, QPushButton, QApplication, QHBoxLayout
except ImportError:
from PySide2.QtCore import Qt, QPropertyAnimation, QPoint, QTimer, Signal as pyqtSignal
from PySide2.QtWidgets import QWidget, QPushButton, QApplication, QHBoxLayout
from Lib.UiNotify import Ui_NotifyForm # @UnresolvedImport
__version__ = "0.0.1"
class WindowNotify(QWidget, Ui_NotifyForm):
SignalClosed = pyqtSignal() # 弹窗关闭信号
def __init__(self, title="", content="", timeout=5000, *args, **kwargs):
@ -60,10 +60,10 @@ class WindowNotify(QWidget, Ui_NotifyForm):
webbrowser.open_new_tab("http://alyl.vip")
def onClose(self):
#点击关闭按钮时
# 点击关闭按钮时
print("onClose")
self.isShow = False
QTimer.singleShot(100, self.closeAnimation)#启动弹回动画
QTimer.singleShot(100, self.closeAnimation) # 启动弹回动画
def _init(self):
# 隐藏任务栏|去掉边框|顶层显示
@ -112,13 +112,14 @@ class WindowNotify(QWidget, Ui_NotifyForm):
print("showAnimation isShow = True")
# 显示动画
self.isShow = True
self.animation.stop()#先停止之前的动画,重新开始
self.animation.stop() # 先停止之前的动画,重新开始
self.animation.setStartValue(self.pos())
self.animation.setEndValue(self._endPos)
self.animation.start()
# 弹出5秒后,如果没有焦点则弹回去
self._timer.start(self._timeout)
# QTimer.singleShot(self._timeout, self.closeAnimation)
# QTimer.singleShot(self._timeout, self.closeAnimation)
def closeAnimation(self):
print("closeAnimation hasFocus", self.hasFocus())
@ -158,9 +159,10 @@ class WindowNotify(QWidget, Ui_NotifyForm):
if self._timeouted:
QTimer.singleShot(1000, self.closeAnimation)
if __name__ == "__main__":
import sys
from PyQt5.QtWidgets import QApplication, QHBoxLayout
app = QApplication(sys.argv)
window = QWidget()

View file

@ -1,6 +1,6 @@
#!/usr/bin/env python
# encoding: utf-8
'''
"""
@author: wxj
@license: (C) Hefei tongzhi electromechanical control technology co.LTD
@contact:
@ -8,4 +8,4 @@
@file: __init__.py.py
@time: 2019/5/21 18:07
@desc:
'''
"""

View file

@ -8,6 +8,7 @@
from PyQt5 import QtCore, QtGui, QtWidgets
class graph_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
@ -50,4 +51,3 @@ class graph_Form(object):
self.label.setText(_translate("Form", "图形分析"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("Form", "折线图"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("Form", "Tab 2"))

View file

@ -8,6 +8,7 @@
from PyQt5 import QtCore, QtGui, QtWidgets
class graph_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
@ -51,4 +52,3 @@ class graph_Form(object):
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("Form", "折线图"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("Form", "Tab 2"))
self.pushButton_7.setText(_translate("Form", "分析"))

View file

@ -1,19 +1,22 @@
#!/usr/bin/env python
# encoding: utf-8
'''
"""
Created on 2019年5月21日
@author: weike32
@site: https://pyqt5.com ,https://github.com/weike32
@site: https://pyqt.site ,https://github.com/weike32
@email: 394967319@qq.com
@file: CopyContent
@description: 禁止右键添加滑动窗口点击按钮生成图片自定义Y轴坐标背景颜色调整
'''
"""
import sys
from PyQt5.QtWidgets import QDialog, QApplication, QWidget
from qtpy import QtWidgets
import pyqtgraph as pg
from PyQt5.QtGui import QSpacerItem, QSizePolicy
from PyQt5.QtWidgets import QDialog, QApplication, QWidget, QScrollArea, QVBoxLayout
from PyQtGraph.Data.graphTest import graph_Form
class CustomViewBox(pg.ViewBox):
def __init__(self, *args, **kwds):
pg.ViewBox.__init__(self, *args, **kwds)
@ -27,11 +30,12 @@ class CustomViewBox(pg.ViewBox):
def mouseDragEvent(self, ev):
pg.ViewBox.mouseDragEvent(self, ev)
def wheelEvent(self,ev, axis=None):
def wheelEvent(self, ev, axis=None):
# pg.ViewBox.wheelEvent(self, ev, axis)
ev.ignore()
class graphAnalysis(QDialog,graph_Form):
class graphAnalysis(QDialog, graph_Form):
def __init__(self):
super(graphAnalysis, self).__init__()
self.setupUi(self)
@ -39,34 +43,36 @@ class graphAnalysis(QDialog,graph_Form):
self.tabWidget.clear()
def test(self):
tab1 = QtWidgets.QWidget()
scrollArea = QtWidgets.QScrollArea(tab1)
scrollArea.setMinimumSize(984,550)
tab1 = QWidget()
scrollArea = QScrollArea(tab1)
scrollArea.setMinimumSize(984, 550)
scrollArea.setWidgetResizable(True)
labelsContainer = QWidget()
labelsContainer.setMinimumSize(0,1500)
labelsContainer.setMinimumSize(0, 1500)
scrollArea.setWidget(labelsContainer)
layout = QtWidgets.QVBoxLayout(labelsContainer)
layout = QVBoxLayout(labelsContainer)
time = ['2019-04-20 08:09:00', '2019-04-20 08:09:00', '2019-04-20 08:09:00', '2019-04-20 08:09:00']
value = [1.2, 2, 1, 4]
xdict = dict(enumerate(time))
ticks = [list(zip(range(4), tuple(time)))]
vb = CustomViewBox()
plt = pg.PlotWidget(title="标题这里填写",viewBox=vb)
plt = pg.PlotWidget(title="标题这里填写", viewBox=vb)
plt.setBackground(background=None)
plt.plot(list(xdict.keys()), value)
plt.getPlotItem().getAxis("bottom").setTicks(ticks)
temp = QtWidgets.QWidget()
temp.setMinimumSize(900,300)
temp.setMaximumSize(900,300)
layout1 = QtWidgets.QVBoxLayout(temp)
temp = QWidget()
temp.setMinimumSize(900, 300)
temp.setMaximumSize(900, 300)
layout1 = QVBoxLayout(temp)
layout1.addWidget(plt)
layout.addWidget(temp)
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
spacerItem = QSpacerItem(20, 40, QSizePolicy.Minimum,
QSizePolicy.Expanding)
layout.addItem(spacerItem)
self.tabWidget.addTab(tab1, '这里tabWidget修改标签')
if __name__ =="__main__":
if __name__ == "__main__":
app = QApplication(sys.argv)
w = graphAnalysis()
w.show()

View file

@ -1,18 +1,20 @@
#!/usr/bin/env python
# encoding: utf-8
'''
"""
Created on 2019年5月2日
@author: weike32
@site: https://pyqt5.com ,https://github.com/weike32
@site: https://pyqt.site ,https://github.com/weike32
@email: 394967319@qq.com
@file: CopyContent
@description: 查阅了很多博客如果有异可以联系作者邮箱本Demo仅作学习参考用保有后续相关权益
'''
"""
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5 import QtCore
import numpy as np
import pyqtgraph as pg
from PyQt5 import QtCore
from PyQt5.QtWidgets import QApplication, QMainWindow
class Ui_Form(object):
def setupUi(self, Form):
@ -22,6 +24,7 @@ class Ui_Form(object):
self.graphicsView.setGeometry(QtCore.QRect(75, 131, 621, 441))
self.graphicsView.setObjectName("graphicsView")
class MyWindow(QMainWindow, Ui_Form):
def __init__(self, parent=None):
super(MyWindow, self).__init__(parent)
@ -33,10 +36,13 @@ class MyWindow(QMainWindow, Ui_Form):
self.graphicsView.addItem(self.label)
self.setMouseTracking(True)
self.graphicsView.scene().sigMouseMoved.connect(self.onMouseMoved)
def onMouseMoved(self, evt):
if self.graphicsView.plotItem.vb.mapSceneToView(evt):
point =self.graphicsView.plotItem.vb.mapSceneToView(evt)
point = self.graphicsView.plotItem.vb.mapSceneToView(evt)
self.label.setHtml("<p style='color:white'>横坐标:{0}</p>".format(point.x()))
if __name__ == '__main__':
app = QApplication(sys.argv)
myWin = MyWindow()

View file

@ -1,18 +1,19 @@
#!/usr/bin/env python
# encoding: utf-8
'''
"""
Created on 2019年8月17日
@author: weike32
@site: https://pyqt5.com ,https://github.com/weike32
@site: https://pyqt.site ,https://github.com/weike32
@email: 394967319@qq.com
@file: CopyContent
@description:
'''
"""
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QDialog, QApplication, QWidget
from qtpy import QtWidgets
import pyqtgraph as pg
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QSpacerItem, QSizePolicy
from PyQt5.QtWidgets import QDialog, QApplication, QWidget, QScrollArea, QVBoxLayout
from PyQtGraph.Data.graphAnalysis import graph_Form
@ -26,38 +27,41 @@ class CustomViewBox(pg.ViewBox):
def mouseClickEvent(self, ev):
if ev.button() == pg.QtCore.Qt.RightButton:
self.autoRange()
def mouseDragEvent(self, ev):
pg.ViewBox.mouseDragEvent(self, ev)
def wheelEvent(self,ev,axis=None):
def wheelEvent(self, ev, axis=None):
ev.ignore()
class graphAnalysis(QDialog,graph_Form):
class graphAnalysis(QDialog, graph_Form):
def __init__(self):
super(graphAnalysis, self).__init__()
self.setupUi(self)
self.pushButton_7.clicked.connect(self.test)
self.tabWidget.clear()
def handleChanged(self,item,column):
def handleChanged(self, item, column):
count = item.childCount()
if item.checkState(column) == Qt.Checked:
for index in range(count):
item.child(index).setCheckState(0,Qt.Checked)
item.child(index).setCheckState(0, Qt.Checked)
if item.checkState(column) == Qt.Unchecked:
for index in range(count):
item.child(index).setCheckState(0,Qt.Unchecked)
item.child(index).setCheckState(0, Qt.Unchecked)
def test(self):
tab1 = QtWidgets.QWidget()
scrollArea = QtWidgets.QScrollArea(tab1)
scrollArea.setMinimumSize(650,550)
tab1 = QWidget()
scrollArea = QScrollArea(tab1)
scrollArea.setMinimumSize(650, 550)
scrollArea.setWidgetResizable(True)
labelsContainer = QWidget()
labelsContainer.setMinimumSize(0,3000+200)
labelsContainer.setMinimumSize(0, 3000 + 200)
scrollArea.setWidget(labelsContainer)
layout = QtWidgets.QVBoxLayout(labelsContainer)
layout = QVBoxLayout(labelsContainer)
time = ['2019-04-20 08:09:00', '2019-04-20 08:09:00', '2019-04-20 08:09:00', '2019-04-20 08:09:00']
value = [1.2, 2, 1, 4]
@ -65,25 +69,27 @@ class graphAnalysis(QDialog,graph_Form):
ticks = [list(zip(range(4), tuple(time)))]
for i in range(11):
vb1 = CustomViewBox()
plt1 = pg.PlotWidget(title="Basic array plotting%s"%i, viewBox=vb1)
plt1 = pg.PlotWidget(title="Basic array plotting%s" % i, viewBox=vb1)
plt1.resize(500, 500)
plt1.setBackground(background=None)
plt1.plot(list(xdict.keys()), value)
plt1.getPlotItem().getAxis("bottom").setTicks(ticks)
temp1 = QtWidgets.QWidget()
temp1 = QWidget()
temp1.setMinimumSize(600, 300)
temp1.setMaximumSize(600, 300)
layout2 = QtWidgets.QVBoxLayout(temp1)
layout2 = QVBoxLayout(temp1)
layout2.addWidget(plt1)
layout.addWidget(temp1)
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
spacerItem = QSpacerItem(20, 40, QSizePolicy.Minimum,
QSizePolicy.Expanding)
layout.addItem(spacerItem)
# print(layout.count())
self.tabWidget.addTab(tab1, '12')
for i in range(self.tabWidget.count()):
self.tabWidget.widget(i)
if __name__ =="__main__":
if __name__ == "__main__":
app = QApplication(sys.argv)
w = graphAnalysis()
w.show()

View file

@ -1,27 +1,31 @@
#!/usr/bin/env python
# encoding: utf-8
'''
"""
Created on 2019年5月21日
@author: weike32
@site: https://pyqt5.com ,https://github.com/weike32
@site: https://pyqt.site ,https://github.com/weike32
@email: 394967319@qq.com
@file: CopyContent
@description: 工具类
'''
"""
import pyqtgraph as pg
from pyqtgraph.exporters.ImageExporter import ImageExporter, Exporter
from pyqtgraph.parametertree import Parameter
import pyqtgraph as pg
#不用修改源码,重加载,解决右键保存图片异常
# 不用修改源码,重加载,解决右键保存图片异常
def widthChanged(self):
sr = self.getSourceRect()
ar = float(sr.height()) / sr.width()
self.params.param('height').setValue(int(self.params['width'] * ar), blockSignal=self.heightChanged)
def heightChanged(self):
sr = self.getSourceRect()
ar = float(sr.width()) / sr.height()
self.params.param('width').setValue(int(self.params['height'] * ar), blockSignal=self.widthChanged)
def New__init__(self, item):
Exporter.__init__(self, item)
tr = self.getTargetRect()
@ -42,11 +46,14 @@ def New__init__(self, item):
])
self.params.param('width').sigValueChanged.connect(self.widthChanged)
self.params.param('height').sigValueChanged.connect(self.heightChanged)
ImageExporter.heightChanged = heightChanged
ImageExporter.widthChanged = widthChanged
ImageExporter.__init__ = New__init__
#解决自定义坐标轴密集显示
# 解决自定义坐标轴密集显示
class MyStringAxis(pg.AxisItem):
def __init__(self, xdict, *args, **kwargs):
pg.AxisItem.__init__(self, *args, **kwargs)
@ -62,6 +69,8 @@ class MyStringAxis(pg.AxisItem):
vstr = ""
strings.append(vstr)
return strings
# 禁止鼠标事件
class CustomViewBox(pg.ViewBox):
def __init__(self, *args, **kwds):
@ -76,5 +85,5 @@ class CustomViewBox(pg.ViewBox):
def mouseDragEvent(self, ev):
pg.ViewBox.mouseDragEvent(self, ev)
def wheelEvent(self,ev, axis=None):
def wheelEvent(self, ev, axis=None):
pg.ViewBox.wheelEvent(self, ev, axis)

View file

@ -1,24 +1,20 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
"""
Created on 2017年4月6日
@author: Irony."[讽刺]
@site: https://pyqt5.com , https://github.com/892768447
@author: Irony
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: ViewOffice
@description:
'''
"""
from PyQt5.QAxContainer import QAxWidget
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QPushButton, QFileDialog,\
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QPushButton, QFileDialog, \
QMessageBox
__Author__ = "By: Irony.\"[讽刺]\nQQ: 892768447\nEmail: 892768447@qq.com"
__Copyright__ = "Copyright (c) 2017 Irony.\"[讽刺]"
__Version__ = "Version 1.0"
class AxWidget(QWidget):
def __init__(self, *args, **kwargs):
@ -68,6 +64,7 @@ class AxWidget(QWidget):
if __name__ == '__main__':
import sys
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
w = AxWidget()
w.show()

View file

@ -1,19 +1,23 @@
"""
Created on 2018年1月30日
@author: Irony."[讽刺]
@site: https://pyqt5.com , https://github.com/892768447
@author: Irony
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: CalendarQssStyle
@description: 日历美化样式
"""
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QTextCharFormat, QBrush, QColor
from PyQt5.QtWidgets import QApplication, QCalendarWidget
try:
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QTextCharFormat, QBrush, QColor
from PyQt5.QtWidgets import QApplication, QCalendarWidget
except ImportError:
from PySide2.QtCore import Qt
from PySide2.QtGui import QTextCharFormat, QBrush, QColor
from PySide2.QtWidgets import QApplication, QCalendarWidget
StyleSheet = '''
StyleSheet = """
/*顶部导航区域*/
#qt_calendar_navigationbar {
background-color: rgb(0, 188, 212);
@ -101,7 +105,7 @@ CalendarWidget QToolButton::menu-indicator {
outline: 0px;/*去掉选中后的虚线框*/
selection-background-color: rgb(0, 188, 212); /*选中背景颜色*/
}
'''
"""
class CalendarWidget(QCalendarWidget):

View file

@ -3,8 +3,8 @@
"""
Created on 2018年1月27日
@author: Irony."[讽刺]
@site: https://pyqt5.com , https://github.com/892768447
@author: Irony
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: CityLinkage
@description: 下拉联动
@ -12,16 +12,18 @@ Created on 2018年1月27日
import json
import sys
from PyQt5.QtCore import Qt, QSortFilterProxyModel, QRegExp
from PyQt5.QtGui import QStandardItemModel, QStandardItem
from PyQt5.QtWidgets import QWidget, QApplication, QHBoxLayout, QComboBox,\
QLabel, QSpacerItem, QSizePolicy
import chardet
__Author__ = "By: Irony.\"[讽刺]\nQQ: 892768447\nEmail: 892768447@qq.com"
__Copyright__ = "Copyright (c) 2018 Irony.\"[讽刺]"
__Version__ = "Version 1.0"
try:
from PyQt5.QtCore import Qt, QSortFilterProxyModel, QRegExp
from PyQt5.QtGui import QStandardItemModel, QStandardItem
from PyQt5.QtWidgets import QWidget, QApplication, QHBoxLayout, QComboBox, \
QLabel, QSpacerItem, QSizePolicy
except ImportError:
from PySide2.QtCore import Qt, QSortFilterProxyModel, QRegExp
from PySide2.QtGui import QStandardItemModel, QStandardItem
from PySide2.QtWidgets import QWidget, QApplication, QHBoxLayout, QComboBox, \
QLabel, QSpacerItem, QSizePolicy
class SortFilterProxyModel(QSortFilterProxyModel):

View file

@ -3,28 +3,29 @@
"""
Created on 2018年1月26日
@author: Irony."[讽刺]
@site: https://pyqt5.com , https://github.com/892768447
@author: Irony
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: FileSystemModel
@file: CustomIcon
@description:
"""
import sys
from PyQt5.QtCore import QFileInfo
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QFileSystemModel, QFileIconProvider, QApplication,\
try:
from PyQt5.QtCore import QFileInfo
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QFileSystemModel, QFileIconProvider, QApplication, \
QTreeView
except ImportError:
from PySide2.QtCore import QFileInfo
from PySide2.QtGui import QIcon
from PySide2.QtWidgets import QFileSystemModel, QFileIconProvider, QApplication, \
QTreeView
__Author__ = "By: Irony.\"[讽刺]\nQQ: 892768447\nEmail: 892768447@qq.com"
__Copyright__ = "Copyright (c) 2018 Irony.\"[讽刺]"
__Version__ = "Version 1.0"
# 图标提供类
class FileIconProvider(QFileIconProvider):
"""图标提供类"""
def __init__(self, *args, **kwargs):
super(FileIconProvider, self).__init__(*args, **kwargs)

View file

@ -1,33 +1,28 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
"""
Created on 2018年2月4日
@author: Irony."[讽刺]
@site: https://pyqt5.com , https://github.com/892768447
@author: Irony
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: TencentMovieHotPlay_Flow
@description:
'''
"""
import os
import sys
import webbrowser
from PyQt5.QtCore import QSize, Qt, QUrl, QTimer, pyqtSignal
from PyQt5.QtGui import QPainter, QFont, QLinearGradient, QGradient, QColor,\
from PyQt5.QtGui import QPainter, QFont, QLinearGradient, QGradient, QColor, \
QBrush, QPaintEvent, QPixmap
from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest
from PyQt5.QtSvg import QSvgWidget
from PyQt5.QtWidgets import QWidget, QApplication, QVBoxLayout, QLabel,\
from PyQt5.QtWidgets import QWidget, QApplication, QVBoxLayout, QLabel, \
QHBoxLayout, QSpacerItem, QSizePolicy, QScrollArea, QAbstractSlider
from Lib.flowlayout import FlowLayout # @UnresolvedImport
from lxml.etree import HTML # @UnresolvedImport
__Author__ = "By: Irony.\"[讽刺]\nQQ: 892768447\nEmail: 892768447@qq.com"
__Copyright__ = "Copyright (c) 2018 Irony.\"[讽刺]"
__Version__ = "Version 1.0"
from Lib.flowlayout import FlowLayout # @UnresolvedImport
# offset=0,30,60,90
Url = "http://v.qq.com/x/list/movie?pay=-1&offset={0}"
@ -78,8 +73,8 @@ class CoverLabel(QLabel):
def __init__(self, cover_path, cover_title, video_url, *args, **kwargs):
super(CoverLabel, self).__init__(*args, **kwargs)
# super(CoverLabel, self).__init__(
# '<html><head/><body><img src="{0}"/></body></html>'.format(os.path.abspath(cover_path)), *args, **kwargs)
# super(CoverLabel, self).__init__(
# '<html><head/><body><img src="{0}"/></body></html>'.format(os.path.abspath(cover_path)), *args, **kwargs)
self.setCursor(Qt.PointingHandCursor)
self.setScaledContents(True)
self.setMinimumSize(220, 308)
@ -168,7 +163,8 @@ class ItemWidget(QWidget):
def setCover(self, path):
self.clabel.setCoverPath(path)
self.clabel.setPixmap(QPixmap(path))
# self.clabel.setText('<img src="{0}"/>'.format(os.path.abspath(path)))
# self.clabel.setText('<img src="{0}"/>'.format(os.path.abspath(path)))
def sizeHint(self):
# 每个item控件的大小
@ -188,7 +184,6 @@ class ItemWidget(QWidget):
class GridWidget(QWidget):
Page = 0
loadStarted = pyqtSignal(bool)

View file

@ -152,7 +152,6 @@ class FlowLayout(QLayout):
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)

View file

@ -1,23 +1,24 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
"""
Created on 2017年3月30日
@author: Irony."[讽刺]
@site: https://pyqt5.com , https://github.com/892768447
@author: Irony
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: AwesomeFont
@description:
'''
__Author__ = "By: Irony.\"[讽刺]\nQQ: 892768447\nEmail: 892768447@qq.com"
__Copyright__ = "Copyright (c) 2017 Irony.\"[讽刺]"
__Version__ = "Version 1.0"
"""
import sys
from PyQt5.QtGui import QFontDatabase, QFont
from PyQt5.QtWidgets import QApplication, QWidget, QGridLayout,\
try:
from PyQt5.QtGui import QFontDatabase, QFont
from PyQt5.QtWidgets import QApplication, QWidget, QGridLayout, \
QScrollArea, QPushButton
except ImportError:
from PySide2.QtGui import QFontDatabase, QFont
from PySide2.QtWidgets import QApplication, QWidget, QGridLayout, \
QScrollArea, QPushButton
from Lib.FontAwesome import FontAwesomes # @UnresolvedImport

View file

@ -1,5 +1,6 @@
# from bs4 import BeautifulSoup
import re
cheatsheet = open("cheatsheet.txt", "rb").read().decode()
re_fa = re.compile(" fa(.*)")

View file

@ -1,21 +1,22 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
"""
Created on 2017年3月30日
@author: Irony."[讽刺]
@site: https://pyqt5.com , https://github.com/892768447
@author: Irony
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: FontAwesome
@description:
'''
"""
# FontAwesome 版本: 4.7.0
# 字体图标地址: http://fontawesome.io/icons/
# 字体字符地址: http://fontawesome.io/cheatsheet/
class FontAwesomes:
FA = None
@classmethod

View file

@ -4,20 +4,18 @@
"""
Created on 2018年9月25日
@author: Irony
@site: https://pyqt5.com , https://github.com/892768447
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: AnimationShadowEffect
@description: 边框动画阴影动画
"""
from PyQt5.QtCore import QPropertyAnimation, pyqtProperty
from PyQt5.QtWidgets import QGraphicsDropShadowEffect
__Author__ = """By: Irony
QQ: 892768447
Email: 892768447@qq.com"""
__Copyright__ = 'Copyright (c) 2018 Irony'
__Version__ = 1.0
try:
from PyQt5.QtCore import QPropertyAnimation, pyqtProperty
from PyQt5.QtWidgets import QGraphicsDropShadowEffect
except ImportError:
from PySide2.QtCore import QPropertyAnimation, Property as pyqtProperty
from PySide2.QtWidgets import QGraphicsDropShadowEffect
class AnimationShadowEffect(QGraphicsDropShadowEffect):

View file

@ -4,25 +4,24 @@
"""
Created on 2018年9月25日
@author: Irony
@site: https://pyqt5.com , https://github.com/892768447
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: ShadowEffect
@description:
"""
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import QWidget, QHBoxLayout, QLabel, QPushButton, QLineEdit
try:
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import QWidget, QHBoxLayout, QLabel, QPushButton, QLineEdit, QApplication
except ImportError:
from PySide2.QtCore import Qt
from PySide2.QtGui import QPixmap
from PySide2.QtWidgets import QWidget, QHBoxLayout, QLabel, QPushButton, QLineEdit, QApplication
from Lib.AnimationShadowEffect import AnimationShadowEffect # @UnresolvedImport
__Author__ = """By: Irony
QQ: 892768447
Email: 892768447@qq.com"""
__Copyright__ = 'Copyright (c) 2018 Irony'
__Version__ = 1.0
class Window(QWidget):
def __init__(self, *args, **kwargs):
@ -64,7 +63,7 @@ class Window(QWidget):
if __name__ == '__main__':
import sys
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
w = Window()
w.show()

View file

@ -3,22 +3,22 @@
"""
Created on 2017年12月23日
@author: Irony."[讽刺]
@site: https://pyqt5.com , https://github.com/892768447
@author: Irony
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: AddQWidget
@description:
"""
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QWidget, QHBoxLayout, QLabel, QVBoxLayout,\
try:
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QWidget, QHBoxLayout, QLabel, QVBoxLayout, \
QApplication, QGraphicsView, QGraphicsScene
except ImportError:
from PySide2.QtCore import Qt
from PySide2.QtWidgets import QWidget, QHBoxLayout, QLabel, QVBoxLayout, \
QApplication, QGraphicsView, QGraphicsScene
__Author__ = "By: Irony.\"[讽刺]\nQQ: 892768447\nEmail: 892768447@qq.com"
__Copyright__ = "Copyright (c) 2017 Irony.\"[讽刺]"
__Version__ = "Version 1.0"
class ToolTipItem(QWidget):

View file

@ -4,21 +4,22 @@
"""
Created on 2020/11/12
@author: Irony
@site: https://github.com/892768447
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: ImageView
@description: 图片查看控件支持移动放大缩小
"""
__Author__ = 'Irony'
__Copyright__ = 'Copyright (c) 2020 Irony'
__Version__ = 1.0
import os
from PyQt5.QtCore import QPointF, Qt, QRectF, QSizeF
from PyQt5.QtGui import QPainter, QColor, QImage, QPixmap
from PyQt5.QtWidgets import QGraphicsView, QGraphicsPixmapItem, QGraphicsScene
try:
from PyQt5.QtCore import QPointF, Qt, QRectF, QSizeF
from PyQt5.QtGui import QPainter, QColor, QImage, QPixmap
from PyQt5.QtWidgets import QApplication, QGraphicsView, QGraphicsPixmapItem, QGraphicsScene
except ImportError:
from PySide2.QtCore import QPointF, Qt, QRectF, QSizeF
from PySide2.QtGui import QPainter, QColor, QImage, QPixmap
from PySide2.QtWidgets import QApplication, QGraphicsView, QGraphicsPixmapItem, QGraphicsScene
class ImageView(QGraphicsView):
@ -141,7 +142,6 @@ if __name__ == '__main__':
import cgitb
cgitb.enable(format='text')
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
w = ImageView(image='Data/bg.jpg', background=Qt.black)

View file

@ -3,8 +3,8 @@
"""
Created on 2017年12月17日
@author: Irony."[讽刺]
@site: https://pyqt5.com , https://github.com/892768447
@author: Irony
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: WorldMap
@description:
@ -12,19 +12,19 @@ Created on 2017年12月17日
import json
import math
from PyQt5.QtCore import Qt, QPointF, QRectF
from PyQt5.QtGui import QColor, QPainter, QPolygonF, QPen, QBrush
from PyQt5.QtOpenGL import QGLFormat
from PyQt5.QtWidgets import QGraphicsView, QGraphicsScene, QGraphicsPolygonItem
__Author__ = "By: Irony.\"[讽刺]\nQQ: 892768447\nEmail: 892768447@qq.com"
__Copyright__ = "Copyright (c) 2017 Irony.\"[讽刺]"
__Version__ = "Version 1.0"
try:
from PyQt5.QtCore import Qt, QPointF, QRectF
from PyQt5.QtGui import QColor, QPainter, QPolygonF, QPen, QBrush
from PyQt5.QtOpenGL import QGLFormat
from PyQt5.QtWidgets import QApplication, QGraphicsView, QGraphicsScene, QGraphicsPolygonItem
except ImportError:
from PySide2.QtCore import Qt, QPointF, QRectF
from PySide2.QtGui import QColor, QPainter, QPolygonF, QPen, QBrush
from PySide2.QtOpenGL import QGLFormat
from PySide2.QtWidgets import QApplication, QGraphicsView, QGraphicsScene, QGraphicsPolygonItem
class GraphicsView(QGraphicsView):
# 背景区域颜色
backgroundColor = QColor(31, 31, 47)
# 边框颜色
@ -94,8 +94,8 @@ class GraphicsView(QGraphicsView):
AnchorUnderMouse 鼠标当前位置被用作锚点
'''
self.setTransformationAnchor(self.AnchorUnderMouse)
# if QGLFormat.hasOpenGL(): # 如果开启了OpenGL则使用OpenGL Widget
# self.setViewport(QGLWidget(QGLFormat(QGL.SampleBuffers)))
# if QGLFormat.hasOpenGL(): # 如果开启了OpenGL则使用OpenGL Widget
# self.setViewport(QGLWidget(QGLFormat(QGL.SampleBuffers)))
'''
#参考 http://doc.qt.io/qt-5/qgraphicsview.html#ViewportUpdateMode-enum
FullViewportUpdate 当场景的任何可见部分改变或重新显示时QGraphicsView将更新整个视口 当QGraphicsView花费更多的时间来计算绘制的内容比如重复更新很多小项目这种方法是最快的 这是不支持部分更新如QGLWidget的视口以及需要禁用滚动优化的视口的首选更新模式
@ -157,7 +157,7 @@ class GraphicsView(QGraphicsView):
if __name__ == "__main__":
import sys
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
print("OpenGL Status:", QGLFormat.hasOpenGL())
view = GraphicsView()

View file

@ -1,34 +1,28 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
"""
Created on 2018年2月4日
@author: Irony."[讽刺]
@site: https://pyqt5.com , https://github.com/892768447
@author: Irony
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: TencentMovieHotPlay
@description:
'''
"""
import os
import sys
import webbrowser
from PyQt5.QtCore import QSize, Qt, QUrl, QTimer, pyqtSignal
from PyQt5.QtGui import QPainter, QFont, QLinearGradient, QGradient, QColor,\
from PyQt5.QtGui import QPainter, QFont, QLinearGradient, QGradient, QColor, \
QBrush, QPaintEvent, QPixmap
from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest
from PyQt5.QtSvg import QSvgWidget
from PyQt5.QtWidgets import QWidget, QApplication, QVBoxLayout, QLabel,\
QHBoxLayout, QSpacerItem, QSizePolicy, QScrollArea, QGridLayout,\
from PyQt5.QtWidgets import QWidget, QApplication, QVBoxLayout, QLabel, \
QHBoxLayout, QSpacerItem, QSizePolicy, QScrollArea, QGridLayout, \
QAbstractSlider
from lxml.etree import HTML # @UnresolvedImport
__Author__ = "By: Irony.\"[讽刺]\nQQ: 892768447\nEmail: 892768447@qq.com"
__Copyright__ = "Copyright (c) 2018 Irony.\"[讽刺]"
__Version__ = "Version 1.0"
# offset=0,30,60,90
Url = "http://v.qq.com/x/list/movie?pay=-1&offset={0}"
@ -166,7 +160,8 @@ class ItemWidget(QWidget):
def setCover(self, path):
self.clabel.setCoverPath(path)
self.clabel.setPixmap(QPixmap(path))
# self.clabel.setText('<img src="{0}"/>'.format(os.path.abspath(path)))
# self.clabel.setText('<img src="{0}"/>'.format(os.path.abspath(path)))
def sizeHint(self):
# 每个item控件的大小
@ -186,7 +181,6 @@ class ItemWidget(QWidget):
class GridWidget(QWidget):
Page = 0
loadStarted = pyqtSignal(bool)
@ -279,7 +273,8 @@ class GridWidget(QWidget):
if os.path.isfile(path):
cover_path = path
iwidget = ItemWidget(cover_path, figure_info, figure_title,
figure_score, figure_desc, figure_count, video_url, cover_url, path, self)
figure_score, figure_desc, figure_count, video_url, cover_url, path,
self)
self._layout.addWidget(iwidget, row_count + row, col)

View file

@ -3,19 +3,21 @@
"""
Created on 2018年1月20日
@author: Irony."[讽刺]
@site: https://pyqt5.com , https://github.com/892768447
@author: Irony
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: CircleImage
@description: 圆形图片
"""
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap, QPainter, QPainterPath
from PyQt5.QtWidgets import QLabel, QWidget, QHBoxLayout
__Author__ = "By: Irony.\"[讽刺]\nQQ: 892768447\nEmail: 892768447@qq.com"
__Copyright__ = "Copyright (c) 2018 Irony.\"[讽刺]"
__Version__ = "Version 1.0"
try:
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap, QPainter, QPainterPath
from PyQt5.QtWidgets import QLabel, QWidget, QHBoxLayout, QApplication
except ImportError:
from PySide2.QtCore import Qt
from PySide2.QtGui import QPixmap, QPainter, QPainterPath
from PySide2.QtWidgets import QLabel, QWidget, QHBoxLayout, QApplication
class Label(QLabel):
@ -67,7 +69,6 @@ class Window(QWidget):
if __name__ == "__main__":
import sys
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
w = Window()

View file

@ -4,22 +4,22 @@
"""
Created on 2018年11月19日
@author: Irony
@site: https://pyqt5.com , https://github.com/892768447
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file:
@description:
"""
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap, QPainter, QImage
from PyQt5.QtWidgets import QWidget, QLabel, QPushButton,\
QVBoxLayout, QHBoxLayout, QSpacerItem, QSizePolicy
__Author__ = """By: Irony
QQ: 892768447
Email: 892768447@qq.com"""
__Copyright__ = "Copyright (c) 2018 Irony"
__Version__ = "Version 1.0"
try:
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap, QPainter, QImage
from PyQt5.QtWidgets import QWidget, QLabel, QPushButton, \
QVBoxLayout, QHBoxLayout, QSpacerItem, QSizePolicy, QApplication
except ImportError:
from PySide2.QtCore import Qt
from PySide2.QtGui import QPixmap, QPainter, QImage
from PySide2.QtWidgets import QWidget, QLabel, QPushButton, \
QVBoxLayout, QHBoxLayout, QSpacerItem, QSizePolicy, QApplication
class Window(QWidget):
@ -73,12 +73,12 @@ class Window(QWidget):
self.srcImage = image # 替换
self.imageLabel.setPixmap(QPixmap.fromImage(self.srcImage))
# # 下面这个旋转方法针对90度的倍数,否则图片会变大
# trans = QTransform()
# trans.rotate(90)
# self.srcImage = self.srcImage.transformed(
# trans, Qt.SmoothTransformation)
# self.imageLabel.setPixmap(QPixmap.fromImage(self.srcImage))
# # 下面这个旋转方法针对90度的倍数,否则图片会变大
# trans = QTransform()
# trans.rotate(90)
# self.srcImage = self.srcImage.transformed(
# trans, Qt.SmoothTransformation)
# self.imageLabel.setPixmap(QPixmap.fromImage(self.srcImage))
def doAnticlockwise(self):
# 逆时针45度
@ -96,6 +96,7 @@ class Window(QWidget):
self.srcImage = image # 替换
self.imageLabel.setPixmap(QPixmap.fromImage(self.srcImage))
# # 下面这个旋转方法针对90度的倍数,否则图片会变大
# trans = QTransform()
# trans.rotate(90)
@ -106,7 +107,7 @@ class Window(QWidget):
if __name__ == '__main__':
import sys
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
w = Window()
w.show()

View file

@ -4,20 +4,18 @@
"""
Created on 2018年10月18日
@author: Irony
@site: https://pyqt5.com , https://github.com/892768447
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: ImageSlipped
@description:
"""
from PyQt5.QtGui import QPixmap, QPainter
from PyQt5.QtWidgets import QWidget
__Author__ = """By: Irony
QQ: 892768447
Email: 892768447@qq.com"""
__Copyright__ = "Copyright (c) 2018 Irony"
__Version__ = "Version 1.0"
try:
from PyQt5.QtGui import QPixmap, QPainter
from PyQt5.QtWidgets import QWidget, QApplication
except ImportError:
from PySide2.QtGui import QPixmap, QPainter
from PySide2.QtWidgets import QWidget, QApplication
class SlippedImgWidget(QWidget):
@ -73,7 +71,7 @@ class SlippedImgWidget(QWidget):
if __name__ == '__main__':
import sys
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
w = SlippedImgWidget('Data/bg1.jpg', 'Data/fg1.png')
w.show()

View file

@ -4,22 +4,19 @@
"""
Created on 2018年10月25日
@author: Irony
@site: https://pyqt5.com , https://github.com/892768447
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: NinePatch
@description:
"""
from math import fabs
from PyQt5.QtCore import QRect
from PyQt5.QtGui import QImage, QColor, QPainter, qRed, qGreen, qBlue, qAlpha
__Author__ = """By: Irony
QQ: 892768447
Email: 892768447@qq.com"""
__Copyright__ = "Copyright (c) 2018 Irony"
__Version__ = "Version 1.0"
try:
from PyQt5.QtCore import QRect
from PyQt5.QtGui import QImage, QColor, QPainter, qRed, qGreen, qBlue, qAlpha
except ImportError:
from PySide2.QtCore import QRect
from PySide2.QtGui import QImage, QColor, QPainter, qRed, qGreen, qBlue, qAlpha
class _Exception(Exception):
@ -44,7 +41,8 @@ class ExceptionIncorrectWidth(_Exception):
class ExceptionIncorrectWidthAndHeight(_Exception):
def __str__(self):
return "Input incorrect width width and height. Minimum width = :{imgW} . Minimum height = :{imgH}".format(imgW=self.imgW, imgH=self.imgH)
return "Input incorrect width width and height. Minimum width = :{imgW} . Minimum height = :{imgH}".format(
imgW=self.imgW, imgH=self.imgH)
class ExceptionIncorrectHeight(_Exception):
@ -103,7 +101,8 @@ class NinePatch:
for i in range(len(self.ResizeDistancesY)):
resizeHeight += self.ResizeDistancesY[i][1]
if (width < (self.Image.width() - 2 - resizeWidth) and height < (self.Image.height() - 2 - resizeHeight)):
if (width < (self.Image.width() - 2 - resizeWidth) and height < (
self.Image.height() - 2 - resizeHeight)):
raise ExceptionIncorrectWidthAndHeight(
self.Image.width() - 2, self.Image.height() - 2)
@ -123,7 +122,8 @@ class NinePatch:
@classmethod
def GetContentAreaRect(self, width, height):
# print("GetContentAreaRect : width:%d height:%d" % (width, height))
return (QRect(self.ContentArea.x(), self.ContentArea.y(), (width - (self.Image.width() - 2 - self.ContentArea.width())),
return (QRect(self.ContentArea.x(), self.ContentArea.y(),
(width - (self.Image.width() - 2 - self.ContentArea.width())),
(height - (self.Image.height() - 2 - self.ContentArea.height()))))
def DrawScaledPart(self, oldRect, newRect, painter):
@ -189,7 +189,8 @@ class NinePatch:
for i in range(self.Image.width()):
if (self.IsColorBlack(self.Image.pixel(i, j)) and left == 0):
left = i
if (left and self.IsColorBlack(self.Image.pixel(i, j)) and not self.IsColorBlack(self.Image.pixel(i + 1, j))):
if (left and self.IsColorBlack(self.Image.pixel(i, j)) and not self.IsColorBlack(
self.Image.pixel(i + 1, j))):
right = i
left -= 1
# print("ResizeDistancesX.append ", left, " ", right - left)
@ -204,7 +205,8 @@ class NinePatch:
if (self.IsColorBlack(self.Image.pixel(i, j)) and top == 0):
top = j
if (top and self.IsColorBlack(self.Image.pixel(i, j)) and not self.IsColorBlack(self.Image.pixel(i, j + 1))):
if (top and self.IsColorBlack(self.Image.pixel(i, j)) and not self.IsColorBlack(
self.Image.pixel(i, j + 1))):
bot = j
top -= 1
# print("ResizeDistancesY.append ", top, " ", bot - top)
@ -243,8 +245,8 @@ class NinePatch:
lostY = 0.0
x1 = 0 # for image parts X
y1 = 0 # for image parts Y
# widthResize # width for image parts
# heightResize # height for image parts
# widthResize # width for image parts
# heightResize # height for image parts
resizeX = 0
resizeY = 0
offsetX = 0
@ -310,7 +312,8 @@ class NinePatch:
offsetY = 0
for i in range(len(self.ResizeDistancesY)):
self.DrawConstPart(QRect(x1 + 1, y1 + 1, widthResize, self.ResizeDistancesY[i][0] - y1),
QRect(x1 + offsetX, y1 + offsetY, widthResize, self.ResizeDistancesY[i][0] - y1), painter)
QRect(x1 + offsetX, y1 + offsetY, widthResize,
self.ResizeDistancesY[i][0] - y1), painter)
y1 = self.ResizeDistancesY[i][0]
resizeY = round(float(self.ResizeDistancesY[i][1]) * factorY)
lostY += resizeY - (float(self.ResizeDistancesY[i][1]) * factorY)
@ -334,7 +337,8 @@ class NinePatch:
offsetX = 0
for i in range(len(self.ResizeDistancesX)):
self.DrawConstPart(QRect(x1 + 1, y1 + 1, self.ResizeDistancesX[i][0] - x1, heightResize),
QRect(x1 + offsetX, y1 + offsetY, self.ResizeDistancesX[i][0] - x1, heightResize), painter)
QRect(x1 + offsetX, y1 + offsetY, self.ResizeDistancesX[i][0] - x1,
heightResize), painter)
x1 = self.ResizeDistancesX[i][0]
resizeX = round(float(self.ResizeDistancesX[i][1]) * factorX)
lostX += resizeX - (float(self.ResizeDistancesX[i][1]) * factorX)

View file

@ -5,9 +5,8 @@ import os
import shutil
import PyQt5
from PyQt5.QtCore import PYQT_CONFIGURATION
import sipconfig
from PyQt5.QtCore import PYQT_CONFIGURATION
# 模块名
moduleName = 'QtNinePatch'
@ -42,7 +41,6 @@ os.makedirs('build', exist_ok=True)
print(sip_cmd)
os.system(sip_cmd)
# Create the Makefile.
makefile = sipconfig.SIPModuleMakefile(
config, build_file, dir='build'

View file

@ -4,22 +4,19 @@
"""
Created on 2018年10月25日
@author: Irony
@site: https://pyqt5.com , https://github.com/892768447
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: QtNinePatch
@description:
"""
from math import floor
from PyQt5.QtCore import Qt, QRect
from PyQt5.QtGui import qAlpha, QPixmap, QPainter
__Author__ = """By: Irony
QQ: 892768447
Email: 892768447@qq.com"""
__Copyright__ = "Copyright (c) 2018 Irony"
__Version__ = "Version 1.0"
try:
from PyQt5.QtCore import Qt, QRect
from PyQt5.QtGui import qAlpha, QPixmap, QPainter
except ImportError:
from PySide2.QtCore import Qt, QRect
from PySide2.QtGui import qAlpha, QPixmap, QPainter
class Part:

View file

@ -6,7 +6,10 @@
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore
try:
from PyQt5 import QtCore
except ImportError:
from PySide2 import QtCore
qt_resource_data = b"\
\x00\x00\x19\xf0\
@ -462,10 +465,13 @@ 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()

View file

@ -1,18 +1,14 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
"""
Created on 2017年12月23日
@author: Irony."[讽刺]
@site: https://pyqt5.com , https://github.com/892768447
@author: Irony
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: xpmres
@description:
'''
__Author__ = "By: Irony.\"[讽刺]\nQQ: 892768447\nEmail: 892768447@qq.com"
__Copyright__ = "Copyright (c) 2017 Irony.\"[讽刺]"
__Version__ = "Version 1.0"
"""
# 这里把转换的xpm数组直接放到py文件中当做一个变量

View file

@ -4,23 +4,20 @@
"""
Created on 2018年10月25日
@author: Irony
@site: https://pyqt5.com , https://github.com/892768447
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: NinePatch
@description:
"""
__Author__ = """By: Irony
QQ: 892768447
Email: 892768447@qq.com"""
__Copyright__ = "Copyright (c) 2018 Irony"
__Version__ = "Version 1.0"
import sys
from PyQt5.QtGui import QImage, QPainter
from PyQt5.QtWidgets import QApplication, QLabel, QWidget
try:
from PyQt5.QtGui import QPainter
from PyQt5.QtWidgets import QApplication, QWidget
except ImportError:
from PySide2.QtGui import QPainter
from PySide2.QtWidgets import QApplication, QWidget
from Lib.NinePatch import NinePatch
@ -29,7 +26,7 @@ class Label(QWidget):
def __init__(self, *args, **kwargs):
super(Label, self).__init__(*args, **kwargs)
#.9 格式的图片
# .9 格式的图片
self.image = NinePatch('Data/skin_aio_friend_bubble_pressed.9.png')
def paintEvent(self, event):

View file

@ -4,22 +4,15 @@
"""
Created on 2018年10月25日
@author: Irony
@site: https://pyqt5.com , https://github.com/892768447
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: testQtNinePatch
@description:
"""
__Author__ = """By: Irony
QQ: 892768447
Email: 892768447@qq.com"""
__Copyright__ = "Copyright (c) 2018 Irony"
__Version__ = "Version 1.0"
import sys
from ctypes import CDLL
from PyQt5.QtGui import QImage
from PyQt5.QtWidgets import QApplication, QLabel
@ -32,7 +25,7 @@ class Label(QLabel):
def __init__(self, *args, **kwargs):
super(Label, self).__init__(*args, **kwargs)
#.9 格式的图片
# .9 格式的图片
self.image = QImage('Data/skin_aio_friend_bubble_pressed.9.png')
def showEvent(self, event):

View file

@ -4,23 +4,20 @@
"""
Created on 2018年10月25日
@author: Irony
@site: https://pyqt5.com , https://github.com/892768447
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: QtNinePatch2
@description:
"""
__Author__ = """By: Irony
QQ: 892768447
Email: 892768447@qq.com"""
__Copyright__ = "Copyright (c) 2018 Irony"
__Version__ = "Version 1.0"
import sys
from PyQt5.QtGui import QImage
from PyQt5.QtWidgets import QApplication, QLabel
try:
from PyQt5.QtGui import QImage
from PyQt5.QtWidgets import QApplication, QLabel
except ImportError:
from PySide2.QtGui import QImage
from PySide2.QtWidgets import QApplication, QLabel
from Lib import QtNinePatch2
@ -29,7 +26,7 @@ class Label(QLabel):
def __init__(self, *args, **kwargs):
super(Label, self).__init__(*args, **kwargs)
#.9 格式的图片
# .9 格式的图片
self.image = QImage('Data/skin_aio_friend_bubble_pressed.9.png')
def showEvent(self, event):

View file

@ -1,29 +1,28 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
"""
Created on 2017年12月23日
@author: Irony."[讽刺]
@site: https://pyqt5.com , https://github.com/892768447
@author: Irony
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: ShowImage
@description:
'''
"""
import sys
from PyQt5.QtCore import QResource
from PyQt5.QtGui import QPixmap, QMovie
from PyQt5.QtWidgets import QWidget, QApplication, QHBoxLayout, QLabel
try:
from PyQt5.QtCore import QResource
from PyQt5.QtGui import QPixmap, QMovie
from PyQt5.QtWidgets import QWidget, QApplication, QHBoxLayout, QLabel
except ImportError:
from PySide2.QtCore import QResource
from PySide2.QtGui import QPixmap, QMovie
from PySide2.QtWidgets import QWidget, QApplication, QHBoxLayout, QLabel
from Lib import res_rc # @UnresolvedImport @UnusedImport
from Lib.xpmres import image_head # @UnresolvedImport
__Author__ = "By: Irony.\"[讽刺]\nQQ: 892768447\nEmail: 892768447@qq.com"
__Copyright__ = "Copyright (c) 2017 Irony.\"[讽刺]"
__Version__ = "Version 1.0"
class ImageView(QWidget):
def __init__(self, *args, **kwargs):

View file

@ -1,22 +1,26 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from PyQt5.QtCore import QSize
from PyQt5.QtGui import QStandardItemModel, QStandardItem
from PyQt5.QtWidgets import QListView, QWidget, QHBoxLayout, QLineEdit,\
QPushButton
# Created on 2018年8月4日
# author: Irony
# site: https://pyqt5.com , https://github.com/892768447
# email: 892768447@qq.com
# file: QListView.显示自定义Widget
# description:
__Author__ = """By: Irony
QQ: 892768447
Email: 892768447@qq.com"""
__Copyright__ = 'Copyright (c) 2018 Irony'
__Version__ = 1.0
"""
Created on 2018年8月4日
@author: Irony
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: QListView.显示自定义Widget
@description:
"""
try:
from PyQt5.QtCore import QSize
from PyQt5.QtGui import QStandardItemModel, QStandardItem
from PyQt5.QtWidgets import QListView, QWidget, QHBoxLayout, QLineEdit, \
QPushButton, QApplication
except ImportError:
from PySide2.QtCore import QSize
from PySide2.QtGui import QStandardItemModel, QStandardItem
from PySide2.QtWidgets import QListView, QWidget, QHBoxLayout, QLineEdit, \
QPushButton, QApplication
class CustomWidget(QWidget):
@ -56,7 +60,7 @@ class ListView(QListView):
if __name__ == '__main__':
import sys
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
w = ListView()
w.show()

View file

@ -1,26 +1,29 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from random import choice, randint
"""
Created on 2018年8月4日
@author: Irony
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: QListView.显示自定义Widget并排序
@description:
"""
import string
from random import choice, randint
from time import time
from PyQt5.QtCore import QSortFilterProxyModel, Qt, QSize
from PyQt5.QtGui import QStandardItem, QStandardItemModel
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QPushButton, QListView,\
QHBoxLayout, QLineEdit
# Created on 2018年8月4日
# author: Irony
# site: https://pyqt5.com , https://github.com/892768447
# email: 892768447@qq.com
# file: QListView.显示自定义Widget并排序
# description:
__Author__ = """By: Irony
QQ: 892768447
Email: 892768447@qq.com"""
__Copyright__ = 'Copyright (c) 2018 Irony'
__Version__ = 1.0
try:
from PyQt5.QtCore import QSortFilterProxyModel, Qt, QSize
from PyQt5.QtGui import QStandardItem, QStandardItemModel
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QPushButton, QListView, \
QHBoxLayout, QLineEdit, QApplication
except ImportError:
from PySide2.QtCore import QSortFilterProxyModel, Qt, QSize
from PySide2.QtGui import QStandardItem, QStandardItemModel
from PySide2.QtWidgets import QWidget, QVBoxLayout, QPushButton, QListView, \
QHBoxLayout, QLineEdit, QApplication
def randomChar(y):
@ -55,11 +58,11 @@ class SortFilterProxyModel(QSortFilterProxyModel):
leftData = leftData.split('-')[-1]
rightData = rightData.split('-')[-1]
return leftData < rightData
# elif self.sortOrder() == Qt.AscendingOrder:
# #按照名字升序排序
# leftData = leftData.split('-')[0]
# rightData = rightData.split('-')[0]
# return leftData < rightData
# elif self.sortOrder() == Qt.AscendingOrder:
# #按照名字升序排序
# leftData = leftData.split('-')[0]
# rightData = rightData.split('-')[0]
# return leftData < rightData
return super(SortFilterProxyModel, self).lessThan(source_left, source_right)
@ -89,7 +92,7 @@ class Window(QWidget):
times = time() + randint(0, 30) # 当前时间随机+
value = '{}-{}'.format(name, times) # 内容用-分开
item = QStandardItem(value)
# item.setData(value, Qt.UserRole + 2)
# item.setData(value, Qt.UserRole + 2)
self.dmodel.appendRow(item)
# 索引
index = self.fmodel.mapFromSource(item.index())
@ -109,7 +112,7 @@ class Window(QWidget):
if __name__ == '__main__':
import sys
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
w = Window()
w.show()

View file

@ -4,16 +4,21 @@
"""
Created on 2021/4/15
@author: Irony
@site: https://github.com/PyQt5
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: ImageView
@description:
"""
import os
from PyQt5.QtCore import QPointF, Qt, QRectF, QSizeF
from PyQt5.QtGui import QStandardItem, QStandardItemModel, QPainter, QColor, QImage, QPixmap
from PyQt5.QtWidgets import QListView, QGraphicsView, QGraphicsPixmapItem, QGraphicsScene
try:
from PyQt5.QtCore import QPointF, Qt, QRectF, QSizeF
from PyQt5.QtGui import QStandardItem, QStandardItemModel, QPainter, QColor, QImage, QPixmap
from PyQt5.QtWidgets import QApplication, QListView, QGraphicsView, QGraphicsPixmapItem, QGraphicsScene
except ImportError:
from PySide2.QtCore import QPointF, Qt, QRectF, QSizeF
from PySide2.QtGui import QStandardItem, QStandardItemModel, QPainter, QColor, QImage, QPixmap
from PySide2.QtWidgets import QApplication, QListView, QGraphicsView, QGraphicsPixmapItem, QGraphicsScene
ScrollPixel = 40
@ -223,7 +228,6 @@ if __name__ == '__main__':
import cgitb
cgitb.enable(format='text')
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
w = ImageView()

View file

@ -4,23 +4,21 @@
"""
Created on 2018年12月27日
@author: Irony
@site: https://pyqt5.com , https://github.com/892768447
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: QListView.SortItemByRole
@description:
"""
from random import choice
from PyQt5.QtCore import QSortFilterProxyModel, Qt
from PyQt5.QtGui import QStandardItem, QStandardItemModel
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QListView, QPushButton
__Author__ = """By: Irony
QQ: 892768447
Email: 892768447@qq.com"""
__Copyright__ = "Copyright (c) 2018 Irony"
__Version__ = "Version 1.0"
try:
from PyQt5.QtCore import QSortFilterProxyModel, Qt
from PyQt5.QtGui import QStandardItem, QStandardItemModel
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QListView, QPushButton
except ImportError:
from PySide2.QtCore import QSortFilterProxyModel, Qt
from PySide2.QtGui import QStandardItem, QStandardItemModel
from PySide2.QtWidgets import QApplication, QWidget, QVBoxLayout, QListView, QPushButton
class SortFilterProxyModel(QSortFilterProxyModel):
@ -141,8 +139,9 @@ class Window(QWidget):
if __name__ == '__main__':
import sys
import cgitb
cgitb.enable(1, None, 5, '')
from PyQt5.QtWidgets import QApplication
cgitb.enable(format='text')
app = QApplication(sys.argv)
w = Window()
w.show()

View file

@ -4,25 +4,23 @@
"""
Created on 2018年11月4日
@author: Irony
@site: https://pyqt5.com , https://github.com/892768447
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: 删除Item
@description:
"""
from PyQt5.QtCore import QSize, pyqtSignal
from PyQt5.QtWidgets import QWidget, QHBoxLayout, QLineEdit, QPushButton,\
QListWidgetItem, QVBoxLayout, QListWidget
__Author__ = """By: Irony
QQ: 892768447
Email: 892768447@qq.com"""
__Copyright__ = 'Copyright (c) 2018 Irony'
__Version__ = 1.0
try:
from PyQt5.QtCore import QSize, pyqtSignal
from PyQt5.QtWidgets import QWidget, QHBoxLayout, QLineEdit, QPushButton, \
QListWidgetItem, QVBoxLayout, QListWidget, QApplication
except ImportError:
from PySide2.QtCore import QSize, Signal as pyqtSignal
from PySide2.QtWidgets import QWidget, QHBoxLayout, QLineEdit, QPushButton, \
QListWidgetItem, QVBoxLayout, QListWidget, QApplication
class ItemWidget(QWidget):
itemDeleted = pyqtSignal(QListWidgetItem)
def __init__(self, text, item, *args, **kwargs):
@ -91,8 +89,9 @@ class Window(QWidget):
if __name__ == '__main__':
import sys
import cgitb
cgitb.enable(1, None, 5, '')
from PyQt5.QtWidgets import QApplication
cgitb.enable(format='text')
app = QApplication(sys.argv)
w = Window()
w.show()

View file

@ -4,21 +4,20 @@
"""
Created on 2018年9月14日
@author: Irony
@site: https://pyqt5.com , https://github.com/892768447
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: DragListWidget
@description:
"""
from PyQt5.QtCore import Qt, QSize, QRect, QPoint
from PyQt5.QtGui import QColor, QPixmap, QDrag, QPainter, QCursor
from PyQt5.QtWidgets import QListWidget, QListWidgetItem, QLabel, QRubberBand
__Author__ = """By: Irony
QQ: 892768447
Email: 892768447@qq.com"""
__Copyright__ = "Copyright (c) 2018 Irony"
__Version__ = "Version 1.0"
try:
from PyQt5.QtCore import Qt, QSize, QRect, QPoint
from PyQt5.QtGui import QColor, QPixmap, QDrag, QPainter, QCursor
from PyQt5.QtWidgets import QListWidget, QListWidgetItem, QLabel, QRubberBand, QApplication
except ImportError:
from PySide2.QtCore import Qt, QSize, QRect, QPoint
from PySide2.QtGui import QColor, QPixmap, QDrag, QPainter, QCursor
from PySide2.QtWidgets import QListWidget, QListWidgetItem, QLabel, QRubberBand, QApplication
class DropListWidget(QListWidget):
@ -162,7 +161,7 @@ class DragListWidget(QListWidget):
if __name__ == '__main__':
import sys
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
app.setStyleSheet("""QListWidget {
outline: 0px;

View file

@ -4,22 +4,17 @@
"""
Created on 2019年5月27日
@author: Irony
@site: https://pyqt5.com https://github.com/PyQt5
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: FoldWidget
@description: 自定义item折叠控件仿QTreeWidget
"""
from PyQt5.QtCore import QSize
from PyQt5.QtWidgets import QWidget, QPushButton, QFormLayout,\
from PyQt5.QtWidgets import QWidget, QPushButton, QFormLayout, \
QLineEdit, QListWidget, QListWidgetItem, QCheckBox
__Author__ = "Irony"
__Copyright__ = "Copyright (c) 2019"
__Version__ = "Version 1.0"
class CustomWidget(QWidget):
def __init__(self, item, *args, **kwargs):
@ -79,8 +74,10 @@ class Window(QListWidget):
if __name__ == '__main__':
import sys
import cgitb
cgitb.enable(1, None, 5, '')
cgitb.enable(format='text')
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
# 通过qss改变按钮的高度
app.setStyleSheet('#testBtn{min-height:40px;}')

View file

@ -1,34 +1,28 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
"""
Created on 2018年2月4日
@author: Irony."[讽刺]
@site: https://pyqt5.com , https://github.com/892768447
@author: Irony
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: TencentMovieHotPlay_ListWidget
@description:
'''
"""
import os
import sys
import webbrowser
from PyQt5.QtCore import QSize, Qt, QUrl, QTimer
from PyQt5.QtGui import QPainter, QFont, QLinearGradient, QGradient, QColor,\
from PyQt5.QtGui import QPainter, QFont, QLinearGradient, QGradient, QColor, \
QBrush, QPaintEvent, QPixmap
from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest
from PyQt5.QtSvg import QSvgWidget
from PyQt5.QtWidgets import QWidget, QApplication, QVBoxLayout, QLabel,\
QHBoxLayout, QSpacerItem, QSizePolicy, QAbstractSlider,\
from PyQt5.QtWidgets import QWidget, QApplication, QVBoxLayout, QLabel, \
QHBoxLayout, QSpacerItem, QSizePolicy, QAbstractSlider, \
QListWidget, QListWidgetItem
from lxml.etree import HTML # @UnresolvedImport
__Author__ = "By: Irony.\"[讽刺]\nQQ: 892768447\nEmail: 892768447@qq.com"
__Copyright__ = "Copyright (c) 2018 Irony.\"[讽刺]"
__Version__ = "Version 1.0"
# offset=0,30,60,90
Url = "http://v.qq.com/x/list/movie?pay=-1&offset={0}"
@ -78,8 +72,8 @@ class CoverLabel(QLabel):
def __init__(self, cover_path, cover_title, video_url, *args, **kwargs):
super(CoverLabel, self).__init__(*args, **kwargs)
# super(CoverLabel, self).__init__(
# '<html><head/><body><img src="{0}"/></body></html>'.format(os.path.abspath(cover_path)), *args, **kwargs)
# super(CoverLabel, self).__init__(
# '<html><head/><body><img src="{0}"/></body></html>'.format(os.path.abspath(cover_path)), *args, **kwargs)
self.setCursor(Qt.PointingHandCursor)
self.setScaledContents(True)
self.setMinimumSize(220, 308)
@ -131,7 +125,8 @@ class CoverLabel(QLabel):
class ItemWidget(QWidget):
def __init__(self, cover_path, figure_info, figure_title,
figure_score, figure_desc, figure_count, video_url, cover_url, img_path, manager, *args, **kwargs):
figure_score, figure_desc, figure_count, video_url, cover_url, img_path, manager, *args,
**kwargs):
super(ItemWidget, self).__init__(*args, **kwargs)
self.setMaximumSize(220, 420)
self.setMaximumSize(220, 420)
@ -169,7 +164,8 @@ class ItemWidget(QWidget):
def setCover(self, path):
self.clabel.setCoverPath(path)
self.clabel.setPixmap(QPixmap(path))
# self.clabel.setText('<img src="{0}"/>'.format(os.path.abspath(path)))
# self.clabel.setText('<img src="{0}"/>'.format(os.path.abspath(path)))
def sizeHint(self):
# 每个item控件的大小
@ -189,7 +185,6 @@ class ItemWidget(QWidget):
class Window(QListWidget):
Page = 0
def __init__(self, *args, **kwargs):
@ -278,7 +273,8 @@ class Window(QListWidget):
if os.path.isfile(path):
cover_path = path
iwidget = ItemWidget(cover_path, figure_info, figure_title,
figure_score, figure_desc, figure_count, video_url, cover_url, path, self._manager, self)
figure_score, figure_desc, figure_count, video_url, cover_url, path,
self._manager, self)
item = QListWidgetItem(self)
item.setSizeHint(iwidget.sizeHint())
self.setItemWidget(item, iwidget)

View file

@ -4,20 +4,22 @@
"""
Created on 2019年7月3日
@author: Irony
@site: https://pyqt5.com https://github.com/PyQt5
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: QListWidget.SignalsExample
@description:
"""
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QColor
from PyQt5.QtWidgets import QWidget, QHBoxLayout, QListWidget, QPlainTextEdit,\
QListWidgetItem, QAbstractItemView, QListView
__Author__ = "Irony"
__Copyright__ = "Copyright (c) 2019"
__Version__ = "Version 1.0"
try:
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QColor
from PyQt5.QtWidgets import QWidget, QHBoxLayout, QListWidget, QPlainTextEdit, \
QListWidgetItem, QAbstractItemView, QListView, QApplication
except ImportError:
from PySide2.QtCore import Qt
from PySide2.QtGui import QColor
from PySide2.QtWidgets import QWidget, QHBoxLayout, QListWidget, QPlainTextEdit, \
QListWidgetItem, QAbstractItemView, QListView, QApplication
def formatColor(text, color):
@ -118,7 +120,7 @@ class Window(QWidget):
if __name__ == '__main__':
import sys
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
w = Window()
w.show()

View file

@ -4,20 +4,16 @@
"""
Created on 2018年10月24日
@author: Irony
@site: https://github.com/892768447
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: MultiSelect
@description:
"""
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QPushButton, QMenu,\
QAction
__Author__ = """By: Irony
QQ: 892768447
Email: 892768447@qq.com"""
__Copyright__ = "Copyright (c) 2018 Irony"
__Version__ = "Version 1.0"
try:
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QPushButton, QMenu, QAction
except ImportError:
from PySide2.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QPushButton, QMenu, QAction
class Window(QWidget):
@ -70,8 +66,9 @@ class Window(QWidget):
if __name__ == '__main__':
import sys
import cgitb
cgitb.enable(1, None, 5, '')
from PyQt5.QtWidgets import QApplication
cgitb.enable(format='text')
app = QApplication(sys.argv)
w = Window()
w.resize(400, 400)

View file

@ -4,7 +4,7 @@
"""
Created on 2021/4/7
@author: Irony
@site: https://github.com/PyQt5
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: QQMenu
@description:
@ -12,9 +12,14 @@ Created on 2021/4/7
import string
from random import choice, randint
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap, QPainter, QFont, QIcon
from PyQt5.QtWidgets import QLabel, QMenu, QApplication
try:
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap, QPainter, QFont, QIcon
from PyQt5.QtWidgets import QLabel, QMenu, QApplication
except ImportError:
from PySide2.QtCore import Qt
from PySide2.QtGui import QPixmap, QPainter, QFont, QIcon
from PySide2.QtWidgets import QLabel, QMenu, QApplication
Style = """
QMenu {
@ -121,7 +126,7 @@ if __name__ == '__main__':
import sys
import cgitb
cgitb.enable(1, None, 5, '')
cgitb.enable(format='text')
app = QApplication(sys.argv)
app.setStyleSheet(Style)
w = Window()

View file

@ -4,19 +4,17 @@
"""
Created on 2019年7月10日
@author: Irony
@site: https://pyqt5.com https://github.com/892768447
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: ChineseText
@description: 修改消息对话框文字汉化
"""
import sys
from PyQt5.QtWidgets import QApplication, QMessageBox
__Author__ = 'Irony'
__Copyright__ = 'Copyright (c) 2019 Irony'
__Version__ = 1.0
try:
from PyQt5.QtWidgets import QApplication, QMessageBox
except ImportError:
from PySide2.QtWidgets import QApplication, QMessageBox
TextStyle = """
QMessageBox QPushButton[text="OK"] {

View file

@ -4,22 +4,19 @@
"""
Created on 2018年6月22日
@author: Irony
@site: https://pyqt5.com , https://github.com/892768447
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: MessageBox
@description:
"""
from random import randrange
from PyQt5.QtCore import QTimer
from PyQt5.QtWidgets import QMessageBox
__Author__ = """By: Irony
QQ: 892768447
Email: 892768447@qq.com"""
__Copyright__ = "Copyright (c) 2018 Irony"
__Version__ = "Version 1.0"
try:
from PyQt5.QtCore import QTimer
from PyQt5.QtWidgets import QApplication, QMessageBox, QPushButton
except ImportError:
from PySide2.QtCore import QTimer
from PySide2.QtWidgets import QApplication, QMessageBox, QPushButton
class MessageBox(QMessageBox):
@ -53,7 +50,7 @@ class MessageBox(QMessageBox):
if __name__ == '__main__':
import sys
from PyQt5.QtWidgets import QApplication, QPushButton
app = QApplication(sys.argv)
w = QPushButton('点击弹出对话框')
w.resize(200, 200)

View file

@ -1,23 +1,21 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
"""
Created on 2018年1月17日
@author: Irony."[讽刺]
@site: https://pyqt5.com , https://github.com/892768447
@author: Irony
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: CustomBtnIcon
@description:
'''
__Author__ = "By: Irony.\"[讽刺]\nQQ: 892768447\nEmail: 892768447@qq.com"
__Copyright__ = "Copyright (c) 2018 Irony.\"[讽刺]"
__Version__ = "Version 1.0"
"""
import sys
from PyQt5.QtWidgets import QApplication, QMessageBox
try:
from PyQt5.QtWidgets import QApplication, QMessageBox
except ImportError:
from PySide2.QtWidgets import QApplication, QMessageBox
app = QApplication(sys.argv)
app.setStyleSheet('''QDialogButtonBox {

View file

@ -4,7 +4,7 @@
"""
Created on 2021/1/1
@author: Irony
@site: https://pyqt5.com , https://github.com/892768447
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: DWaterProgress
@see https://github.com/linuxdeepin/dtkwidget/blob/master/src/widgets/dwaterprogress.cpp
@ -12,10 +12,18 @@ Created on 2021/1/1
"""
import math
from PyQt5.QtCore import pyqtSlot, QTimer, QSizeF, Qt, QRectF, QPointF, QRect, QPoint, QSize
from PyQt5.QtGui import QImage, QColor, QPainter, QLinearGradient, QGradient, QPainterPath, QPixmap, QBrush, QPen
from PyQt5.QtSvg import QSvgRenderer
from PyQt5.QtWidgets import QProgressBar, QGraphicsDropShadowEffect
try:
from PyQt5.QtCore import pyqtSlot, QTimer, QSizeF, Qt, QRectF, QPointF, QRect, QPoint, QSize
from PyQt5.QtGui import QImage, QColor, QPainter, QLinearGradient, QGradient, QPainterPath, QPixmap, \
QBrush, QPen
from PyQt5.QtSvg import QSvgRenderer
from PyQt5.QtWidgets import QProgressBar, QGraphicsDropShadowEffect
except ImportError:
from PySide2.QtCore import Slot as pyqtSlot, QTimer, QSizeF, Qt, QRectF, QPointF, QRect, QPoint, QSize
from PySide2.QtGui import QImage, QColor, QPainter, QLinearGradient, QGradient, QPainterPath, QPixmap, \
QBrush, QPen
from PySide2.QtSvg import QSvgRenderer
from PySide2.QtWidgets import QProgressBar, QGraphicsDropShadowEffect
WATER_FRONT = """<svg xmlns="http://www.w3.org/2000/svg" width="383" height="115" viewBox="0 0 383 115">
<path fill="#01C4FF" fill-rule="evenodd" d="M383,115 L383,14.1688789 C380.269872,14.0716143 377.092672,13.5814974 373.063461,12.4722672 C368.696509,11.2699114 362.241136,10.1727531 357.649256,10.1227411 C347.007291,10.0071963 342.744795,10.6014761 332.930121,12.0276784 C326.157898,13.0120512 317.51313,12.4953762 311.375303,10.33762 C305.58601,8.30230681 299.587109,8.09191178 293.164466,8.16675723 C284.09108,8.27264456 276.303198,11.8021073 267.219716,11.3406179 C260.695053,11.0091595 256.565913,8.56512814 248.546835,8.86450991 C241.871757,9.11387975 235.569934,13.1896798 228.881972,13.3297132 C219.538394,13.525622 215.498041,10.7384053 208.282229,8.42337018 C201.688974,6.30769299 190.725982,6.45048568 185.454442,8.65549452 C170.142255,15.0597811 162.05946,9.31703167 150.536236,5.36712375 C147.826999,4.43862637 144.672431,3.20971247 141.663406,2.90998579 C135.153716,2.26155522 129.812539,3.9788615 123.613779,5.46231888 C115.747555,7.3451819 106.643181,6.73503633 99.4869089,3.84572629 C96.4124243,2.60474055 93.6255416,0.951587506 90.1882469,0.261077932 C79.652131,-1.85528907 69.7970674,9.59778831 58.8051757,9.35186757 C49.4744806,9.14319709 42.6942497,2.4740197 33.3934986,1.93078665 C20.5224457,1.17888312 19.3845731,15.343297 0,13.8463882 L0,115 L383,115 Z"/>
@ -162,9 +170,11 @@ class DWaterProgress(QProgressBar):
waterPainter.setCompositionMode(QPainter.CompositionMode_SourceOver)
waterPainter.drawImage(int(self.backXOffset), yOffset, self.waterBackImage)
waterPainter.drawImage(int(self.backXOffset) - self.waterBackImage.width(), yOffset, self.waterBackImage)
waterPainter.drawImage(int(self.backXOffset) - self.waterBackImage.width(), yOffset,
self.waterBackImage)
waterPainter.drawImage(int(self.frontXOffset), yOffset, self.waterFrontImage)
waterPainter.drawImage(int(self.frontXOffset) - self.waterFrontImage.width(), yOffset, self.waterFrontImage)
waterPainter.drawImage(int(self.frontXOffset) - self.waterFrontImage.width(), yOffset,
self.waterFrontImage)
# draw pop
if self.value() > 30:

View file

@ -1,28 +1,28 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Created on 2018年4月1日
# author: Irony
# site: https://pyqt5.com , https://github.com/892768447
# email: 892768447@qq.com
# file: WaterRippleProgressBar
# description:
__Author__ = """By: Irony
QQ: 892768447
Email: 892768447@qq.com"""
__Copyright__ = 'Copyright (c) 2018 Irony'
__Version__ = 1.0
"""
Created on 2018年4月1日
@author: Irony
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: WaterRippleProgressBar
@description:
"""
import math
from PyQt5.QtCore import QTimer, Qt, QRectF, QSize
from PyQt5.QtGui import QPainter, QPainterPath, QColor, QFont
from PyQt5.QtWidgets import QProgressBar
try:
from PyQt5.QtCore import QTimer, Qt, QRectF, QSize
from PyQt5.QtGui import QPainter, QPainterPath, QColor, QFont
from PyQt5.QtWidgets import QProgressBar
except ImportError:
from PySide2.QtCore import QTimer, Qt, QRectF, QSize
from PySide2.QtGui import QPainter, QPainterPath, QColor, QFont
from PySide2.QtWidgets import QProgressBar
class WaterRippleProgressBar(QProgressBar):
# 浪高百分比
waterHeight = 1
# 密度

View file

@ -4,27 +4,25 @@
"""
Created on 2018年9月日
@author: Irony
@site: https://pyqt5.com , https://github.com/892768447
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: MetroCircleProgress
@description:
"""
from PyQt5.QtCore import QSequentialAnimationGroup, pyqtProperty,\
QPauseAnimation, QPropertyAnimation, QParallelAnimationGroup,\
QObject, QSize, Qt, pyqtSignal, QRectF
from PyQt5.QtGui import QPainter, QColor
from PyQt5.QtWidgets import QWidget, QVBoxLayout
__Author__ = """By: Irony
QQ: 892768447
Email: 892768447@qq.com"""
__Copyright__ = 'Copyright (c) 2018 Irony'
__Version__ = 1.0
try:
from PyQt5.QtCore import QSequentialAnimationGroup, QPauseAnimation, QPropertyAnimation, \
QParallelAnimationGroup, QObject, QSize, Qt, QRectF, pyqtSignal, pyqtProperty
from PyQt5.QtGui import QPainter, QColor
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout
except ImportError:
from PySide2.QtCore import QSequentialAnimationGroup, QPauseAnimation, QPropertyAnimation, \
QParallelAnimationGroup, QObject, QSize, Qt, QRectF, Signal as pyqtSignal, Property as pyqtProperty
from PySide2.QtGui import QPainter, QColor
from PySide2.QtWidgets import QApplication, QWidget, QVBoxLayout
class CircleItem(QObject):
X = 0 # x坐标
Opacity = 1 # 透明度0~1
valueChanged = pyqtSignal()
@ -52,7 +50,6 @@ def qBound(miv, cv, mxv):
class MetroCircleProgress(QWidget):
Radius = 5 # 半径
Color = QColor(24, 189, 155) # 圆圈颜色
BackgroundColor = QColor(Qt.transparent) # 背景颜色
@ -189,7 +186,7 @@ class Window(QWidget):
if __name__ == '__main__':
import sys
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
w = Window()
w.show()

View file

@ -4,25 +4,23 @@
"""
Created on 2018年9月4日
@author: Irony
@site: https://pyqt5.com , https://github.com/892768447
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: PercentProgressBar
@description:
"""
from PyQt5.QtCore import pyqtProperty, QSize, Qt, QRectF, QTimer
from PyQt5.QtGui import QColor, QPainter, QFont
from PyQt5.QtWidgets import QWidget, QHBoxLayout, QVBoxLayout, QSlider
__Author__ = """By: Irony
QQ: 892768447
Email: 892768447@qq.com"""
__Copyright__ = "Copyright (c) 2018 Irony"
__Version__ = "Version 1.0"
try:
from PyQt5.QtCore import pyqtProperty, QSize, Qt, QRectF, QTimer
from PyQt5.QtGui import QColor, QPainter, QFont
from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QVBoxLayout, QSlider
except ImportError:
from PySide2.QtCore import Property as pyqtProperty, QSize, Qt, QRectF, QTimer
from PySide2.QtGui import QColor, QPainter, QFont
from PySide2.QtWidgets import QApplication, QWidget, QHBoxLayout, QVBoxLayout, QSlider
class PercentProgressBar(QWidget):
MinValue = 0
MaxValue = 100
Value = 0
@ -300,8 +298,10 @@ class Window(QWidget):
self.staticPercentProgressBar.showFreeArea = True
self.staticPercentProgressBar.ShowSmallCircle = True
vlayout.addWidget(self.staticPercentProgressBar)
vlayout.addWidget(QSlider(self, minimum=0, maximum=100, orientation=Qt.Horizontal,
valueChanged=self.staticPercentProgressBar.setValue))
self.slider = QSlider(self, minimum=0, maximum=100, orientation=Qt.Horizontal)
self.slider.valueChanged.connect(self.staticPercentProgressBar.setValue)
vlayout.addWidget(self.slider)
self._timer.start(100)
@ -316,8 +316,9 @@ class Window(QWidget):
if __name__ == '__main__':
import sys
import cgitb
sys.excepthook = cgitb.Hook(1, None, 5, sys.stderr, 'text')
from PyQt5.QtWidgets import QApplication
cgitb.enable(format='text')
app = QApplication(sys.argv)
w = Window()
w.show()

View file

@ -4,25 +4,23 @@
"""
Created on 2018年9月4日
@author: Irony
@site: https://pyqt5.com , https://github.com/892768447
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: 界面美化.圆形进度条.CircleProgressBar
@description:
"""
from PyQt5.QtCore import QSize, pyqtProperty, QTimer, Qt
from PyQt5.QtGui import QColor, QPainter
from PyQt5.QtWidgets import QWidget, QHBoxLayout
__Author__ = """By: Irony
QQ: 892768447
Email: 892768447@qq.com"""
__Copyright__ = "Copyright (c) 2018 Irony"
__Version__ = "Version 1.0"
try:
from PyQt5.QtCore import QSize, pyqtProperty, QTimer, Qt
from PyQt5.QtGui import QColor, QPainter
from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout
except ImportError:
from PySide2.QtCore import QSize, Property as pyqtProperty, QTimer, Qt
from PySide2.QtGui import QColor, QPainter
from PySide2.QtWidgets import QApplication, QWidget, QHBoxLayout
class CircleProgressBar(QWidget):
Color = QColor(24, 189, 155) # 圆圈颜色
Clockwise = True # 顺时针还是逆时针
Delta = 36
@ -105,7 +103,7 @@ class Window(QWidget):
if __name__ == '__main__':
import sys
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
w = Window()
w.show()

View file

@ -1,26 +1,26 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
"""
Created on 2018年1月30日
@author: Irony."[讽刺]
@site: https://pyqt5.com , https://github.com/892768447
@author: Irony
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: SimpleStyle
@description:
'''
from random import randint
"""
import sys
from random import randint
from PyQt5.QtCore import QTimer
from PyQt5.QtWidgets import QWidget, QApplication, QVBoxLayout, QProgressBar
try:
from PyQt5.QtCore import QTimer
from PyQt5.QtWidgets import QWidget, QApplication, QVBoxLayout, QProgressBar
except ImportError:
from PySide2.QtCore import QTimer
from PySide2.QtWidgets import QWidget, QApplication, QVBoxLayout, QProgressBar
__Author__ = "By: Irony.\"[讽刺]\nQQ: 892768447\nEmail: 892768447@qq.com"
__Copyright__ = "Copyright (c) 2018 Irony.\"[讽刺]"
__Version__ = "Version 1.0"
StyleSheet = '''
StyleSheet = """
/*设置红色进度条*/
#RedProgressBar {
text-align: center; /*进度值居中*/
@ -50,7 +50,7 @@ StyleSheet = '''
width: 10px; /*区块宽度*/
margin: 0.5px;
}
'''
"""
class ProgressBar(QProgressBar):

View file

@ -4,16 +4,21 @@
"""
Created on 2021/1/1
@author: Irony
@site: https://pyqt5.com , https://github.com/892768447
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: WaterProgress
@description:
"""
import sys
try:
from PyQt5.QtCore import QTimer
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout
except ImportError:
from PySide2.QtCore import QTimer
from PySide2.QtWidgets import QApplication, QWidget, QVBoxLayout
from Lib.DWaterProgress import DWaterProgress
from PyQt5.QtCore import QTimer
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout
class WaterProgressWindow(QWidget):

View file

@ -1,27 +1,27 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Created on 2018年4月1日
# author: Irony
# site: https://pyqt5.com , https://github.com/892768447
# email: 892768447@qq.com
# file: WaterProgressBar
# description:
__Author__ = """By: Irony
QQ: 892768447
Email: 892768447@qq.com"""
__Copyright__ = 'Copyright (c) 2018 Irony'
__Version__ = 1.0
"""
Created on 2018年4月1日
@author: Irony
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: WaterProgressBar
@description:
"""
from random import randint
from PyQt5.Qt import QSpinBox
from PyQt5.QtCore import QTimer
from PyQt5.QtGui import QPixmap, QIcon
from PyQt5.QtWidgets import QWidget, QFormLayout, QRadioButton, QPushButton,\
QColorDialog
try:
from PyQt5.QtCore import QTimer
from PyQt5.QtGui import QPixmap, QIcon
from PyQt5.QtWidgets import QApplication, QWidget, QFormLayout, QRadioButton, QPushButton, QColorDialog, \
QSpinBox
except ImportError:
from PySide2.QtCore import QTimer
from PySide2.QtGui import QPixmap, QIcon
from PySide2.QtWidgets import QApplication, QWidget, QFormLayout, QRadioButton, QPushButton, QColorDialog, \
QSpinBox
from Lib.WaterRippleProgressBar import WaterRippleProgressBar # @UnresolvedImport
@ -53,11 +53,13 @@ class Window(QWidget):
layout.addWidget(
QPushButton('设置随机0-100固定值', self, clicked=self.setRandomValue))
layout.addRow('振幅(浪高)',
QSpinBox(self, value=1, valueChanged=self.bar.setWaterHeight))
spb1 = QSpinBox(self, value=1)
spb1.valueChanged.connect(self.bar.setWaterHeight)
layout.addRow('振幅(浪高)', spb1)
layout.addRow('周期(密度)',
QSpinBox(self, value=1, valueChanged=self.bar.setWaterDensity))
spb2 = QSpinBox(self, value=1)
spb2.valueChanged.connect(self.bar.setWaterDensity)
layout.addRow('周期(密度)', spb2)
layout.addWidget(self.bar)
@ -116,9 +118,10 @@ class Window(QWidget):
value = 0
self.bar.setValue(value)
if __name__ == '__main__':
import sys
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
w = Window()
w.show()

View file

@ -1,10 +1,8 @@
from libc.math cimport pow
def getDistance(p1, p2):
return pow(p1.x - p2.x, 2) + pow(p1.y - p2.y, 2)
def findClose(points):
cdef int plen = len(points)
cdef int i = 0

View file

@ -10,6 +10,7 @@
# )
from distutils.core import setup
from Cython.Build import cythonize
setup(

View file

@ -1,20 +1,22 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from PyQt5.QtCore import QPropertyAnimation
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QPushButton
# Created on 2018年6月14日
# author: Irony
# site: https://pyqt5.com , https://github.com/892768447
# email: 892768447@qq.com
# file: FadeInOut
# description:
__Author__ = """By: Irony
QQ: 892768447
Email: 892768447@qq.com"""
__Copyright__ = 'Copyright (c) 2018 Irony'
__Version__ = 1.0
"""
Created on 2018年6月14日
@author: Irony
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: FadeInOut
@description:
"""
try:
from PyQt5.QtCore import QPropertyAnimation
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton
except ImportError:
from PySide2.QtCore import QPropertyAnimation
from PySide2.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton
class Window(QWidget):
@ -55,7 +57,7 @@ class Window(QWidget):
if __name__ == '__main__':
import sys
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
w = Window()
w.show()

View file

@ -4,23 +4,24 @@
"""
Created on 2019年5月15日
@author: Irony
@site: https://pyqt5.com https://github.com/892768447
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: 翻转动画
@description:
"""
from PyQt5.QtCore import Qt, pyqtSignal, QTimer
from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import QStackedWidget, QLabel
try:
from PyQt5.QtCore import Qt, pyqtSignal, QTimer
from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import QApplication, QStackedWidget, QLabel
except ImportError:
from PySide2.QtCore import Qt, Signal as pyqtSignal, QTimer
from PySide2.QtGui import QPixmap
from PySide2.QtWidgets import QApplication, QStackedWidget, QLabel
from Lib.FlipWidget import FlipWidget
__Author__ = 'Irony'
__Copyright__ = 'Copyright (c) 2019 Irony'
__Version__ = 1.0
class LoginWidget(QLabel):
# 只是显示登录界面截图
@ -120,7 +121,7 @@ class Window(QStackedWidget):
if __name__ == '__main__':
import sys
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
w = Window()
w.show()

View file

@ -4,23 +4,24 @@
"""
Created on 2019年5月15日
@author: Irony
@site: https://pyqt5.com https://github.com/892768447
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: FlipWidget
@description: 动画翻转窗口
"""
from PyQt5.QtCore import pyqtSignal, Qt, QPropertyAnimation, QEasingCurve,\
pyqtProperty, QPointF
from PyQt5.QtGui import QPainter, QTransform
from PyQt5.QtWidgets import QWidget
__Author__ = 'Irony'
__Copyright__ = 'Copyright (c) 2019'
try:
from PyQt5.QtCore import pyqtSignal, pyqtProperty, Qt, QPropertyAnimation, QEasingCurve, QPointF
from PyQt5.QtGui import QPainter, QTransform
from PyQt5.QtWidgets import QWidget
except ImportError:
from PySide2.QtCore import Signal as pyqtSignal, Property as pyqtProperty, Qt, QPropertyAnimation, \
QEasingCurve, QPointF
from PySide2.QtGui import QPainter, QTransform
from PySide2.QtWidgets import QWidget
class FlipWidget(QWidget):
Left = 0 # 从右往左
Right = 1 # 从左往右
Scale = 3 # 图片缩放比例

View file

@ -4,25 +4,23 @@
"""
Created on 2018年11月24日
author: Irony
site: https://pyqt5.com , https://github.com/892768447
site: https://pyqt.site , https://github.com/PyQt5
email: 892768447@qq.com
file:
description: 参考 http://qt.shoutwiki.com/wiki/Extending_QStackedWidget_for_sliding_page_animations_in_Qt
"""
from PyQt5.QtCore import Qt, pyqtProperty, QEasingCurve, QPoint, \
QPropertyAnimation, QParallelAnimationGroup, QTimer
from PyQt5.QtWidgets import QStackedWidget
__Author__ = """By: Irony
QQ: 892768447
Email: 892768447@qq.com"""
__Copyright__ = 'Copyright (c) 2018 Irony'
__Version__ = 1.0
try:
from PyQt5.QtCore import Qt, pyqtProperty, QEasingCurve, QPoint, QPropertyAnimation, \
QParallelAnimationGroup, QTimer
from PyQt5.QtWidgets import QStackedWidget
except ImportError:
from PySide2.QtCore import Qt, Property as pyqtProperty, QEasingCurve, QPoint, QPropertyAnimation, \
QParallelAnimationGroup, QTimer
from PySide2.QtWidgets import QStackedWidget
class SlidingStackedWidget(QStackedWidget):
LEFT2RIGHT, RIGHT2LEFT, TOP2BOTTOM, BOTTOM2TOP, AUTOMATIC = range(5)
def __init__(self, *args, **kwargs):
@ -210,7 +208,7 @@ class SlidingStackedWidget(QStackedWidget):
def animationDoneSlot(self):
"""动画结束处理函数"""
# 由于重写了setCurrentIndex方法所以这里要用父类本身的方法
# self.setCurrentIndex(self._next)
# self.setCurrentIndex(self._next)
QStackedWidget.setCurrentIndex(self, self._next)
w = self.widget(self._now)
w.hide()

View file

@ -6,7 +6,11 @@
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
try:
from PyQt5 import QtCore, QtWidgets
except ImportError:
from PySide2 import QtCore, QtWidgets
class Ui_Form(object):
def setupUi(self, Form):
@ -89,14 +93,15 @@ class Ui_Form(object):
self.pushButtonStart.setText(_translate("Form", "轮播开始"))
self.pushButtonStop.setText(_translate("Form", "轮播停止"))
from Lib.SlidingStackedWidget import SlidingStackedWidget
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Form = QtWidgets.QWidget()
ui = Ui_Form()
ui.setupUi(Form)
Form.show()
sys.exit(app.exec_())

View file

@ -4,20 +4,18 @@
"""
Created on 2018年8月22日
@author: Irony
@site: https://pyqt5.com , https://github.com/892768447
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: MenuAnimation
@description:
"""
from PyQt5.QtCore import QPropertyAnimation, QEasingCurve, QRect
from PyQt5.QtWidgets import QWidget, QMenu, QApplication
__Author__ = """By: Irony
QQ: 892768447
Email: 892768447@qq.com"""
__Copyright__ = "Copyright (c) 2018 Irony"
__Version__ = "Version 1.0"
try:
from PyQt5.QtCore import QPropertyAnimation, QEasingCurve, QRect
from PyQt5.QtWidgets import QWidget, QMenu, QApplication
except ImportError:
from PySide2.QtCore import QPropertyAnimation, QEasingCurve, QRect
from PySide2.QtWidgets import QWidget, QMenu, QApplication
class Window(QWidget):
@ -61,7 +59,8 @@ class Window(QWidget):
if __name__ == '__main__':
import sys
import cgitb
sys.excepthook = cgitb.Hook(1, None, 5, sys.stderr, 'text')
cgitb.enable(format='text')
app = QApplication(sys.argv)
w = Window()
w.show()

View file

@ -4,27 +4,25 @@
"""
Created on 2018年11月24日
author: Irony
site: https://pyqt5.com , https://github.com/892768447
site: https://pyqt.site , https://github.com/PyQt5
email: 892768447@qq.com
file: PageSwitching
description:
"""
import os
from PyQt5.QtCore import QEasingCurve, Qt
from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import QWidget, QLabel
try:
from PyQt5.QtCore import QEasingCurve, Qt
from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import QWidget, QLabel, QApplication
except ImportError:
from PySide2.QtCore import QEasingCurve, Qt
from PySide2.QtGui import QPixmap
from PySide2.QtWidgets import QWidget, QLabel, QApplication
from Lib.UiImageSlider import Ui_Form # @UnresolvedImport
__Author__ = """By: Irony
QQ: 892768447
Email: 892768447@qq.com"""
__Copyright__ = 'Copyright (c) 2018 Irony'
__Version__ = 1.0
class ImageSliderWidget(QWidget, Ui_Form):
def __init__(self, *args, **kwargs):
@ -76,7 +74,7 @@ class ImageSliderWidget(QWidget, Ui_Form):
if __name__ == '__main__':
import sys
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
w = ImageSliderWidget()
w.show()

View file

@ -4,7 +4,7 @@
"""
Created on 2018年11月22日
@author: Irony
@site: https://pyqt5.com , https://github.com/892768447
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: RlatticeEffect
@description:
@ -12,29 +12,29 @@ Created on 2018年11月22日
from random import random
from time import time
from PyQt5.QtCore import QPropertyAnimation, QObject, pyqtProperty, QEasingCurve,\
Qt, QRectF, pyqtSignal
from PyQt5.QtGui import QColor, QPainterPath, QPainter
from PyQt5.QtWidgets import QWidget
__Author__ = """By: Irony
QQ: 892768447
Email: 892768447@qq.com"""
__Copyright__ = 'Copyright (c) 2018 Irony'
__Version__ = 1.0
try:
from PyQt5.QtCore import QPropertyAnimation, QObject, QEasingCurve, Qt, QRectF, pyqtSignal, pyqtProperty
from PyQt5.QtGui import QColor, QPainterPath, QPainter
from PyQt5.QtWidgets import QApplication, QWidget
except ImportError:
from PySide2.QtCore import QPropertyAnimation, QObject, QEasingCurve, Qt, QRectF, Signal as pyqtSignal, \
Property as pyqtProperty
from PySide2.QtGui import QColor, QPainterPath, QPainter
from PySide2.QtWidgets import QApplication, QWidget
try:
from Lib import pointtool # @UnusedImport @UnresolvedImport
getDistance = pointtool.getDistance
findClose = pointtool.findClose
except:
import math
def getDistance(p1, p2):
return math.pow(p1.x - p2.x, 2) + math.pow(p1.y - p2.y, 2)
def findClose(points):
plen = len(points)
for i in range(plen):
@ -66,8 +66,7 @@ class Target:
class Point(QObject):
valueChanged = pyqtSignal()
valueChanged = pyqtSignal(int)
def __init__(self, x, ox, y, oy, *args, **kwargs):
super(Point, self).__init__(*args, **kwargs)
@ -90,12 +89,12 @@ class Point(QObject):
# 属性动画
if not hasattr(self, 'xanimation'):
self.xanimation = QPropertyAnimation(
self, b'x', self, valueChanged=self.valueChanged.emit,
easingCurve=QEasingCurve.InOutSine)
self, b'x', self, easingCurve=QEasingCurve.InOutSine)
self.xanimation.valueChanged.connect(self.valueChanged.emit)
self.yanimation = QPropertyAnimation(
self, b'y', self, valueChanged=self.valueChanged.emit,
easingCurve=QEasingCurve.InOutSine,
finished=self.updateAnimation)
self, b'y', self, easingCurve=QEasingCurve.InOutSine)
self.yanimation.valueChanged.connect(self.valueChanged.emit)
self.yanimation.finished.connect(self.updateAnimation)
self.updateAnimation()
def updateAnimation(self):
@ -138,6 +137,9 @@ class Window(QWidget):
self.target = Target(self.width() / 2, self.height() / 2)
self.initPoints()
def update(self, *args):
super(Window, self).update()
def paintEvent(self, event):
super(Window, self).paintEvent(event)
painter = QPainter()
@ -220,8 +222,9 @@ class Window(QWidget):
if __name__ == '__main__':
import sys
import cgitb
cgitb.enable(1, None, 5, '')
from PyQt5.QtWidgets import QApplication
cgitb.enable(format='text')
app = QApplication(sys.argv)
w = Window()
w.show()

View file

@ -4,18 +4,18 @@
"""
Created on 2019年5月8日
@author: Irony
@site: https://pyqt5.com https://github.com/892768447
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: ShakeWindow
@description: 抖动动画
"""
from PyQt5.QtCore import QPropertyAnimation, QPoint
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QPushButton
__Author__ = 'Irony'
__Copyright__ = 'Copyright (c) 2019 Irony'
__Version__ = 1.0
try:
from PyQt5.QtCore import QPropertyAnimation, QPoint
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton
except ImportError:
from PySide2.QtCore import QPropertyAnimation, QPoint
from PySide2.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton
class Window(QWidget):
@ -66,7 +66,7 @@ class Window(QWidget):
if __name__ == '__main__':
import sys
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
w = Window()
w.show()

View file

@ -4,7 +4,7 @@
"""
Created on 2018年12月27日
@author: Irony
@site: https://pyqt5.com , https://github.com/892768447
@site: https://pyqt.site , https://github.com/PyQt5
@email: 892768447@qq.com
@file: TabBarStyle
@description:
@ -13,13 +13,6 @@ from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QProxyStyle
__Author__ = """By: Irony
QQ: 892768447
Email: 892768447@qq.com"""
__Copyright__ = "Copyright (c) 2018 Irony"
__Version__ = "Version 1.0"
class TabBarStyle(QProxyStyle):
def sizeFromContents(self, types, option, size, widget):

View file

@ -9,8 +9,13 @@ Created on 2021年06月23日
@file: TabCornerStyle
@description:
"""
from PyQt5.QtCore import QRect
from PyQt5.QtWidgets import QProxyStyle, QStyle
try:
from PyQt5.QtCore import QRect
from PyQt5.QtWidgets import QProxyStyle, QStyle
except ImportError:
from PySide2.QtCore import QRect
from PySide2.QtWidgets import QProxyStyle, QStyle
class TabCornerStyle(QProxyStyle):

Some files were not shown because too many files have changed in this diff Show more