复制代码代码如下:

#!/usr/bin/python

#-*-coding:utf-8-*-

from push_button import *

from clabel import *

from common import *

from PyQt4.QtGui import *

from PyQt4.QtCore import *

from PyQt4.Qt import *

class CharacterWidget(QWidget):

def __init__(self,parent = None):

super(CharacterWidget,self).__init__()

self.mouse_press = False

self.mouse_move = False

self.current_index = 0 #当前图片下标

self.current_pos_x = 0

#self.name_list = QStringList()

self.m_mouseSrcPos = QPoint()

self.m_mouseDstPos = QPoint()

self.label_move = False

self.label_array = [CLabel(),CLabel(),CLabel(),CLabel()] #存储图片的数组

self.resize(QSize(WINDOW_WIDTH, WINDOW_HEIGHT))

self.setWindowFlags(Qt.FramelessWindowHint)

self.background_label = QLabel(self) #背景图片

self.background_label.setPixmap(QPixmap("./img/Character/bg_bottom.png"))

self.background_label.setGeometry(QRect(0, 0, self.width(), self.height()))

#将4张图片合成一张

self.pixmap = QPixmap(QSize(self.width()*WINDOW_PAGE_COUNT, WINDOW_HEIGHT)) #

painter = QPainter(self.pixmap)

for i in range(WINDOW_PAGE_COUNT):

painter.drawImage(QRect(WINDOW_WIDTH*i, 0, WINDOW_WIDTH, WINDOW_HEIGHT),\

QImage(QString("./img/Character/desktop_%1").arg(i)))

self.total_label = QLabel(self) #图片(结合体)

self.total_label.resize(self.pixmap.size())

self.total_label.setPixmap(self.pixmap)

self.total_label.move(WINDOW_START_X, WINDOW_START_Y)

self.close_button = PushButton(self) #关闭按钮

self.translateLanguage()

for i in range(WINDOW_BUTTON_COUNT):

self.label = CLabel(self)

self.label.resize(QSize(155, 45))

self.label.setPixmap(QPixmap(QString("./img/Character/btn_%1").arg(i)))

self.label.setText(self.name_list[i])

self.label.move(8+i*170, 319)

self.connect(self.label, SIGNAL("clicked()"), self, SLOT("changeCurrentPage(CLabel())"))

self.label_array[i] = self.label

self.label_array[0].setMousePressFlag(False)

self.close_button.loadPixmap("./img/sysButton/close.png")

self.close_button.move(self.width()-52, 0)

self.connect(self.close_button, SIGNAL("clicked()"), self, SLOT("close()"))

def translateLanguage(self):

self.name_list= [u"function",u"clear cookie",u"triggerman",u"booster"]

self.close_button.setToolTip(u"close")

def mousePressEvent(self,event):

if(event.button() == Qt.LeftButton):

self.m_mouseSrcPos = event.pos()

if(self.m_mouseSrcPos.y() <= 40):

self.mouse_move = True

else:

self.current_pos_x = self.total_label.x()

self.mouse_press = True

elif(event.button() == Qt.RightButton):

if(self.label_move):

if(self.current_index > 0):

self.current_index = self.current_index-1

self.moveCurrentPage(False) #右移

def mouseReleaseEvent(self,event):

self.xpos = 0

if (self.mouse_press):

if (self.label_move):

self.m_mouseDstPos = event.pos()

self.xpos = self.m_mouseDstPos.x() - self.m_mouseSrcPos.x()

if(self.xpos > 0):#右移

if(self.xpos >= WINDOW_ONEBUTTON_WIDTH):

if(self.current_index > 0):

self.current_index = self.current_index-1

self.moveCurrentPage(False) #右移

else:

self.moveCurrentPage(True) #左移

else:

self.moveCurrentPage(True) #左移

else: #左移

if(self.xpos <= -WINDOW_ONEBUTTON_WIDTH):

if(self.current_index < WINDOW_PAGE_COUNT-1):

self.current_index = self.current_index+1

self.moveCurrentPage(True) #左移

else:

self.moveCurrentPage(False) #右移

else:

self.moveCurrentPage(False) #右移

self.mouse_press = False

elif(self.mouse_move):

self.mouse_move = False

def changeCurrentPage(label):

for i in range(WINDOW_BUTTON_COUNT):

if(label != self.label_array[i]):

self.label_array[i].setMousePressFlag(False)

#获取点击的图标下标

index = 0

for i in range(WINDOW_PAGE_COUNT):

if(label == self.label_array[i]):

index = i

return

#若下标小于当前下标右移,否则左移

if(index < self.current_index):

while(index != self.current_index):

self.current_index = self.current_index-1

self.moveCurrentPage(False)

elif(index > self.current_index):

while(index != self.current_index):

self.current_index = self.current_index+1

self.moveCurrentPage(True)

def mouseMoveEvent(self,event):

x = 10

if(self.mouse_press):

if(self.label_move):

self.m_mouseDstPos = event.pos()

x = self.m_mouseDstPos.x() - self.m_mouseSrcPos.x()

self.setLabelMove(False)

self.total_label.move(self.current_pos_x + x, WINDOW_START_Y)

self.setLabelMove(True)

elif(self.mouse_move):

self.m_mouseDstPos = event.pos()

self.move(event.pos() + self.m_mouseDstPos - self.m_mouseSrcPos) #注意debug

def keyPressEvent(self, e):

if(self.label_move):

if e.key() == Qt.Key_Left | e.key() == Qt.Key_Up:

if(self.current_index > 0):

self.current_index = self.current_index-1

self.moveCurrentPage(False) #右移

elif e.key() == Qt.Key_Down | e.key() == Qt.Key_Right:

if(self.current_index < WINDOW_PAGE_COUNT-1):

self.current_index = self.current_index + 1

self.moveCurrentPage(True) #左移

def moveCurrentPage(self,direction):

#改变当前页面对应的按钮

self.changeCurrentButton()

#图片的几个分割点

#0-680, 680-1360, 1360-2040, 2040-2720

#真:向左移 假:向右移

#左移的几种可能性,对于x坐标

#index=0, 将label移动到-680*0

#index=1, 将label移动到-680*1

#index=2, 将label移动到-680*2

#index=3, 将label移动到-680*3

self.setLabelMove(False)

self.current_pos_x = self.total_label.x() #当前label坐标

self.dest_pos_x = -WINDOW_WIDTH * self.current_index #目标X坐标

if(direction):

if(self.current_pos_x > self.dest_pos_x):

self.total_label.move(self.current_pos_x-WINDOW_PAGE_MOVE, WINDOW_START_Y)

self.current_pos_x = self.total_label.x()

qApp.processEvents(QEventLoop.AllEvents)

else:

if(self.current_pos_x < self.dest_pos_x):

self.total_label.move(self.current_pos_x+WINDOW_PAGE_MOVE, WINDOW_START_Y)

self.current_pos_x = self.total_label.x()

qApp.processEvents(QEventLoop.AllEvents)

self.total_label.move(self.dest_pos_x, WINDOW_START_Y)

self.setLabelMove(True)

def changeCurrentButton(self):

for i in range(WINDOW_BUTTON_COUNT):

if(i != self.current_index):

self.label_array[i].setMousePressFlag(False)

else:

self.label_array[i].setMousePressFlag(True)

def setLabelMove(self,enable):

self.label_move = enable

if __name__ == '__main__':

import sys

app = QApplication(sys.argv)

Character = CharacterWidget()

Character.show()

sys.exit(app.exec_())

您可能感兴趣的文章:

python和pyqt实现360的CLable控件

python实现360皮肤按钮控件示例

QQ空间 搜狐微博 人人网 开心网 百度搜藏更多

Tags:python 360 界面

复制链接收藏本文打印本文关闭本文返回首页

上一篇:python和pyqt实现360的CLable控件

下一篇:windows下wxPython开发环境安装与配置方法

相关文章

2014-01-01Python的函数嵌套的使用方法

2006-09-09Python入门教程 超详细1小时学会Python

2014-04-04使用python解析xml成对应的html示例分享

2013-12-12python模块restful使用方法实例

2008-09-09Python 可爱的大小写

2013-03-03python实现的各种排序算法代码

2014-06-06pycharm 使用心得(六)进行简单的数据库管理

2014-05-05python中xrange和range的区别

2014-02-02使用python装饰器验证配置文件示例

2014-02-02python类参数self使用示例

文章评论

最 近 更 新

从零学python系列之数据处理编程实例(二

python del()函数用法

python实现哈希表

python遍历文件夹并删除特定格式文件的示

python中使用OpenCV进行人脸检测的例子

python实现rest请求api示例

Flask框架学习笔记(一)安装篇(windows

下载安装setuptool和pip linux安装pip

2款Python内存检测工具介绍和使用方法

从零学Python之入门(四)运算

热 点 排 行

Python入门教程 超详细1小时学会

python 中文乱码问题深入分析

比较详细Python正则表达式操作指

Python字符串的encode与decode研

Python open读写文件实现脚本

Python enumerate遍历数组示例应

Python 深入理解yield

Python+Django在windows下的开发

python 文件和路径操作函数小结

python 字符串split的用法分享

python仿360界面_python实现360的字符显示界面 -电脑资料相关推荐

  1. python删除特定文件_python删除特定文件的方法 -电脑资料

    作者:技术芝麻点 字体:[增加 减小] 类型:转载 这篇文章主要介绍了python删除特定文件的方法,涉及Python文件查找及删除的相关技巧,需要的朋友可以参考下 本文实例讲述了python删除特定 ...

  2. python仿360界面_python实现360的字符显示界面

    python实现360的字符显示界面 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  python实现360的字符显示界面.txt ] (友情提示:右键点上行txt ...

  3. python 按钮控件_python实现360皮肤按钮控件示例

    python实现360皮肤按钮控件示例. 代码: #!/usr/bin/python #-*-coding:utf-8-*- #site www.jbxue.com from PyQt4.QtGui ...

  4. python 按钮控件_python实现360皮肤按钮控件实例

    复制代码 代码如下: #!/usr/bin/python #-*-coding:utf-8-*- from PyQt4.QtGui import * from PyQt4.QtCore import ...

  5. python编辑用户登录界面_python编辑用户登入界面的实现代码

    1.需求分析 登入界面需要达到以下要求: 系统要有登入和注册两个选项可供选择 系统要能够实现登入出错提示,比如账户密码错误等,用户信息保存在user_info.txt文件夹中 系统要能够进行登入错误次 ...

  6. python做一个登录注册界面_python做一个登录注册界面的方法

    python做一个登录注册界面的方法 发布时间:2020-08-21 10:37:05 来源:亿速云 阅读:111 作者:小新 这篇文章主要介绍python做一个登录注册界面的方法,文中介绍的非常详细 ...

  7. python制作窗口界面_python爬虫如何制作可视化界面?(pyqt5环境配置篇)

    却道天凉好个秋~ pyqt5+python+qtdesigner+pycharm制作一个可视化的GUI爬虫工具 前言: 最近闲来无聊又开始了py之路,这次需要的是制作一个贴吧的关键词搜索相关帖子的工具 ...

  8. python基于web可视化_Python Selenium实现无可视化界面

    有时候我们爬取网页数据,并不希望看其中的过程,只想看到最后的数据结果就可以了,这时候,***面就很有必要了! 代码如下 from selenium import webdriver from time ...

  9. python中gui实现一个登录界面_Python:简单的登陆GUI界面

    import tkinter import sys import re top = tkinter.Tk() top.geometry('400x170+350+150') top.wm_title( ...

最新文章

  1. Spark2.1.0之内置RPC框架
  2. java中获取时间的方式,持续更新
  3. React Native 的图片加载方式
  4. Node.js~在linux上的部署~外网不能访问node.js网站的解决方法
  5. python集合加个逗号_8.Python集合与字符串
  6. linux 读写时间变长,linux时钟变慢的原因分析【转】
  7. tf.while_loop
  8. 一篇博客读懂设计模式之---动态代理与反射
  9. 初学者内心最慌的问题:适不适合做一名码农(程序员)??
  10. Android_自定义控件样式
  11. 转:C++ map的基本操作和使用
  12. 谷歌浏览器插件 清除 CSDN广告
  13. Ms08067年度技术文集合
  14. Spss-多元回归案例实操
  15. 酷站60个漂亮可用的外文站点欣赏(经典推荐)
  16. 电脑鼠标右键菜单反应慢怎么办?右键菜单反应慢解决办法
  17. perl学习(4) 子程序
  18. Pycharm远程连接服务器来跑代码
  19. linux 安装toolchain工具
  20. 随机森林的java算法_spark 随机森林算法案例实战

热门文章

  1. HTML+CSS实战---------一个电商类的小型项目:品优购(三)
  2. Chrome浏览器命令行菜单实现图片页面保存
  3. 搬砖,真的是我第一次赚钱的经历!
  4. 全球最优秀的免费软件下载-压缩工具-文件转换工具-下载工具-杀毒工具-图片编辑器-网络管理工具...
  5. docker基础:非root用户操作并将数据目录进行nfs mount
  6. Java中文处理, 资源包后缀详解
  7. lrzsz linux安装包,linux 离线安装lrzsz
  8. QVariant vs VARIANT
  9. opendaylight apidoc/explorer/index.html打不开问题
  10. 不仅仅是安全设置?打开支付宝的这些服务,网友直呼太强了