您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

python和pyqt实现360的CLable控件

2025/1/11 5:43:13发布12次查看
代码如下:
#!/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_())
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product