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编写web API的教程
Apr 30 Python
python实现统计代码行数的方法
May 22 Python
利用Anaconda完美解决Python 2与python 3的共存问题
May 25 Python
Python实现按学生年龄排序的实际问题详解
Aug 29 Python
python正则中最短匹配实现代码
Jan 16 Python
完美解决Pycharm无法导入包的问题 Unresolved reference
May 18 Python
在PyCharm中三步完成PyPy解释器的配置的方法
Oct 29 Python
详解Python用户登录接口的方法
Apr 17 Python
python面向对象 反射原理解析
Aug 12 Python
keras中的backend.clip用法
May 22 Python
什么是Python包的循环导入
Sep 08 Python
Django model class Meta原理解析
Nov 14 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的ob_start来生成静态页面的方法分析
2011/03/09 PHP
PHP句法规则详解 入门学习
2011/11/09 PHP
php中大括号作用介绍
2012/03/22 PHP
全面解析PHP验证码的实现原理 附php验证码小案例
2016/08/17 PHP
PHP实现随机数字、字母的验证码功能
2018/08/01 PHP
PDO实现学生管理系统
2020/03/21 PHP
BOM与DOM的区别分析
2010/10/26 Javascript
JS时间特效最常用的三款
2015/08/19 Javascript
js钢琴按钮波浪式图片排列效果代码分享
2015/08/26 Javascript
jQuery实现滑动页面固定顶部显示(可根据显示位置消失与替换)
2015/10/28 Javascript
javascript实现获取浏览器版本、浏览器类型
2015/12/02 Javascript
解析利用javascript如何判断一个数为素数
2016/12/08 Javascript
ReactNative短信验证码倒计时控件的实现代码
2017/07/20 Javascript
详解Javascript 中的 class、构造函数、工厂函数
2017/12/20 Javascript
如何在js代码中消灭for循环实例详解
2018/07/29 Javascript
Vue指令指令大全
2019/02/09 Javascript
使用vue for时为什么要key【推荐】
2019/07/11 Javascript
vuex实现购物车的增加减少移除
2020/06/28 Javascript
Python的词法分析与语法分析
2013/05/18 Python
python不换行之end=与逗号的意思及用途
2017/11/21 Python
python 遍历目录(包括子目录)下所有文件的实例
2018/07/11 Python
Python爬虫实战之12306抢票开源
2019/01/24 Python
python GUI库图形界面开发之pyinstaller打包python程序为exe安装文件
2020/02/26 Python
Python异常处理机制结构实例解析
2020/07/23 Python
python 操作excel表格的方法
2020/12/05 Python
CSS3制作酷炫的条纹背景
2017/11/09 HTML / CSS
数据库面试要点基本概念
2013/10/31 面试题
小学门卫岗位职责
2013/12/17 职场文书
小学生新学期寄语
2014/01/19 职场文书
幸福家庭事迹材料
2014/02/03 职场文书
优秀学生获奖感言
2014/02/15 职场文书
乡镇党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
大学生在校表现评语
2014/12/31 职场文书
公司客户答谢酒会祝酒词
2015/08/11 职场文书
Spring Data JPA使用JPQL与原生SQL进行查询的操作
2021/06/15 Java/Android
Python将CSV文件转化为HTML文件的操作方法
2021/06/30 Python