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、lambda介绍
Apr 14 Python
部署Python的框架下的web app的详细教程
Apr 30 Python
在Python中使用AOP实现Redis缓存示例
Jul 11 Python
python正则表达式及使用正则表达式的例子
Jan 22 Python
详解Python基础random模块随机数的生成
Mar 23 Python
Python 给屏幕打印信息加上颜色的实现方法
Apr 24 Python
Python3.8中使用f-strings调试
May 22 Python
对PyQt5基本窗口控件 QMainWindow的使用详解
Jun 19 Python
dpn网络的pytorch实现方式
Jan 14 Python
Python调用Windows命令打印文件
Feb 07 Python
python程序输出无内容的解决方式
Apr 09 Python
python数字转对应中文的方法总结
Aug 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
使用Codeigniter重写insert的方法(推荐)
2017/03/23 PHP
PHP+jQuery实现滚屏无刷新动态加载数据功能详解
2017/05/04 PHP
PHP编程计算两个时间段是否有交集的实现方法(不算边界重叠)
2017/05/30 PHP
document.getElementById介绍
2011/09/13 Javascript
javascript开发随笔一 preventDefault的必要
2011/11/25 Javascript
Javascript生成json的函数代码(可以用php的json_decode解码)
2012/06/11 Javascript
JavaScript中将一个值转换为字符串的方法分析[译]
2012/09/21 Javascript
jquery获取table中的某行全部td的内容方法
2013/03/08 Javascript
网页运行时提示对象不支持abigimage属性或方法
2014/08/10 Javascript
JavaScript将DOM事件处理程序封装为event.js 出现的低级错误问题
2016/08/03 Javascript
jQuery为DOM动态追加事件的方法
2017/02/16 Javascript
socket.io学习教程之基础介绍(一)
2017/04/29 Javascript
AngularJS实用基础知识_入门必备篇(推荐)
2017/07/10 Javascript
利用JS hash制作单页Web应用的方法详解
2017/10/10 Javascript
Vue 框架之动态绑定 css 样式实例分析
2018/11/14 Javascript
关于vue状态过渡transition不起作用的原因解决
2019/04/09 Javascript
vue引入微信sdk 实现分享朋友圈获取地理位置功能
2019/07/04 Javascript
Vue常用API、高级API的相关总结
2021/02/02 Vue.js
[02:28]PWL开团时刻DAY3——Ink Ice与DeMonsTer之间的勾心斗角
2020/11/03 DOTA
Python字符串的encode与decode研究心得乱码问题解决方法
2009/03/23 Python
Flask框架学习笔记之使用Flask实现表单开发详解
2019/08/12 Python
Python可变对象与不可变对象原理解析
2020/02/25 Python
python代码实现TSNE降维数据可视化教程
2020/02/28 Python
python实现TCP文件传输
2020/03/20 Python
基于Python的接口自动化unittest测试框架和ddt数据驱动详解
2021/01/27 Python
用HTML5制作烟火效果的教程
2015/05/12 HTML / CSS
Europcar葡萄牙:葡萄牙汽车和货车租赁
2017/10/13 全球购物
财务人员的自我评价范文
2014/03/03 职场文书
《欢乐的泼水节》教学反思
2014/04/22 职场文书
企业宣传口号
2014/06/12 职场文书
2015年世界艾滋病日活动总结
2015/03/24 职场文书
2015年七夕爱情寄语
2015/03/24 职场文书
2015年行政人事部工作总结
2015/05/13 职场文书
一封真诚的自荐信帮你赢得机会
2019/05/07 职场文书
css 边框添加四个角的实现代码
2021/10/16 HTML / CSS
使用Apache Camel表达REST服务的方法
2022/06/10 Servers