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常用模块用法分析
Sep 08 Python
python生成随机mac地址的方法
Mar 16 Python
Python实现基于权重的随机数2种方法
Apr 28 Python
使用Python的urllib和urllib2模块制作爬虫的实例教程
Jan 20 Python
教你用Python写安卓游戏外挂
Jan 11 Python
python 移除字符串尾部的数字方法
Jul 17 Python
对python 中class与变量的使用方法详解
Jun 26 Python
Django model 中设置联合约束和联合索引的方法
Aug 06 Python
wxPython色环电阻计算器
Nov 18 Python
python ctypes库2_指定参数类型和返回类型详解
Nov 19 Python
用python3读取python2的pickle数据方式
Dec 25 Python
Python连接mysql方法及常用参数
Sep 01 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
《逃离塔科夫》——“萌新劝退,老手自嗨”的硬核FPS游戏
2020/04/03 其他游戏
一个阿拉伯数字转中文数字的函数
2006/10/09 PHP
第四章 php数学运算
2011/12/30 PHP
Laravel 解决419错误 -ajax请求错误的问题(CSRF验证)
2019/10/25 PHP
js window.onload 加载多个函数的方法
2009/11/02 Javascript
extjs 的权限问题 要求控制的对象是 菜单,按钮,URL
2010/03/09 Javascript
jquery中通过过滤器获取表单元素的实现代码
2011/07/05 Javascript
ajax请求get与post的区别总结
2013/11/04 Javascript
教你如何自定义百度分享插件以及bshare分享插件的分享按钮
2014/06/20 Javascript
jquery制作漂亮的弹出层提示消息特效
2014/12/23 Javascript
jquery文档操作wrap()方法实例简述
2015/01/10 Javascript
jQuery实现TAB风格的全国省份城市滑动切换效果代码
2015/08/24 Javascript
jQuery中实现prop()函数控制多选框(全选,反选)
2016/08/19 Javascript
JavaScript获取当前时间向前推三个月的方法示例
2017/02/04 Javascript
vue.js中mint-ui框架的使用方法
2017/05/12 Javascript
bootstrap multiselect下拉列表功能
2017/08/22 Javascript
浅谈vuejs实现数据驱动视图原理
2018/02/23 Javascript
Node.js Koa2使用JWT进行鉴权的方法示例
2018/08/17 Javascript
基于vue.js中关于下拉框的值默认及绑定问题
2018/08/22 Javascript
antd-mobile ListView长列表的数据更新遇到的坑
2020/04/08 Javascript
原生js实现轮播图特效
2020/05/04 Javascript
vue+elementUI 实现内容区域高度自适应的示例
2020/09/26 Javascript
关于Python 3中print函数的换行详解
2017/08/08 Python
利用python实现简易版的贪吃蛇游戏(面向python小白)
2018/12/30 Python
python统计字符串中字母出现次数代码实例
2020/03/02 Python
pip已经安装好第三方库但pycharm中import时还是标红的解决方案
2020/10/09 Python
使用phonegap创建联系人的实现方法
2017/03/30 HTML / CSS
Canvas环形饼图与手势控制的实现代码
2019/11/08 HTML / CSS
蒂芙尼澳大利亚官方网站:Tiffany&Co. Australia
2017/08/27 全球购物
DJI美国:消费类无人机领域的领导者
2018/04/27 全球购物
英国在线购买马术服装:EQUUS
2019/07/12 全球购物
ABOUT YOU匈牙利:500个最受欢迎的时尚品牌
2019/07/19 全球购物
2014年政务公开工作总结
2014/12/09 职场文书
什么是检讨书?检讨书的格式及范文
2019/11/05 职场文书
Vue详细的入门笔记
2021/05/10 Vue.js
Python中glob库实现文件名的匹配
2021/06/18 Python