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 相关文章推荐
仅利用30行Python代码来展示X算法
Apr 01 Python
Python使用Matplotlib实现雨点图动画效果的方法
Dec 23 Python
wtfPython—Python中一组有趣微妙的代码【收藏】
Aug 31 Python
python3 实现一行输入,空格隔开的示例
Nov 14 Python
Python----数据预处理代码实例
Mar 20 Python
Python装饰器限制函数运行时间超时则退出执行
Apr 09 Python
ubuntu 16.04下python版本切换的方法
Jun 14 Python
python中resample函数实现重采样和降采样代码
Feb 25 Python
Python爬取365好书中小说代码实例
Feb 28 Python
Django框架静态文件处理、中间件、上传文件操作实例详解
Feb 29 Python
将pycharm配置为matlab或者spyder的用法说明
Jun 08 Python
虚拟机下载python是否需要联网
Jul 27 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
桌面中心(三)修改数据库
2006/10/09 PHP
如何用php获取程序执行的时间
2013/06/09 PHP
PHP图片等比例缩放生成缩略图函数分享
2014/06/10 PHP
PHP人民币金额转大写实例代码
2015/10/02 PHP
PHP之图片上传类实例代码(加了缩略图)
2016/06/30 PHP
php 如何禁用eval() 函数实例详解
2016/12/01 PHP
Thinkphp结合ajaxFileUpload实现异步图片传输示例
2017/03/13 PHP
js removeChild 障眼法 可能出现的错误
2009/10/06 Javascript
javascript中利用数组实现的循环队列代码
2010/01/24 Javascript
一个级联菜单代码学习及removeClass与addClass的应用
2013/01/24 Javascript
jQuery实现的一个自定义Placeholder属性插件
2014/08/11 Javascript
浅谈Javascript中substr和substring的区别
2015/09/30 Javascript
JS实现的多张图片轮流播放幻灯片效果
2016/07/22 Javascript
Select下拉框模糊查询功能实现代码
2016/07/22 Javascript
Bootstrap页面缩小变形的快速解决办法
2017/02/03 Javascript
vue基于Vue2.0和高德地图的地图组件实例
2017/04/28 Javascript
详解webpack 配合babel 将es6转成es5 超简单实例
2017/05/02 Javascript
JS解析后台返回的JSON格式数据实例
2018/08/06 Javascript
浅谈微信JS-SDK 微信分享接口开发(介绍版)
2018/08/15 Javascript
基于js实现逐步显示文字输出代码实例
2020/04/02 Javascript
全面解析Vue中的$nextTick
2020/12/24 Vue.js
Python中MySQL数据迁移到MongoDB脚本的方法
2016/04/28 Python
Python3标准库之threading进程中管理并发操作方法
2020/03/30 Python
Python监听键盘和鼠标事件的示例代码
2020/11/18 Python
python中reload重载实例用法
2020/12/15 Python
Python3中对json格式数据的分析处理
2021/01/28 Python
美赞臣营养马来西亚旗舰店:Enfagrow马来西亚
2019/07/26 全球购物
八一建军节感言
2014/02/28 职场文书
如何写一份好的英文求职信
2014/03/19 职场文书
2014年文学毕业生自我鉴定
2014/04/23 职场文书
小学运动会加油词
2015/07/18 职场文书
2015年工商局个人工作总结
2015/07/23 职场文书
感恩教育主题班会
2015/08/12 职场文书
《好妈妈胜过好老师》:每个孩子的优秀都是有源头的
2020/01/03 职场文书
Mysql实现主从配置和多主多从配置
2021/06/02 MySQL
JavaScript 对象创建的3种方法
2021/11/17 Javascript