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搭建Django应用程序步骤及版本冲突问题解决
Nov 19 Python
Python实现保证只能运行一个脚本实例
Jun 24 Python
浅析Python的web.py框架中url的设定方法
Jul 11 Python
python实现堆和索引堆的代码示例
Mar 19 Python
使用Python进行QQ批量登录的实例代码
Jun 11 Python
python操作excel的方法
Aug 16 Python
对Pandas DataFrame缺失值的查找与填充示例讲解
Nov 06 Python
Python面向对象程序设计类的多态用法详解
Apr 12 Python
浅析Python 实现一个自动化翻译和替换的工具
Apr 14 Python
pycharm编写spark程序,导入pyspark包的3中实现方法
Aug 02 Python
pycharm新建Vue项目的方法步骤(图文)
Mar 04 Python
基于python实现ROC曲线绘制广场解析
Jun 28 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
不用mod_rewrite直接用php实现伪静态化页面代码
2008/10/04 PHP
如何突破PHP程序员的技术瓶颈分析
2011/07/17 PHP
VIM中设置php自动缩进为4个空格的方法详解
2013/06/14 PHP
PHP数组排序函数合集 以及它们之间的联系分析
2013/06/27 PHP
thinkPHP实现表单自动验证
2014/12/24 PHP
php利用scws实现mysql全文搜索功能的方法
2014/12/25 PHP
详谈配置phpstorm完美支持Codeigniter(CI)代码自动完成(代码提示)
2017/04/07 PHP
ext 列表页面关于多行查询的办法
2010/03/25 Javascript
jQuery $.get 的妙用 访问本地文本文件
2012/07/12 Javascript
jquery设置控件位置的方法
2013/08/21 Javascript
js立即执行函数: (function ( ){})( ) 与 (function ( ){}( )) 有什么区别?
2015/11/18 Javascript
Bootstrap实现下拉菜单效果
2016/04/29 Javascript
vue中的适配px2rem示例代码
2018/11/19 Javascript
详解Vue、element-ui、axios实现省市区三级联动
2019/05/07 Javascript
Vue实现多标签选择器
2019/11/28 Javascript
Python开发SQLite3数据库相关操作详解【连接,查询,插入,更新,删除,关闭等】
2017/07/27 Python
Python中装饰器高级用法详解
2017/12/25 Python
python简单商城购物车实例代码
2018/03/15 Python
python批量查询、汉字去重处理CSV文件
2018/05/31 Python
树莓派用python中的OpenCV输出USB摄像头画面
2019/06/22 Python
python实现批量nii文件转换为png图像
2019/07/18 Python
Python实现一个带权无回置随机抽选函数的方法
2019/07/24 Python
python实现马丁策略的实例详解
2021/01/15 Python
HTML5实现桌面通知 提示功能
2017/10/11 HTML / CSS
手工制作的意大利太阳镜和光学元件:Illesteva
2019/01/19 全球购物
Ellesse英国官网:意大利高级运动品牌
2019/07/23 全球购物
教育学专业毕业生的自我鉴定
2013/11/26 职场文书
幼儿园实习生辞职信
2014/01/20 职场文书
2014厂务公开实施方案
2014/02/17 职场文书
库房管理员岗位职责
2014/03/09 职场文书
讲党性心得体会
2014/09/03 职场文书
安全隐患整改报告
2014/11/06 职场文书
小学生大队委竞选稿
2015/11/20 职场文书
Python序列化与反序列化相关知识总结
2021/06/08 Python
Java反应式框架Reactor中的Mono和Flux
2021/07/25 Java/Android
vmware虚拟机打不开vmx文件怎么办 ?vmware虚拟机vmx文件打开方法
2022/04/08 数码科技