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 相关文章推荐
通过数据库对Django进行删除字段和删除模型的操作
Jul 21 Python
Python学习小技巧之列表项的推导式与过滤操作
May 20 Python
CentOS中升级Python版本的方法详解
Jul 10 Python
Python实现字符串反转的常用方法分析【4种方法】
Sep 30 Python
Python处理菜单消息操作示例【基于win32ui模块】
May 09 Python
django2+uwsgi+nginx上线部署到服务器Ubuntu16.04
Jun 26 Python
python在OpenCV里实现投影变换效果
Aug 30 Python
python GUI库图形界面开发之PyQt5单行文本框控件QLineEdit详细使用方法与实例
Feb 27 Python
ipython jupyter notebook中显示图像和数学公式实例
Apr 15 Python
keras 获取某层的输入/输出 tensor 尺寸操作
Jun 10 Python
Python 爬虫的原理
Jul 30 Python
pytorch 一行代码查看网络参数总量的实现
May 12 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
php disk_free_space 返回目录可用空间
2010/05/10 PHP
如何用PHP实现插入排序?
2013/04/10 PHP
php实现利用phpexcel导出数据
2013/08/24 PHP
php无限分类使用concat如何实现
2015/11/05 PHP
使用 laravel sms 构建短信验证码发送校验功能
2017/11/06 PHP
比较详细的javascript对象的property和prototype是什么一种关系
2007/08/06 Javascript
javascript 强制刷新页面的实现代码
2009/12/13 Javascript
Jquery ajaxsubmit上传图片实现代码
2010/11/04 Javascript
js实现的仿新浪微博完美的时间组件升级版
2011/12/20 Javascript
JS创建自定义表格具体实现
2014/02/11 Javascript
js实现屏幕自适应局部代码分享
2015/01/30 Javascript
jquery中toggle函数交替使用问题
2015/06/22 Javascript
JavaScript脚本库编写的方法
2015/12/09 Javascript
详解在vue-cli中使用路由
2017/09/25 Javascript
提升node.js中使用redis的性能遇到的问题及解决方法
2018/10/30 Javascript
微信小程序购物车、父子组件传值及calc的注意事项总结
2018/11/14 Javascript
QML实现圆环颜色选择器
2019/09/25 Javascript
layui form表单提交后实现自动刷新
2019/10/25 Javascript
浅谈vue获得后台数据无法显示到table上面的坑
2020/08/13 Javascript
在vue中给后台接口传的值为数组的格式代码
2020/11/12 Javascript
Python 2.7.x 和 3.x 版本的重要区别小结
2014/11/28 Python
在Python的Django框架的视图中使用Session的方法
2015/07/23 Python
Python之多线程爬虫抓取网页图片的示例代码
2018/01/10 Python
Python中循环引用(import)失败的解决方法
2018/04/22 Python
对Python字符串中的换行符和制表符介绍
2018/05/03 Python
Python实现的knn算法示例
2018/06/14 Python
Python3非对称加密算法RSA实例详解
2018/12/06 Python
python linecache 处理固定格式文本数据的方法
2019/01/08 Python
在Python中通过threshold创建mask方式
2020/02/19 Python
会议主持词
2014/03/17 职场文书
英语教师个人总结
2015/02/09 职场文书
2015年小学美术工作总结
2015/05/25 职场文书
北京大学中文系教授推荐的10本小说
2019/08/08 职场文书
Mysql中 unique列插入重复值该怎么解决呢
2021/05/26 MySQL
Django操作cookie的实现
2021/05/26 Python
Go中的条件语句Switch示例详解
2021/08/23 Golang