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爬虫之urllib2中的两个重要概念:Openers和Handlers
Nov 05 Python
python连接MySQL数据库实例分析
May 12 Python
用 Python 连接 MySQL 的几种方式详解
Apr 04 Python
python 3.6.2 安装配置方法图文教程
Sep 18 Python
python实现感知器算法(批处理)
Jan 18 Python
Python2和3字符编码的区别知识点整理
Aug 08 Python
解决Django删除migrations文件夹中的文件后出现的异常问题
Aug 31 Python
python tkinter基本属性详解
Sep 16 Python
Pytorch中膨胀卷积的用法详解
Jan 07 Python
PyCharm2020.1.2社区版安装,配置及使用教程详解(Windows)
Aug 07 Python
tensorflow2.0教程之Keras快速入门
Feb 20 Python
Python识别花卉种类鉴定网络热门植物并自动整理分类
Apr 08 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
DC宇宙的第一个英雄,堪称动漫史鼻祖,如今成为美国文化的象征
2020/04/09 欧美动漫
使用php判断浏览器的类型和语言的函数代码
2013/02/28 PHP
又十个超级有用的PHP代码片段
2015/09/24 PHP
浅谈PHP正则中的捕获组与非捕获组
2016/07/18 PHP
删除PHP数组中的重复元素的实现代码
2017/04/10 PHP
实现php删除链表中重复的结点
2018/09/27 PHP
客户端限制只能上传jpg格式图片的js代码
2010/12/09 Javascript
Jquery实现瀑布流布局(备有详细注释)
2015/07/31 Javascript
jQuery模仿单选按钮选中效果
2016/06/24 Javascript
AngularJS $http模块POST请求实现
2017/04/08 Javascript
bootstrap基本配置_动力节点Java学院整理
2017/07/14 Javascript
NodeJS使用七牛云存储上传文件的方法
2017/07/24 NodeJs
JavaScript 点击触发复制功能实例详解
2018/11/02 Javascript
js实现下拉框二级联动
2018/12/04 Javascript
深入学习JavaScript 高阶函数
2019/06/11 Javascript
Vue.js递归组件实现组织架构树和选人功能案例分析
2019/07/03 Javascript
JS通用方法触发点击事件代码实例
2020/02/17 Javascript
Python3.5面向对象程序设计之类的继承和多态详解
2019/04/24 Python
Python3视频转字符动画的实例代码
2019/08/29 Python
Python数据存储之 h5py详解
2019/12/26 Python
浅谈Keras参数 input_shape、input_dim和input_length用法
2020/06/29 Python
Python2及Python3如何实现兼容切换
2020/09/01 Python
pytorch下的unsqueeze和squeeze的用法说明
2021/02/06 Python
HTML5语义化元素你真的用对了吗
2019/08/22 HTML / CSS
Clarins娇韵诗美国官网:法国天然护肤品牌
2016/09/26 全球购物
德国运动鞋网上商店:Afew Store
2018/01/05 全球购物
AJAX应用和传统Web应用有什么不同
2013/08/24 面试题
运动会通讯稿200字
2014/02/16 职场文书
教师对照四风自我剖析材料
2014/09/30 职场文书
2014年综治维稳工作总结
2014/11/17 职场文书
会计简历自我评价
2015/03/10 职场文书
旗帜观后感
2015/06/08 职场文书
MybatisPlus代码生成器的使用方法详解
2021/06/13 Java/Android
Python数据结构之队列详解
2022/03/21 Python
vue+echarts实现多条折线图
2022/03/21 Vue.js
Redis特殊数据类型Geospatial地理空间
2022/06/01 Redis