python和pyqt实现360的CLable控件

yipeiwu_com6年前Python基础

 

复制代码 代码如下:

 #!/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时中文乱码问题

如题,解决Python中用PyQt时中文乱码问题的解决方法: 在中文字符串前面加上u,如u'你好,世界',其他网上的方法没有多去探究,Python的版本也会影响解决方法,故这里只推荐这种...

Python标准库urllib2的一些使用细节总结

Python 标准库中有很多实用的工具类,但是在具体使用时,标准库文档上对使用细节描述的并不清楚,比如 urllib2 这个 HTTP 客户端库。这里总结了一些 urllib2 的使用细...

python opencv将图片转为灰度图的方法示例

python opencv将图片转为灰度图的方法示例

使用opencv将图片转为灰度图主要有两种方法,第一种是将彩色图转为灰度图,第二种是在使用OpenCV读取图片的时候直接读取为灰度图。 将彩色图转为灰度图 import cv2 im...

在python中使用with打开多个文件的方法

虽然初恋是java, 可是最近是越来越喜欢python, 所以决定追根溯源好好了解下python的原理,架构等等.小脑袋瓜不太好使,只能记录下慢慢进步吧 使用with打开文件的好处不多说...

Django外键(ForeignKey)操作以及related_name的作用详解

Django外键(ForeignKey)操作以及related_name的作用详解

之前已经写过一篇关于Django外键的文章,但是当时并没有介绍如何根据外键对数据的操作,也就是如何通过主表查询子表或者通过子表查询主表的信息 首先我定义了两个模型,一个是老师模型,一个是...