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中单下划线_的常见用法总结
Jul 10 Python
Python Learning 列表的更多操作及示例代码
Aug 22 Python
Python2和Python3之间的str处理方式导致乱码的讲解
Jan 03 Python
对python 合并 累加两个dict的实例详解
Jan 21 Python
Python3.5 Pandas模块之Series用法实例分析
Apr 23 Python
PyQt5 QTable插入图片并动态更新的实例
Jun 18 Python
python实现各种插值法(数值分析)
Jul 30 Python
详解用python计算阶乘的几种方法
Aug 14 Python
Python的互斥锁与信号量详解
Sep 12 Python
python golang中grpc 使用示例代码详解
Jun 03 Python
Pycharm调试程序技巧小结
Aug 08 Python
Python编程根据字典列表相同键的值进行合并
Oct 05 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使用fsockopen函数发送post,get请求获取网页内容的方法
2014/11/15 PHP
PHP实现简单汉字验证码
2015/07/28 PHP
PHP运用foreach神奇的转换数组(实例讲解)
2018/02/01 PHP
js左侧三级菜单导航实例代码
2013/09/13 Javascript
jqGrid随窗口大小变化自适应大小的示例代码
2013/12/28 Javascript
jQuery实现仿百度首页滑动伸缩展开的添加服务效果代码
2015/09/09 Javascript
JS+DIV+CSS实现的经典标签切换效果代码
2015/09/14 Javascript
jQuery插件pagination实现无刷新分页
2016/05/21 Javascript
HTML页面,测试JS对C函数的调用简单实例
2016/08/09 Javascript
JS原型与原型链的深入理解
2017/02/15 Javascript
使用jquery datatable和bootsrap创建表格实例代码
2017/03/17 Javascript
vue.js整合vux中的上拉加载下拉刷新实例教程
2018/01/09 Javascript
vue.js 中使用(...)运算符报错的解决方法
2018/08/09 Javascript
JS获取当前时间的实例代码(昨天、今天、明天)
2018/11/13 Javascript
使用electron制作满屏心特效的示例代码
2018/11/27 Javascript
ES10 特性的完整指南小结
2019/03/04 Javascript
浅谈layui里的上传控件问题
2019/09/26 Javascript
JavaScript实现简易聊天对话框(加滚动条)
2020/02/10 Javascript
vue实现循环滚动列表
2020/06/30 Javascript
Element Carousel 走马灯的具体实现
2020/07/26 Javascript
Ajax获取node服务器数据的完整步骤
2020/09/20 Javascript
原生JS实现相邻月份日历
2020/10/13 Javascript
Python中的自定义函数学习笔记
2014/09/23 Python
Python中的高级函数map/reduce使用实例
2015/04/13 Python
Python使用Pycrypto库进行RSA加密的方法详解
2016/06/06 Python
Python Unittest自动化单元测试框架详解
2018/04/04 Python
Pyecharts绘制全球流向图的示例代码
2020/01/08 Python
Python request操作步骤及代码实例
2020/04/13 Python
css3新单位vw、vh的使用教程
2018/03/23 HTML / CSS
意大利网上购书网站:Libraccio.it
2021/02/03 全球购物
省三好学生申请材料
2014/01/22 职场文书
中职招生先进个人材料
2014/08/31 职场文书
高校教师个人工作总结2014
2014/12/17 职场文书
JavaScript 防篡改对象的用法示例
2021/04/24 Javascript
对Keras自带Loss Function的深入研究
2021/05/25 Python
windows server 2016 域环境搭建的方法步骤(图文)
2022/06/25 Servers