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中正则表达式的详细教程
Apr 30 Python
python探索之BaseHTTPServer-实现Web服务器介绍
Oct 28 Python
解决python3中解压zip文件是文件名乱码的问题
Mar 22 Python
Django学习教程之静态文件的调用详解
May 08 Python
解决在Python编辑器pycharm中程序run正常debug错误的问题
Jan 17 Python
详解django2中关于时间处理策略
Mar 06 Python
python 自动轨迹绘制的实例代码
Jul 05 Python
python实现飞机大战项目
Mar 11 Python
python 子类调用父类的构造函数实例
Mar 12 Python
Python 读取位于包中的数据文件
Aug 07 Python
python工具——Mimesis的简单使用教程
Jan 16 Python
Python OpenCV超详细讲解基本功能
Apr 02 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 setcookie设置Cookie用法(及设置无效的问题)
2011/07/13 PHP
PHP实现数组递归转义的方法
2014/08/28 PHP
PHP读取文件内容的五种方式
2015/12/28 PHP
PHP中addslashes()和stripslashes()实现字符串转义和还原用法实例
2016/01/07 PHP
php实现三级级联下拉框
2016/04/17 PHP
php实现不通过扩展名准确判断文件类型的方法【finfo_file方法与二进制流】
2017/04/18 PHP
PHP设计模式之工厂模式详解
2017/10/24 PHP
laravel 模型查询按照whereIn排序的示例
2019/10/16 PHP
javascript 多种搜索引擎集成的页面实现代码
2010/01/02 Javascript
JavaScript性能优化 创建文档碎片(document.createDocumentFragment)
2010/07/13 Javascript
jquery使用ColorBox弹出图片组浏览层实例演示
2013/03/14 Javascript
jquery实现图片等比例缩放以及max-width在ie中不兼容解决
2013/03/21 Javascript
json格式的时间显示为正常年月日的方法
2013/09/08 Javascript
javascript对下拉列表框(select)的操作实例讲解
2013/11/29 Javascript
JavaScript伸缩的菜单简单示例
2013/12/03 Javascript
网页收藏夹显示ICO图标(代码少)
2015/08/04 Javascript
BOM系列第三篇之定时器应用(时钟、倒计时、秒表和闹钟)
2016/08/17 Javascript
那些精彩的JavaScript代码片段
2017/01/12 Javascript
Vue动态实现评分效果
2017/05/24 Javascript
JS基于for语句编写的九九乘法表示例
2018/01/04 Javascript
Python入门篇之编程习惯与特点
2014/10/17 Python
对于Python异常处理慎用“except:pass”建议
2015/04/02 Python
深入浅析python with语句简介
2018/04/11 Python
python读取excel指定列数据并写入到新的excel方法
2018/07/10 Python
Python类装饰器实现方法详解
2018/12/21 Python
详解Python字典的操作
2019/03/04 Python
python 爬虫 实现增量去重和定时爬取实例
2020/02/28 Python
Python urllib2运行过程原理解析
2020/06/04 Python
美国体育用品商店:Rally House(NCAA、NFL、MLB、NBA、NHL和MLS)
2018/01/03 全球购物
在C语言中"指针和数组等价"到底是什么意思?
2014/03/24 面试题
文化建设工作方案
2014/05/12 职场文书
2014年财政局工作总结
2014/12/09 职场文书
廉洁自律承诺书2015
2015/01/22 职场文书
初中生活随笔
2015/08/15 职场文书
go语言基础 seek光标位置os包的使用
2021/05/09 Golang
pytorch 两个GPU同时训练的解决方案
2021/06/01 Python