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 07 Python
在Mac OS系统上安装Python的Pillow库的教程
Nov 20 Python
python flask中静态文件的管理方法
Mar 20 Python
Django rest framework实现分页的示例
May 24 Python
Python使用while循环花式打印乘法表
Jan 28 Python
python飞机大战pygame碰撞检测实现方法分析
Dec 17 Python
python可视化text()函数使用详解
Feb 11 Python
利用python在excel中画图的实现方法
Mar 17 Python
PIL.Image.open和cv2.imread的比较与相互转换的方法
Jun 03 Python
Python使用shutil模块实现文件拷贝
Jul 31 Python
Windows环境下Python3.6.8 importError: DLLload failed:找不到指定的模块
Nov 01 Python
Python基于argparse与ConfigParser库进行入参解析与ini parser
Feb 02 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
全国FM电台频率大全 - 12 安徽省
2020/03/11 无线电
PHP XML备份Mysql数据库
2009/05/27 PHP
orm获取关联表里的属性值
2016/04/17 PHP
PHP命名空间简单用法示例
2018/12/28 PHP
javascript add event remove event
2008/04/07 Javascript
输入框的字数时时统计—关于 onpropertychange 和 oninput 使用
2011/10/21 Javascript
jQueryUI写一个调整分类的拖放效果实现代码
2012/05/10 Javascript
jquery实现点击TreeView文本父节点展开/折叠子节点
2013/01/10 Javascript
关于scrollLeft,scrollTop的浏览器兼容性测试
2013/03/19 Javascript
jquery按回车提交数据的代码示例
2013/11/05 Javascript
浅谈jquery回调函数callback的使用
2015/01/30 Javascript
深入理解JavaScript编程中的原型概念
2015/06/25 Javascript
chrome浏览器当表单自动填充时如何去除浏览器自动添加的默认样式
2015/10/09 Javascript
Vue.js划分组件的方法
2017/10/29 Javascript
js数组去重的方法总结
2019/01/18 Javascript
js使用文件流下载csv文件的实现方法
2019/07/15 Javascript
JS简单表单验证功能完整示例
2020/01/26 Javascript
[58:54]EG vs RNG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
对numpy 数组和矩阵的乘法的进一步理解
2018/04/04 Python
python实现在pandas.DataFrame添加一行
2018/04/04 Python
利用Python如何批量更新服务器文件
2018/07/29 Python
浅谈python中get pass用法
2019/03/19 Python
详解python 3.6 安装json 模块(simplejson)
2019/04/02 Python
PyCharm无法识别PyQt5的2种解决方法,ModuleNotFoundError: No module named 'pyqt5'
2020/02/17 Python
TensorFlow keras卷积神经网络 添加L2正则化方式
2020/05/22 Python
用python绘制樱花树
2020/10/09 Python
python批量修改交换机密码的示例
2020/09/22 Python
python从PDF中提取数据的示例
2020/10/30 Python
HTML5添加鼠标悬浮音响效果不使用FLASH
2014/04/23 HTML / CSS
Parfumdreams英国:香水和化妆品
2019/05/10 全球购物
Groupon法国官方网站:特卖和网上购物高达-70%
2019/09/02 全球购物
学期评语大全
2014/04/30 职场文书
主持稿开场白
2015/06/01 职场文书
56句经典英文座右铭
2019/08/09 职场文书
HTML5中 rem适配方案与 viewport 适配问题详解
2021/04/27 HTML / CSS
JS前端可视化canvas动画原理及其推导实现
2022/08/05 Javascript