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第三方库的安装方法总结
Jun 06 Python
用pickle存储Python的原生对象方法
Apr 28 Python
python僵尸进程产生的原因
Jul 21 Python
python 随机数使用方法,推导以及字符串,双色球小程序实例
Sep 12 Python
python实现人民币大写转换
Jun 20 Python
在win10和linux上分别安装Python虚拟环境的方法步骤
May 09 Python
python对接ihuyi实现短信验证码发送
May 10 Python
Pycharm安装并配置jupyter notebook的实现
May 18 Python
基于python和flask实现http接口过程解析
Jun 15 Python
Pycharm编辑器功能之代码折叠效果的实现代码
Oct 15 Python
python uuid生成唯一id或str的最简单案例
Jan 13 Python
Python中使用Selenium环境安装的方法步骤
Feb 22 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实现Session入库/存入redis的方法
2017/05/04 PHP
分享别人写的一个小型js框架
2007/08/13 Javascript
JS 无法通过W3C验证的处理方法
2010/03/09 Javascript
关于jquery动态增减控件的一些想法和小插件
2010/08/01 Javascript
dojo学习第一天 Tab选项卡 实现
2011/08/28 Javascript
js获得当前时区夏令时发生和终止的时间代码
2014/02/23 Javascript
select隐藏选中值对应的id,显示其它id的简单实现方法
2016/08/25 Javascript
JavaScript中常用的验证reg
2016/10/13 Javascript
Node.js中路径处理模块path详解
2016/11/14 Javascript
Node.js学习入门
2017/01/03 Javascript
详解Vue自定义过滤器的实现
2017/01/10 Javascript
jq给页面添加覆盖层遮罩的实例
2017/02/16 Javascript
使用express来代理服务的方法
2019/06/21 Javascript
Python中的exec、eval使用实例
2014/09/23 Python
Python设置默认编码为utf8的方法
2016/07/01 Python
python获取代理IP的实例分享
2018/05/07 Python
python利用smtplib实现QQ邮箱发送邮件
2020/05/20 Python
python中的插值 scipy-interp的实现代码
2018/07/23 Python
利用nohup来开启python文件的方法
2019/01/14 Python
ActiveMQ:使用Python访问ActiveMQ的方法
2019/01/30 Python
Python faker生成器生成虚拟数据代码实例
2020/07/20 Python
HTML5全屏(Fullscreen)API详细介绍
2015/04/24 HTML / CSS
星空联盟C# .net笔试题
2014/12/05 面试题
求职简历中的自我评价分享
2013/12/08 职场文书
语文教学感言
2014/02/06 职场文书
《临死前的严监生》教学反思
2014/02/13 职场文书
C++程序员求职信范文
2014/04/14 职场文书
2015年创先争优活动总结
2015/03/27 职场文书
消防隐患整改通知书
2015/04/22 职场文书
第二次离婚起诉书
2015/05/18 职场文书
朋友聚会开场白
2015/06/01 职场文书
入党自传范文2015
2015/06/26 职场文书
公司员工培训管理制度
2015/08/04 职场文书
祝福语集锦:给满月宝宝的祝福语
2019/11/20 职场文书
python缺失值的解决方法总结
2021/06/09 Python
CSS实现两列布局的N种方法
2021/08/02 HTML / CSS