python和pyqt实现360的CLable控件
发布时间:2021-07-19 13:31:11
#!/usr/bin/python
#-*-coding:utf-8-*-
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4.Qt import *
class CLabel(QWidget):
signalLabelPress = pyqtSignal()
def __init__(self,parent = None):
super(CLabel,self).__init__(parent)
self.initVariable()
self.initSetupUi()
#self.m_mouseEnterFlag = False
#self.m_mousePressFlag = True
#pointer members
#self.m_pLabelIcon = QLabel(self)
#self.m_pLabelText = QLabel(self)
def setPixmap(self,pixmap):
self.m_pLabelIcon.setPixmap(pixmap.scaled(QSize(30, 30), Qt.KeepAspectRatio, Qt.SmoothTransformation))
def setText(self,text):
self.m_pLabelText.setText(text)
def setMouseEnterFlag(self, flag):
self.m_mouseEnterFlag = flag
self.update()
def setMousePressFlag(self, flag):
self.m_mousePressFlag = flag
self.update()
def enterEvent(self,event):
if(~self.getMousePressFlag()):
self.setMouseEnterFlag(True)
self.setCursor(Qt.PointingHandCursor)
def leaveEvent(self,event):
self.setMouseEnterFlag(False)
def mousePressEvent(self,e):
if(e.button() == Qt.LeftButton):
self.setMousePressFlag(True)
self.signalLabelPress.emit()
def paintEvent(self,e):
painter = QPainter(self)
if(self.getMouseEnterFlag()):
self.paintWidget(50, painter)
elif(self.getMousePressFlag()):
self.paintWidget(80, painter)
QWidget.paintEvent(self,e)
def initVariable(self):
self.setMouseEnterFlag(False)
self.setMousePressFlag(False)
def initSetupUi(self):
self.createFrame()
self.createWidget()
self.createLayout()
def createFrame(self):
self.setStyleSheet("QWidget background:transparentborder:0pxcolor:whitefont-weight:boldfont-size:16px")
def createWidget(self):
self.m_pLabelIcon = QLabel(self)
self.m_pLabelText = QLabel(self)
def createLayout(self):
self.m_pHLayout = QHBoxLayout()
self.m_pHLayout.setSpacing(10)
self.m_pHLayout.setContentsMargins(QMargins(5, 0, 5, 0))
self.m_pHLayout.addWidget(self.m_pLabelIcon)
self.m_pHLayout.addWidget(self.m_pLabelText)
self.m_pHLayout.addStretch()
self.setLayout(self.m_pHLayout)
def paintWidget(self,transparency,device): #QPainter *
#self.pen = QPen(Qt.NoBrush)
#self.pen.setWidth(1)
device.setPen(Qt.NoPen)
self.linear = QLinearGradient(QPointF(self.rect().topLeft()), QPointF(self.rect().bottomLeft()))
self.linear.setColorAt(0, QColor(255, 255, 255, transparency))
self.brush = QBrush(self.linear)
device.setBrush(self.brush)
device.drawRoundedRect(self.rect(), 2, 2)
def getMouseEnterFlag(self):
return self.m_mouseEnterFlag
def getMousePressFlag(self):
return self.m_mousePressFlag
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
Label = CLabel()
Label.show()
sys.exit(app.exec_())
猜你喜欢
- 废话不多说1.win+R 启动“运行”输入cmd 点确定2.输入 cd /d xxxxxxx回车jupyter notebook回车在这里我
- 本文实例讲述了Python实现将HTML转换成doc格式文件的方法。分享给大家供大家参考,具体如下:网页上的一些文章,因为有格式的原因,它们
- 前言:由于公司使用钉钉,之前告警都是使用邮箱,但是这种协同效率比较低,所以调用钉钉机器人来实现实时告警。创建机器人:创建钉钉群,然后添加群机
- 客户用的数据库是mysql,而研发好的产品支持oracle,为了让客户掏腰包,我们必须把数据库环境从oracle转向mysql。我们在转换的
- 前言网易云音乐这款音乐APP本人比较喜欢,用户量也比较大,而网易云音乐之所以用户众多和它的歌曲评论功能密不可分,很多歌曲的评论非常有意思,其
- 1、原材料1.1 花灯纸如下所示,还可以加上自己喜欢的图案、文字等。2.2 Python环境和模块一台安装了Python环境的电脑,Pyth
- 前言在启动 Django 项目时,Django 默认监听的端口号为 8000,设置的默认 IP 地址为 127.0.0.1 。如果需要修改默
- Python函数和代码复用什么是函数:  函数是一段具有特定功能的,可重用的语句组,通过函数名来表示和调
- python3 shelve模块的详解一、简介在python3中我们使用json或者pickle持久化数据,能dump多次,但只能load一
- 通过for循环求和,结果发现输出完全不一样,一个循环是输出每一步的结果,另一个循环是输出最终一次的结果,今天终于弄懂了。如下所示:补充:py
- 之前写了个python脚本用selenium+phantomjs爬新帖子,在循环拉取页面的过程中,phantomjs总是block住,使用W
- 学习目标根据原型设计编译自动化数据生成器,熟悉wxPython的基本用法。界面原型设计界面原型设计分析输入参数:最大长度最小长度组成规则多少
- 如下所示:#coding:utf-8 ''''' Created on 2014-7-24 @aut
- 同样是做表格,但是有些人的表格就做的很好看。融合了之前所学不同模块的知识,来讲讲Django中生成表格的特殊方法。这里只是mark一下导出的
- 本文实例讲述了Python使用pickle模块储存对象操作。分享给大家供大家参考,具体如下:众所周知,当我们需要储存数据的时候,就需要用到重
- 本文实例分析了php中Ctype函数用法。分享给大家供大家参考。具体分析如下:Ctype函数是Php的Ctype扩展函数提供了一组函数用于校
- 本文实例讲述了Python实现的爬虫刷回复功能。分享给大家供大家参考,具体如下:最近闲的无聊,就想着去看看爬虫,顺着爬虫顺利的做到了模拟登录
- 安装pip install faker使用简单使用本库可生成姓名、地址、电话、邮箱、公司等等一系列数据。首先导入库,实例化:from fak
- 简介CSS Sprites并没有一个确定的中文翻译,通常被意译为“CSS图像拼合”或“CSS贴图定位”。CSS Sprites并不是一门新技
- 对于字典,通过“键”获得“值”非常简单,但通过“值”获得“键”则需绕些弯子。一、通用:自行定义函数方式假设:输入:一个字典(dic)+要找的