python和pyqt实现360的CLable控件

时间:2021-07-19 13:31:11 

 


 #!/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,pyqt,360,控件
0
投稿

猜你喜欢

  • 解决Django中多条件查询的问题

    2021-10-10 07:32:16
  • django 使用 request 获取浏览器发送的参数示例代码

    2023-07-26 15:04:44
  • 简单的Python解密rsa案例

    2022-05-28 07:30:18
  • Python实现脚本转换为命令行程序

    2022-02-28 10:48:30
  • Yii2 assets清除缓存的方法

    2024-05-13 09:51:47
  • 登录mysql数据库的几种方式

    2024-01-19 08:32:44
  • 上传图片js判断图片尺寸和格式兼容IE

    2024-04-10 10:48:37
  • Python+threading模块对单个接口进行并发测试

    2023-07-07 02:41:41
  • Python爬虫文件下载图文教程

    2023-11-18 23:59:03
  • python实现翻转棋游戏(othello)

    2022-06-02 10:40:19
  • ASP访问带多个参数的存储过程

    2008-10-14 16:45:00
  • Javascript学习笔记之 函数篇(一) : 函数声明和函数表达式

    2024-04-23 09:08:58
  • Python去除、替换字符串空格的处理方法

    2022-07-17 05:38:25
  • Python 给屏幕打印信息加上颜色的实现方法

    2022-10-27 08:00:08
  • Python学习之shell脚本的使用详解

    2023-10-01 17:57:51
  • python多线程之事件Event的使用详解

    2022-12-21 11:46:10
  • python 合并多个excel中同名的sheet

    2023-06-06 08:34:27
  • 机器学习经典算法-logistic回归代码详解

    2021-05-06 23:56:12
  • 用C#对ADO.NET数据库完成简单操作的方法

    2024-01-15 09:12:58
  • 将Dataframe数据转化为ndarry数据的方法

    2021-03-23 20:44:33
  • asp之家 网络编程 m.aspxhome.com