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中的测试模块unittest和doctest的使用教程
Apr 14 Python
Windows中使用wxPython和py2exe开发Python的GUI程序的实例教程
Jul 11 Python
Python中不同进制的语法及转换方法分析
Jul 27 Python
python+opencv打开摄像头,保存视频、拍照功能的实现方法
Jan 08 Python
python字符串循环左移
Mar 08 Python
python远程邮件控制电脑升级版
May 23 Python
python opencv捕获摄像头并显示内容的实现
Jul 11 Python
Python二维码生成识别实例详解
Jul 16 Python
Django获取该数据的上一条和下一条方法
Aug 12 Python
django中的数据库迁移的实现
Mar 16 Python
Python气泡提示与标签的实现
Apr 01 Python
Python实现UDP程序通信过程图解
May 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
基于mysql的bbs设计(一)
2006/10/09 PHP
两个强悍的php 图像处理类1
2009/06/15 PHP
php格式化电话号码的方法
2015/04/24 PHP
利用try-catch判断变量是已声明未声明还是未赋值
2014/03/12 Javascript
24款热门实用的jQuery插件推荐
2014/12/24 Javascript
轻松学习jQuery插件EasyUI EasyUI表单验证
2015/12/01 Javascript
D3.js实现文本的换行详解
2016/10/14 Javascript
通过Ajax使用FormData对象无刷新上传文件方法
2016/12/08 Javascript
微信小程序  checkbox组件详解及简单实例
2017/01/10 Javascript
浅谈javascript的闭包
2017/01/23 Javascript
js 递归和定时器的实例解析
2017/02/03 Javascript
angular.js+node.js实现下载图片处理详解
2017/03/31 Javascript
JavaScript门面模式详解
2017/10/19 Javascript
JS实现的字符串数组去重功能小结
2019/06/17 Javascript
node.js Promise对象的使用方法实例分析
2019/12/26 Javascript
JavaScript 中的无穷数(Infinity)详解
2020/02/13 Javascript
云服务器部署Node.js项目的方法步骤(小白系列)
2020/03/23 Javascript
[01:12:27]EG vs Secret 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
python实现目录树生成示例
2014/03/28 Python
Python性能优化的20条建议
2014/10/25 Python
Django静态资源URL STATIC_ROOT的配置方法
2014/11/08 Python
python 脚本生成随机 字母 + 数字密码功能
2018/05/26 Python
python验证码识别教程之灰度处理、二值化、降噪与tesserocr识别
2018/06/04 Python
tensorflow saver 保存和恢复指定 tensor的实例讲解
2018/07/26 Python
python 实现将txt文件多行合并为一行并将中间的空格去掉方法
2018/12/20 Python
基于Python3.7.1无法导入Numpy的解决方式
2020/03/09 Python
pygame实现飞机大战
2020/03/11 Python
python实现最短路径的实例方法
2020/07/19 Python
python3爬虫中引用Queue的实例讲解
2020/11/24 Python
canvas实现高阶贝塞尔曲线(N阶贝塞尔曲线生成器)
2018/01/10 HTML / CSS
体育馆的标语
2014/06/24 职场文书
干部竞争上岗演讲稿
2014/09/11 职场文书
“向国旗敬礼”主题班会活动设计方案
2014/09/27 职场文书
2014年小学体育工作总结
2014/12/11 职场文书
学生病假条怎么写
2015/08/17 职场文书
使用CSS实现六边形的图片效果
2022/08/05 HTML / CSS