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


Posted in Python onFebruary 21, 2014
#!/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.setFixedSize(140, 160)
  self.mouse_press = False
  self.mouse_enter = False
  #self.pixmap = QPixmap()
  self.pixmap_name = ""
  self.skin_label =  QLabel() #显示皮肤
  self.skin_name_label =  QLabel() #显示皮肤名称
  self.download_count_label =  QLabel() #显示下载次数
  self.use_skin_button =  QPushButton() #使用此皮肤按钮
  self.setCursor(Qt.PointingHandCursor)
  self.use_skin_button.setStyleSheet("border-radius:3px border:1px solid rgb(180, 190, 200) color:rgb(70, 70, 70) background:transparent")
  self.skin_label.setScaledContents(True)
  self.skin_label.setFixedSize(100, 65)
  self.use_skin_button.setFixedSize(85, 25)
  self.background_layout =  QVBoxLayout()
  self.background_layout.addWidget(self.skin_label, 0, Qt.AlignCenter)
  self.background_layout.addWidget(self.skin_name_label, 0, Qt.AlignCenter)
  self.background_layout.addWidget(self.download_count_label, 0, Qt.AlignCenter)
  self.background_layout.addWidget(self.use_skin_button, 0, Qt.AlignCenter)
  self.background_layout.setSpacing(5)
  self.background_layout.setContentsMargins(0, 10, 0, 10)
  self.setLayout(self.background_layout)
  self.skin.connect(self.changeSkin)
  self.translateLanguage()
 skin = pyqtSignal()
 def changeSkin(self, pixmap_name,  skin_name,  download_count):
  self.background_name = pixmap_name + "_big.png"
  self.pixmap_name = self.background_name
 #更改皮肤背景
  #self.pixmap()
  self.skin_label.setPixmap(QPixmap(self.background_name))
 #更改皮肤名称
  self.skin_name_label.setText(skin_name)
 #更改下载次数
  self.download_count_label.setText(u"download count:" + download_count)
 def translateLanguage(self):
  self.use_skin_button.setText(u"use skin")
 def paintEvent(self,event):
  if(self.mouse_enter):
   #绘制边框
   painter = QPainter(self)
   pen = QPen(QColor(210, 225, 230))
   painter.setPen(pen)
   painter.drawRoundRect(0,0,self.width()-1, self.height()-1, 5, 5)
 def mousePressEvent(self,event):
  #只能是鼠标左键移动和改变大小
  if(event.button() == Qt.LeftButton):
   self.mouse_press = True
   self.emit(SIGNAL("skin"),self.pixmap_name)
 def mouseReleaseEvent(self,event):
  self.mouse_press = False
 def enterEvent(self,event):
  self.mouse_enter = True
  self.update()
 def leaveEvent(self,event):
  self.mouse_enter = False
  self.update()
if __name__ == '__main__':
 import sys
 app = QApplication(sys.argv)
 skin = ChangeSkinWidget()
 skin.show()
 sys.exit(app.exec_())
Python 相关文章推荐
Python内置函数之filter map reduce介绍
Nov 30 Python
Python 专题三 字符串的基础知识
Mar 19 Python
Django 使用logging打印日志的实例
Apr 28 Python
python 实时得到cpu和内存的使用情况方法
Jun 11 Python
对pytorch网络层结构的数组化详解
Dec 08 Python
Python3enumrate和range对比及示例详解
Jul 13 Python
Python Pandas对缺失值的处理方法
Sep 27 Python
解决pycharm中导入自己写的.py函数出错问题
Feb 12 Python
python使用docx模块读写docx文件的方法与docx模块常用方法详解
Feb 17 Python
PyTorch在Windows环境搭建的方法步骤
May 12 Python
Python Opencv轮廓常用操作代码实例解析
Sep 01 Python
Numpy ndarray 多维数组对象的使用
Feb 10 Python
python实现360的字符显示界面
Feb 21 #Python
python和pyqt实现360的CLable控件
Feb 21 #Python
python使用7z解压软件备份文件脚本分享
Feb 21 #Python
python发布模块的步骤分享
Feb 21 #Python
python列表操作使用示例分享
Feb 21 #Python
使用python统计文件行数示例分享
Feb 21 #Python
python 多进程通信模块的简单实现
Feb 20 #Python
You might like
php echo, print, print_r, sprintf, var_dump, var_expor的使用区别
2013/06/20 PHP
php版阿里云OSS图片上传类详解
2016/12/01 PHP
Yii2压缩PHP中模板代码的输出问题
2018/08/28 PHP
微信公众平台开发教程⑥ 微信开发集成类的使用图文详解
2019/04/10 PHP
php远程请求CURL实例教程(爬虫、保存登录状态)
2020/12/10 PHP
javaScript checkbox 全选/反选及批量删除
2010/04/28 Javascript
Prototype源码浅析 String部分(四)之补充
2012/01/16 Javascript
Jquery 数据选择插件Pickerbox使用介绍
2012/08/24 Javascript
Javascript获取HTML静态页面参数传递值示例
2013/08/18 Javascript
字段太多jquey快速清空表单内容方法
2014/08/21 Javascript
Jquery实现兼容各大浏览器的Enter回车切换输入焦点的方法
2014/09/01 Javascript
基于jQuery实现的双11天猫拆红包抽奖效果
2015/12/01 Javascript
快速掌握WordPress中加载JavaScript脚本的方法
2015/12/17 Javascript
AngularJS 实现弹性盒子布局的方法
2016/08/30 Javascript
详解node.js平台下Express的session与cookie模块包的配置
2017/04/26 Javascript
微信小程序实现页面跳转传值的方法
2017/10/12 Javascript
详解vue 计算属性与方法跟侦听器区别(面试考点)
2018/04/23 Javascript
详解微信小程序中组件通讯
2018/10/30 Javascript
详解在create-react-app使用less与antd按需加载
2018/12/06 Javascript
如何正确理解vue中的key详解
2019/11/02 Javascript
jQuery实现移动端笔触canvas电子签名
2020/05/21 jQuery
解决Vue watch里调用方法的坑
2020/11/07 Javascript
windows下Python实现将pdf文件转化为png格式图片的方法
2017/07/21 Python
Python 中 Virtualenv 和 pip 的简单用法详解
2017/08/18 Python
轻松实现TensorFlow微信跳一跳的AI
2018/01/05 Python
PyTorch搭建一维线性回归模型(二)
2019/05/22 Python
NumPy中的维度Axis详解
2019/11/26 Python
python不同系统中打开方法
2020/06/23 Python
Python tkinter界面实现历史天气查询的示例代码
2020/08/23 Python
公司贷款承诺书
2014/05/30 职场文书
工作失误检讨书范文
2015/01/26 职场文书
2016年大学生暑期社会实践方案
2015/11/26 职场文书
python 如何用map()函数创建多线程任务
2021/04/07 Python
Python机器学习三大件之一numpy
2021/05/10 Python
Kubernetes中Deployment的升级与回滚
2022/04/01 Servers
CSS元素定位之通过元素的标签或者元素的id、class属性定位详解
2022/09/23 HTML / CSS