欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python和pyqt实现360的CLable控件

程序员文章站 2023-11-30 20:27:52
 复制代码 代码如下: #!/usr/bin/python  #-*-coding:utf-8-*- from pyqt4.qtgui im...

 

复制代码 代码如下:

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