360的CLable控件

#!/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_())
	


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值