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 相关文章推荐
Centos5.x下升级python到python2.7版本教程
Feb 14 Python
在Python中使用pngquant压缩png图片的教程
Apr 09 Python
Python写的一个简单监控系统
Jun 19 Python
Python中的下划线详解
Jun 24 Python
Python 列表排序方法reverse、sort、sorted详解
Jan 22 Python
Python使用matplotlib绘制余弦的散点图示例
Mar 14 Python
详解Python连接MySQL数据库的多种方式
Apr 16 Python
Django模型修改及数据迁移实现解析
Aug 01 Python
详解Python list和numpy array的存储和读取方法
Nov 06 Python
Python装饰器实现方法及应用场景详解
Mar 26 Python
如何利用Python识别图片中的文字
May 31 Python
python内置模块之上下文管理contextlib
Jun 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
综合图片计数器
2006/10/09 PHP
巧用php中的array_filter()函数去掉多维空值的代码分享
2012/09/07 PHP
PHP框架Swoole定时器Timer特性分析
2014/08/19 PHP
jQuery实现图片信息的浮动显示实例代码
2013/08/28 Javascript
ListBox实现上移,下移,左移,右移的简单实例
2014/02/13 Javascript
js中数组排序sort方法的原理分析
2014/11/20 Javascript
jQuery实现3D文字特效的方法
2015/03/10 Javascript
javascript常用正则表达式汇总
2015/07/31 Javascript
AngularJS中监视Scope变量以及外部调用Scope方法
2016/01/23 Javascript
半个小时学json(json传递示例)
2016/12/25 Javascript
EasyUI学习之Combobox下拉列表(1)
2016/12/29 Javascript
jquery pagination分页插件使用详解(后台struts2)
2017/01/22 Javascript
js实现PC端和移动端刮卡效果
2020/03/27 Javascript
vue.js动态数据绑定学习笔记
2017/05/19 Javascript
axios post提交formdata的实例
2018/03/16 Javascript
解决npm管理员身份install时出现权限的问题
2018/03/16 Javascript
JS实现快递单打印功能【推荐】
2018/06/21 Javascript
JS实现图片上传多次上传同一张不生效的处理方法
2018/08/06 Javascript
iview实现select tree树形下拉框的示例代码
2018/12/21 Javascript
vue+elementUI组件table实现前端分页功能
2020/11/15 Javascript
python读写json文件的简单实现
2017/04/11 Python
Python数据结构之双向链表的定义与使用方法示例
2018/01/16 Python
Python常用爬虫代码总结方便查询
2019/02/25 Python
简单了解python的内存管理机制
2019/07/08 Python
python实现登录与注册系统
2020/11/30 Python
eBay意大利购物网站:eBay.it
2019/09/04 全球购物
NYX Professional Makeup俄罗斯官网:世界知名的化妆品品牌
2019/12/26 全球购物
动物科学专业毕业生的自我评价
2013/11/29 职场文书
演讲稿开场白
2014/01/13 职场文书
师范学院教师自荐书
2014/01/31 职场文书
化妆品活动策划方案
2014/05/23 职场文书
2014党支部对照检查材料思想汇报
2014/10/05 职场文书
工作检讨书怎么写
2014/10/10 职场文书
村党支部书记个人对照材料汇报
2014/10/26 职场文书
乡镇党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
MySQL索引是啥?不懂就问
2021/07/21 MySQL