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中pandas.DataFrame对行与列求和及添加新行与列示例
Mar 12 Python
python获取当前运行函数名称的方法实例代码
Apr 06 Python
Python File readlines() 使用方法
Mar 19 Python
Python 判断文件或目录是否存在的实例代码
Jul 19 Python
对tensorflow 的模型保存和调用实例讲解
Jul 28 Python
python实现双色球随机选号
Jan 01 Python
解决Pytorch 加载训练好的模型 遇到的error问题
Jan 10 Python
python自动化unittest yaml使用过程解析
Feb 03 Python
python中的django是做什么的
Jul 31 Python
如何利用python之wxpy模块玩转微信
Aug 17 Python
python爬虫中采集中遇到的问题整理
Nov 27 Python
python之基数排序的实现
Jul 26 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 操作文件的一些FAQ总结
2009/02/12 PHP
修改destoon会员公司的伪静态中的com目录的方法
2014/08/21 PHP
可输入的下拉框
2006/06/19 Javascript
JavaScript初学者应注意的七个细节小结
2012/01/30 Javascript
json数据的列循环示例
2013/09/06 Javascript
jquery实现图片翻页效果
2013/12/23 Javascript
jquery easyui使用心得
2014/07/07 Javascript
详解jQuery Mobile自定义标签
2016/01/06 Javascript
JQuery中attr属性和jQuery.data()学习笔记【必看】
2016/05/18 Javascript
jQuery筛选数组之grep、each、inArray、map的用法及遍历json对象
2016/06/20 Javascript
js 实现复选框只能选择一项的示例代码
2018/01/23 Javascript
vue.js根据代码运行环境选择baseurl的方法
2018/02/28 Javascript
JavaScript实用代码小技巧
2018/08/23 Javascript
详解使用angular框架离线你的应用(pwa指南)
2019/01/31 Javascript
详解Puppeteer前端自动化测试实践
2019/02/21 Javascript
layui表格内容溢出的解决方法
2019/09/06 Javascript
vscode中eslint插件的配置(prettier配置无效)
2019/09/10 Javascript
javscript 数组扁平化的实现
2020/02/03 Javascript
浅谈nuxtjs校验登录中间件和混入(mixin)
2020/11/06 Javascript
简单实现python爬虫功能
2015/12/31 Python
python利用sklearn包编写决策树源代码
2017/12/21 Python
pyqt5简介及安装方法介绍
2018/01/31 Python
python编写简易聊天室实现局域网内聊天功能
2018/07/28 Python
python ubplot使用方法解析
2020/01/10 Python
使用python实现飞机大战游戏
2020/03/23 Python
杭州SQL浙江浙大网新恩普软件有限公司
2013/07/27 面试题
缓刑人员的思想汇报
2014/01/11 职场文书
房屋买卖协议书范本
2014/04/10 职场文书
群众路线剖析材料范文
2014/10/09 职场文书
机关作风建设剖析材料
2014/10/11 职场文书
社区灵活就业证明
2014/11/03 职场文书
初中成绩单评语
2014/12/29 职场文书
网络营销计划书
2015/01/17 职场文书
社区母亲节活动总结
2015/02/10 职场文书
审查起诉阶段律师意见书
2015/05/19 职场文书
Python自动化之批量处理工作簿和工作表
2021/06/03 Python