python和pyqt实现360的CLable控件


Posted in Python onFebruary 21, 2014

 

 #!/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_())
 
Python 相关文章推荐
python解析文件示例
Jan 23 Python
Python开发如何在ubuntu 15.10 上配置vim
Jan 25 Python
Flask框架的学习指南之制作简单blog系统
Nov 20 Python
定制FileField中的上传文件名称实例
Aug 23 Python
Python实现中一次读取多个值的方法
Apr 22 Python
通过Py2exe将自己的python程序打包成.exe/.app的方法
May 26 Python
基于Python开发chrome插件的方法分析
Jul 07 Python
Empty test suite.(PyCharm程序运行错误的解决方法)
Nov 30 Python
Python使用pyshp库读取shapefile信息的方法
Dec 29 Python
pyqt5实现按钮添加背景图片以及背景图片的切换方法
Jun 13 Python
pytorch中的自定义数据处理详解
Jan 06 Python
Python基于mediainfo批量重命名图片文件
Dec 29 Python
python使用7z解压软件备份文件脚本分享
Feb 21 #Python
python发布模块的步骤分享
Feb 21 #Python
python列表操作使用示例分享
Feb 21 #Python
使用python统计文件行数示例分享
Feb 21 #Python
python 多进程通信模块的简单实现
Feb 20 #Python
python使用rabbitmq实现网络爬虫示例
Feb 20 #Python
python使用win32com在百度空间插入html元素示例
Feb 20 #Python
You might like
PHP ? EasyUI DataGrid 资料取的方式介绍
2012/11/07 PHP
破解.net程序(dll文件)编译和反编译方法
2013/01/31 PHP
Apache启动报错No space left on device: AH00023该怎么解决
2015/10/16 PHP
Yii 2.0实现联表查询加搜索分页的方法示例
2017/08/02 PHP
XHTML-Strict 内允许出现的标签
2006/12/11 Javascript
让Firefox支持event对象实现代码
2009/11/07 Javascript
JavaScript在IE和Firefox(火狐)的不兼容问题解决方法小结
2010/04/13 Javascript
jQuery源码分析-03构造jQuery对象-源码结构和核心函数
2011/11/14 Javascript
Ajax请求在数据量大的时候出现超时的解决方法
2014/02/27 Javascript
JavaScript通过字符串调用函数的实现方法
2015/03/18 Javascript
JavaScript制作简易的微信打飞机
2015/03/31 Javascript
探究JavaScript函数式编程的乐趣
2015/12/14 Javascript
JavaScript与jQuery实现的闪烁输入效果
2016/02/18 Javascript
手机端图片缩放旋转全屏查看PhotoSwipe.js插件实现
2016/08/25 Javascript
原生js实现电商侧边导航效果
2017/01/19 Javascript
微信小程序page的生命周期和音频播放及监听实例详解
2017/04/07 Javascript
使用jQuery ajaxupload插件实现无刷新上传文件
2017/04/23 jQuery
微信小程序中多个页面传参通信的学习与实践
2017/05/05 Javascript
利用node.js+mongodb如何搭建一个简单登录注册的功能详解
2017/07/30 Javascript
详解React Native顶|底部导航使用小技巧
2017/09/14 Javascript
[54:24]Optic vs TNC 2018国际邀请赛小组赛BO2 第二场
2018/08/18 DOTA
Python 自动化表单提交实例代码
2017/06/08 Python
python+matplotlib绘制饼图散点图实例代码
2018/01/20 Python
python学习笔记--将python源文件打包成exe文件(pyinstaller)
2018/05/26 Python
python3 图片 4通道转成3通道 1通道转成3通道 图片压缩实例
2019/12/03 Python
pytorch torchvision.ImageFolder的用法介绍
2020/02/20 Python
Django model class Meta原理解析
2020/11/14 Python
LN-CC英国:伦敦时尚生活的缩影
2019/09/01 全球购物
汽车销售求职自荐信
2013/10/01 职场文书
办公室前台岗位职责范本
2013/12/10 职场文书
校运会入场式解说词
2014/02/10 职场文书
会计毕业生自荐书
2014/06/12 职场文书
财会专业毕业生自荐信
2014/07/09 职场文书
白银帝国观后感
2015/06/17 职场文书
2016公司新年问候语
2015/11/11 职场文书
漫画「狩龙人拉格纳」公开TV动画预告图
2022/03/22 日漫