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最基本的操作字典的方法
Apr 24 Python
简单介绍Python中的readline()方法的使用
May 24 Python
Linux下将Python的Django项目部署到Apache服务器
Dec 24 Python
Python爬虫天气预报实例详解(小白入门)
Jan 24 Python
python实现图片筛选程序
Oct 24 Python
python 实现方阵的对角线遍历示例
Nov 29 Python
Python多线程Threading、子线程与守护线程实例详解
Mar 24 Python
PyCharm中配置PySide2的图文教程
Jun 18 Python
通过实例解析python创建进程常用方法
Jun 19 Python
django models里数据表插入数据id自增操作
Jul 15 Python
编写python代码实现简单抽奖器
Oct 20 Python
next在python中返回迭代器的实例方法
Dec 15 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
PHP5中的时间相差8小时的解决办法
2008/03/28 PHP
MySql 按时间段查询数据方法(实例说明)
2008/11/02 PHP
php判断ip黑名单程序代码实例
2014/02/24 PHP
浅谈laravel5.5 belongsToMany自身的正确用法
2019/10/17 PHP
Yii redis集合的基本使用教程
2020/06/14 PHP
window.location和document.location的区别分析
2008/12/23 Javascript
getElementsByTagName vs selectNodes效率 及兼容的selectNodes实现
2010/02/26 Javascript
新老版本juqery获取radio对象的方法
2010/03/01 Javascript
使用typeof判断function是否存在于上下文
2014/08/14 Javascript
javascript字符串循环匹配实例分析
2015/07/17 Javascript
js跨域请求数据的3种常用的方法
2015/12/01 Javascript
node简单实现一个更改头像功能的示例
2017/12/29 Javascript
Angular实现点击按钮控制隐藏和显示功能示例
2017/12/29 Javascript
JavaScript实现简单的文本逐字打印效果示例
2018/04/12 Javascript
Vue+iview+webpack ie浏览器兼容简单处理
2019/09/20 Javascript
Linux环境下MySQL-python安装过程分享
2015/02/02 Python
Python在for循环中更改list值的方法【推荐】
2018/08/17 Python
解读python如何实现决策树算法
2018/10/11 Python
python3实现斐波那契数列(4种方法)
2019/07/15 Python
利用Python库Scapy解析pcap文件的方法
2019/07/23 Python
如何使用PyCharm将代码上传到GitHub上(图文详解)
2020/04/27 Python
微信浏览器左上角返回按钮拦截功能
2017/11/21 HTML / CSS
Android笔试题总结
2014/11/29 面试题
客服端调用EJB对象的几个基本步骤
2012/01/15 面试题
社区工作感言
2014/02/21 职场文书
餐厅筹备计划书
2014/04/25 职场文书
公司年终奖分配方案
2014/06/16 职场文书
暑假学习心得体会
2014/09/02 职场文书
小班上学期个人总结
2015/02/12 职场文书
病假证明模板
2015/06/19 职场文书
入党宣誓仪式主持词
2015/06/29 职场文书
2016年教师节贺卡寄语
2015/12/04 职场文书
学习《中小学教师职业道德规范》心得体会
2016/01/18 职场文书
2019餐饮行业创业计划书!
2019/06/27 职场文书
java实现对Hadoop的操作
2021/07/01 Java/Android