Python语言技术文档

微信小程序技术文档

php语言技术文档

jsp语言技术文档

asp语言技术文档

C#/.NET语言技术文档

html5/css技术文档

javascript

点击排行

您现在的位置:首页 > 技术文档 > Python与其他语言

python和pyqt实现360的CLable控件

来源:中文源码网    浏览:188 次    日期:2024-05-04 18:12:44
【下载文档:  python和pyqt实现360的CLable控件.txt 】


python和pyqt实现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_())

相关内容