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_())

(0)

相关推荐

  • android教程之intent的action属性使用示例(intent发短信)

    Action :规定了Intent要完成的动作,是一个字符串常量.使用setAction()来设置Action属性,使用getAction()来获得Action属性.既可以使用系统内置的Action,也可以自己定义.系统自定义的action,如ACTION_VIEW, ACTION_EDIT, ACTION_MAIN等等. 1.自定义Action 在"目的Activity"的AndroidManifest.xml中指定action常量. 复制代码 代码如下: <activity

  • java调用短信猫发短信示例

    具体的操作步骤如下:1.把smslib-3.3.0b2.jar.comm.jar与log4j-1.2.11.jar,放入到工程的lib中:2.把javax.comm.properties放到%JAVA_HOME%/jre/lib下:3.把win32com.dll放到%JAVA_HOME%/jre/bin下:4  把comm.jar放到%JAVA_HOME%/jre/ext下注意:路径放错,调用起来就会报错:JDK的版本,用的版本是jdk-1_5_0_04. 复制代码 代码如下: ackage c

  • 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.

  • android开发基础教程—打电话发短信

    打电话发短信demo 复制代码 代码如下: public class MainActivity extends Activity { EditText mPhoneNum,mMessage; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mPhoneNum=(Edit

  • asp实现新评论自动发短信提示的代码

    我很想自己写一个这样的程序,不过wordpress是php的,我blog是ASP的,只好用ASP写代码了.经过一番折腾测试,终于让我的梦想变为现实. 程序的流程是这样的,当有人发表评论的时候就会把那条评论发到我手机上,是通过过一个网站的api接口实现信息发送的,其实就是飞信的api.飞信不是可以自己发信息给自己吗?原理其实很简单. 提醒:你手机必须开通飞信功能. 例子: ====A.ASP==== 复制代码 代码如下: <FORM name="form2" action=&quo

  • asp.net调用飞信免费发短信(测试有效)

    复制代码 代码如下: #region 免费发送飞们接口(2014-01-06 16:20测试有效) /// <summary> /// 免费发送飞们接口(要开通飞信把对方加为好友才能发,也可以给自己发做测试) /// </summary> /// <param name="sendNumber">登陆飞信手机号</param> /// <param name="sendPassword">登陆密码</

  • python实现360皮肤按钮控件示例

    复制代码 代码如下: #!/usr/bin/python  #-*-coding:utf-8-*- from PyQt4.QtGui import *from PyQt4.QtCore import *from PyQt4.Qt import * class ChangeSkinWidget(QWidget): def __init__(self,parent = None):  super(ChangeSkinWidget,self).__init__(parent)  self.setFix

  • 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) 

  • Python GUI编程学习笔记之tkinter控件的介绍及基本使用方法详解

    本文实例讲述了Python GUI编程学习笔记之tkinter控件的介绍及基本使用方法.分享给大家供大家参考,具体如下: 相关内容: tkinter的使用 1.模块的导入 2.使用 3.控件介绍 Tk Button Label Frame Toplevel Menu Menubutton Canvas Entry Message Text Listbox Checkbutton Radiobutton Scale Scrollbar 首发时间:2018-03-04 16:39 Python的GU

  • Python GUI库PyQt5样式QSS子控件介绍

    QSS子控件 QSS子控件实际上也是一种选择器,其应用在一些复合控件上,典型的如QComboBox,该控件的外观是,有一个矩形的外边框,右边有一个下拉箭头,点击之后会弹出下拉列表,例如: QComboBox:drop-down {image:url(dropdown.png)} 上面的样式指定所有的QComboBox下拉箭头的图片是自定义的,图片文件为dropdown.png ::drop-down子控件选择器可以与上面提到到的选择器一起联合使用,例如 QComboBox#myQComboBox

  • Python中Django 后台自定义表单控件

    在 django 中我们可以在 admin.py 中添加 ModelAdmin,这样就能很方便地在后台进行增删改查的操作.然而,对应 Model 生成的表单,并不友好,我们希望能像前端开发一样做出各种类型的控件,这就得对其后台的表单进行自定义. 其实 django 已经为我们提供了一些可用的表单控件,比如:多选框.单选按钮等,下面就以单选按钮为例: # forms.py from django import forms from .models import MyModel class MyFo

  • python图形界面开发之wxPython树控件使用方法详解

    wxPython树控件介绍 树(tree)是一种通过层次结构展示信息的控件,如下图所示是树控件示例,左窗口中是树控件,在wxPython中树控件类是wx.TreeCtrl. wx.TreeCtrl常用的方法有 AddRoot(text, image=-1, selImage=-1, data=None).添加根节点,text参数根节点显示的文本:image参数是该节点未被选中时的图片索引,wx.TreeCtrl中使用的图片被放到wx.ImageList图像列表中:selImage参数是该节点被选

  • python使用PySimpleGUI设置进度条及控件使用

    PySimpleGUI 使用起来感觉比tkinter要方便,当然我也没怎么用过这两者.只是学习模拟一下任务进度完成情况. 安装 pip install PySimpleGUI 一.简单进度条使用 PySimpleGUI有一个一条命令即可展示进度条的控件.one_line_progress_meter import time import PySimpleGUI as sg if __name__ == '__main__': sg.one_line_progress_meter('进度条标题',

  • Android控件Tween动画(补间动画)实现方法示例

    本文实例讲述了Android控件Tween动画(补间动画)实现方法.分享给大家供大家参考,具体如下: Android动画中的Tween动画:是把控件对象不断的进行图像变化来产生旋转.平移.放缩和渐变等动画效果. /** * 控件Tween动画 * * @description: * @author ldm * @date 2016-6-22 下午5:26:24 */ public class TweenActivity extends Activity { private SeekBar see

  • python使用pyqt写带界面工具的示例代码

    上篇介绍的使用python自带tkinter包,来写带界面的工具. 此篇介绍使用pyqt来开发测试工具. tkinter的好处是python官方自带,上手容易(但手写控件复杂),布局和摆放都不直观和容易,因为是像素坐标定位,需要花较长时间在界面开发上.pyqt是第三方gui开发工具,是目前公认的python上最好的客户端界面开发工具,因为控件是通过qt设计师的手动拖拽,调整颜色 字体 大小等样式也很简单,不需要去代码层面来写大量界面代码,真正的所见即所得. 学习pyqt需要安装这些文件,pyqt

  • python之PyQt按钮右键菜单功能的实现代码

    实现效果如下图: 这篇文字主要写了两方面的内容: 第一是按钮的自定义,第二是右键菜单的使用,不仅是按钮的右键菜单,其他一些控件的右键菜单也可以类似创建和使用. 关于右键菜单则是QMenu的一些使用方法有: 样式表的使用: self.setStyleSheet("QMenu{background:purple;}" "QMenu{border:1px solid lightgray;}" "QMenu{border-color:green;}" &

随机推荐