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 相关文章推荐
使用PDB简单调试Python程序简明指南
Apr 25 Python
python开发中module模块用法实例分析
Nov 12 Python
Python爬虫利用cookie实现模拟登陆实例详解
Jan 12 Python
python实现八大排序算法(1)
Sep 14 Python
Python爬虫_城市公交、地铁站点和线路数据采集实例
Jan 10 Python
JS设计模式之责任链模式实例详解
Feb 03 Python
python3.4.3下逐行读入txt文本并去重的方法
Apr 29 Python
PyCharm搭建Spark开发环境实现第一个pyspark程序
Jun 13 Python
在服务器上安装python3.8.2环境的教程详解
Apr 26 Python
如何基于Python代码实现高精度免费OCR工具
Jun 18 Python
基于python实现可视化生成二维码工具
Jul 08 Python
详解python中GPU版本的opencv常用方法介绍
Jul 24 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
安健A254立体声随身听的分析与打磨
2021/03/02 无线电
PHP实现Socket服务器的代码
2008/04/03 PHP
php读取30天之内的根据算法排序的代码
2008/04/06 PHP
php使用GeoIP库实例
2014/06/27 PHP
PHP 魔术变量和魔术函数详解
2015/02/25 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
JavaScript 异步调用框架 (Part 5 - 链式实现)
2009/08/04 Javascript
根据IP的地址,区分不同的地区,查看不同的网站页面的js代码
2013/02/26 Javascript
JQuery制作的放大效果的popup对话框(未添加任何jquery plugin)分享
2013/04/28 Javascript
可选择和输入的下拉列表框示例
2013/11/05 Javascript
js处理php输出时间戳对不上号的解决方法
2014/06/20 Javascript
jQuery中closest和parents的区别分析
2015/05/07 Javascript
比较常见的javascript中定义函数的区别
2015/11/09 Javascript
Angular 应用技巧总结
2016/09/14 Javascript
使用jquery如何获取时间
2016/10/13 Javascript
JavaScript实现星级评分
2017/01/12 Javascript
Vue2.x中的父子组件相互通信的实现方法
2017/05/02 Javascript
10个最优秀的Node.js MVC框架
2017/08/24 Javascript
从Vuex中取出数组赋值给新的数组,新数组push时报错的解决方法
2018/09/18 Javascript
vue中el-upload上传图片到七牛的示例代码
2018/10/19 Javascript
JS实现数组去重及数组内对象去重功能示例
2019/02/02 Javascript
Javascript原生ajax请求代码实例
2020/02/20 Javascript
详细介绍Python函数中的默认参数
2015/03/30 Python
Python最基本的输入输出详解
2015/04/25 Python
Python图像处理之识别图像中的文字(实例讲解)
2018/05/10 Python
Centos下实现安装Python3.6和Python2共存
2018/08/15 Python
解决Python中list里的中文输出到html模板里的问题
2018/12/17 Python
Python Matplotlib实现三维数据的散点图绘制
2019/03/19 Python
在macOS上搭建python环境的实现方法
2019/08/13 Python
浅谈TensorFlow中读取图像数据的三种方式
2020/06/30 Python
关于探究python中sys.argv时遇到的问题详解
2021/02/23 Python
中国汽车租赁行业头部企业:一嗨租车
2019/05/16 全球购物
外贸销售员求职的自我评价
2013/11/23 职场文书
校园运动会广播稿
2015/08/19 职场文书
学会掌握自己命运的十条黄金法则:
2019/08/08 职场文书
pytorch常用数据类型所占字节数对照表一览
2021/05/17 Python