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安装以及IDE的配置教程
Apr 29 Python
解决Python中字符串和数字拼接报错的方法
Oct 23 Python
python导入时小括号大作用
Jan 10 Python
Python中的Django基本命令实例详解
Jul 15 Python
基于Python的PIL库学习详解
May 10 Python
python 求一个列表中所有元素的乘积实例
Jun 11 Python
python networkx 根据图的权重画图实现
Jul 10 Python
Python3视频转字符动画的实例代码
Aug 29 Python
Python脚本实现监听服务器的思路代码详解
May 28 Python
Python自动发送和收取邮件的方法
Aug 12 Python
浅谈Selenium+Webdriver 常用的元素定位方式
Jan 13 Python
Django集成富文本编辑器summernote的实现步骤
May 31 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
Windows IIS PHP 5.2 安装与配置方法
2009/06/08 PHP
php cc攻击代码与防范方法
2012/10/18 PHP
PHP小技巧之JS和CSS优化工具Minify的使用方法
2014/05/19 PHP
php遍历数组的4种方法总结
2014/07/05 PHP
Swoole 5将移除自动添加Event::wait()特性详解
2019/07/10 PHP
PHP的Trait机制原理与用法分析
2019/10/18 PHP
js类中获取外部函数名的方法
2007/08/19 Javascript
通过event对象的fromElement属性解决热区设置主实体的一个bug
2008/12/22 Javascript
jquery ajax 登录验证实现代码
2009/09/23 Javascript
js post方式传递提交的实现代码
2010/05/31 Javascript
原生JS实现表单checkbook获取已选择的值
2013/07/21 Javascript
判断javascript的数据类型(示例代码)
2013/12/11 Javascript
jQuery实现鼠标经过图片预览大图效果
2014/04/10 Javascript
浅谈 javascript 事件处理
2015/01/04 Javascript
利用原生js实现html5小游戏之打砖块(附源码)
2018/01/03 Javascript
[01:02]DOTA2辉夜杯决赛日 CDEC.Y对阵VG赛前花絮
2015/12/27 DOTA
[01:43]深扒TI7聊天轮盘语音出处4
2017/05/11 DOTA
[38:39]完美世界DOTA2联赛循环赛 IO vs GXR BO2第二场 11.04
2020/11/05 DOTA
linux系统使用python监测系统负载脚本分享
2014/01/15 Python
100行Python代码实现自动抢火车票(附源码)
2018/01/11 Python
Python matplotlib学习笔记之坐标轴范围
2019/06/28 Python
Python循环实现n的全排列功能
2019/09/16 Python
Tensorflow训练模型越来越慢的2种解决方案
2020/02/07 Python
浅谈spring boot 集成 log4j 解决与logback冲突的问题
2020/02/20 Python
Python实现转换图片背景颜色代码
2020/04/30 Python
AmazeUI 列表的实现示例
2020/08/17 HTML / CSS
Engel & Bengel官网:婴儿推车、儿童房家具和婴儿设备
2019/12/28 全球购物
保安员岗位职责
2013/11/17 职场文书
初中生物教学反思
2014/01/10 职场文书
幼儿园门卫岗位职责
2014/02/14 职场文书
教师年度考核评语
2014/04/28 职场文书
校园广播稿100字
2014/10/06 职场文书
党员评议思想汇报
2014/10/08 职场文书
意向协议书
2015/01/27 职场文书
学校勤俭节约倡议书
2015/04/29 职场文书
2016年优秀党务工作者先进事迹材料
2016/02/29 职场文书