python和pyqt实现360的CLable控件_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_())
 

时间: 2024-10-07 06:41:26

python和pyqt实现360的CLable控件_python的相关文章

360极速模式下可用的js实现按钮点击显示隐藏控件

问题描述 360极速模式下可用的js实现按钮点击显示隐藏控件 网上找了一些都只能在兼容模式或IE模式下实现 用360极速浏览器的极速模式无法实现 求一段可以在360浏览器里生效的代码 实现点击按钮隐藏一些控件(如div)并且显示另一些控件 解决方案 解决 chrome 浏览器对 div 的 display : none 不支持 试了很久,发现在style设置display:none的时候,IE是可以的,但是chrome不行 [html] view plaincopy在CODE上查看代码片派生到我

360极速模式-谷歌浏览器无法加载ocx控件和C#写的dll控件,是签名问题吗?

问题描述 谷歌浏览器无法加载ocx控件和C#写的dll控件,是签名问题吗? 公司的一个销售系统读取IC卡和读取地磅数据时需要用到一些控件,360的极速模式应该是谷歌内核加载不上控件当然谷歌浏览器也这样,有的地方网速不好客户需要使用极速模式,但我在网上查找了资料有说不兼容,不知道是不是,如果是不兼容该怎么解决 解决方案 谷歌浏览器不兼容,ocx是activex技术,只支持IE浏览器. 解决方法可以试试这个, http://code.google.com/p/ff-activex-host/ htt

python调用短信猫控件实现发短信功能实例_python

python调用短信猫控件实现发短信功能实例代码如下所示: #! /usr/bin/env python #coding=gbk import sys import win32com.client ocxname='ShouYan_SmsGate61.Smsgate' axocx=win32com.client.Dispatch(ocxname) axocx.CommPort=8#设置COM端口号 axocx.SmsService='+8613800100500'#设置短信服务号码 axocx.

Python Tkinter基础控件用法_python

本文实例展示了Python Tkinter基础控件的用法,分享给大家供大家参考之用.具体方法如下: # -*- coding: utf-8 -*- from Tkinter import * def btn_click(): b2['text'] = 'clicked' evalue = e.get() print 'btn Click and Entry value is %s' % evalue def btn_click_bind(event): print 'enter b2' def

Selenium2+python自动化25-js处理日历控件(修改readonly属性)

前言     日历控件是web网站上经常会遇到的一个场景,有些输入框是可以直接输入日期的,有些不能,以我们经常抢票的12306网站为例,详细讲解如何解决日历控件为readonly属性的问题.     基本思路:先用js去掉readonly属性,然后直接输入日期文本内容 一.日历控件     1.打开12306的车票查询界面,在出发日期输入框无法直接输入时间     2.常规思路是点开日历控件弹出框,从日历控件上点日期,这样操作比较烦躁,并且我们测试的重点不在日历控件上,只是想输入个时间,做下一步

boa constructor里的palette面板中怎么没有控件选择?

问题描述 使用boa constructo 新建了wx.app,里面也包含frame.但是boa constructo里的palette面板中就是没有各种能拖放的控件,郁闷.直接运行新建的程序,能够显示一个frame,不知道开发环境哪里配错了,还是小弟操作有什么错误.如图这是我电脑的软件环境:Windows 7 旗舰版 32位Python 2.6.5wxPython 2.8.10.1Boa Constructor 0.6.1感激~ 问题补充:jimmykuu 写道 解决方案 不知道,最好使用源码

[转]利用ASP.NET 2.0创建自定义Web控件(2)

原址:http://hi.baidu.com/sjbh/blog/item/5a8298454403a321cffca39c.html   如何生成的? Render() 方法基本上控制着 WebControl 的整个输出.默认情况下,Render() 方法实际上会依次调用 RenderBeginTag().RenderContents() 以及 RenderEndTag().尽管在 ASP.NET 1.x 中调用结构并未变化,但由于该呈现模型,修改这些调用的影响却发生了变化. 您可以覆盖 Re

ASP.Net分页控件发布

asp.net|分页|控件 由于.net自带的分页功能极其死板,自定义性不强不能满足需求,俺花了一个多星期的时间 写成的一个.net分页控件. 特性: 1.支持datagrid,datalist等分种数据显示控件,理论上只要有datasource的控件都可以 2.支持url方式分页,url分页的每一页都可以被搜索引擎搜到,并且支持url重写 3.控件样式可自定义 4.封装完全,使用过程序只需写一行代码   1 /******************************************

ASP.NET 2.0的新增服务、控件与功能

asp.net|控件 [导读]全文介绍了ASP.NET 2.0中新增的控件和功能,包括Master Pages,Data Source控件.Skin的支持.GridView和Details View的引入,在此基础上,ASP.NET 2.0的安全模型得到了极大的提高,包括登录控件.角色管理器.个性化等等方面的支持,在类库方面也增加了许多新特性,如全新的代码分隔模型.客户端回调等等,让读者对于ASP.NET的新特性有一个全面的了解. 在首次公诸于众以来的短短四年中,ASP.NET业已成为在Wind