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的socket模块源码中的一些实现要点分析
Jun 06 Python
Python 递归函数详解及实例
Dec 27 Python
Python验证文件是否可读写代码分享
Dec 11 Python
详解Python 实现元胞自动机中的生命游戏(Game of life)
Jan 27 Python
Python实现上下班抢个顺风单脚本
Feb 07 Python
Python扩展内置类型详解
Mar 26 Python
python实现读取大文件并逐行写入另外一个文件
Apr 19 Python
python3爬虫中异步协程的用法
Jul 10 Python
利用django创建一个简易的博客网站的示例
Sep 29 Python
Python爬虫进阶之Beautiful Soup库详解
Apr 29 Python
Matplotlib可视化之添加让统计图变得简单易懂的注释
Jun 11 Python
使用pandas生成/读取csv文件的方法实例
Jul 09 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 在线导入mysql大数据程序
2015/06/11 PHP
学习javascript,实现插入排序实现代码
2011/07/31 Javascript
jQuery动态添加的元素绑定事件处理函数代码
2011/08/02 Javascript
js动态添加onload、onresize、onscroll事件(另类方法)
2012/12/26 Javascript
Javascript中引用示例介绍
2014/02/21 Javascript
js 获取元素下面所有li的两种方法
2014/04/14 Javascript
JS实现文字掉落效果的方法
2015/05/06 Javascript
JavaScript数组实现数据结构中的队列与堆栈
2016/05/26 Javascript
jQuery插件zTree实现单独选中根节点中第一个节点示例
2017/03/08 Javascript
jQuery使用unlock.js插件实现滑动解锁
2017/04/04 jQuery
微信小程序 实现点击添加移除class
2017/06/12 Javascript
Webpack 之 babel-loader文件预处理器详解
2018/03/23 Javascript
在vue中获取token,并将token写进header的方法
2018/09/26 Javascript
js new Date()实例测试
2019/10/31 Javascript
ant design实现圈选功能
2019/12/17 Javascript
JS Generator 函数的含义与用法实例总结
2020/04/08 Javascript
浅谈实现在线预览PDF的几种解决办法
2020/08/10 Javascript
node.js通过Sequelize 连接MySQL的方法
2020/12/28 Javascript
复制粘贴功能的Python程序
2008/04/04 Python
python traceback捕获并打印异常的方法
2018/08/31 Python
Python基本数据结构与用法详解【列表、元组、集合、字典】
2019/03/23 Python
python中的subprocess.Popen()使用详解
2019/12/25 Python
Python图像处理库PIL的ImageDraw模块介绍详解
2020/02/26 Python
python:删除离群值操作(每一行为一类数据)
2020/06/08 Python
python两个list[]相加的实现方法
2020/09/23 Python
CSS3盒子模型详解
2013/04/24 HTML / CSS
英国度假别墅预订:Sykes Cottages
2017/06/12 全球购物
美国鲜花递送:UrbanStems
2021/01/04 全球购物
化学实验员岗位职责
2013/12/28 职场文书
旅游专业职业生涯规划范文
2014/01/13 职场文书
金融专业大学生职业生涯规划范文
2014/01/16 职场文书
高中军训感言200字
2014/02/23 职场文书
幼儿园教师获奖感言
2014/03/11 职场文书
滞留工资返还协议书
2014/10/19 职场文书
任命书格式模板
2015/09/22 职场文书
spring 项目实现限流方法示例
2022/07/15 Java/Android