#!/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() 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 if(self.current_index 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 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 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.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的灵活性体现在多范式支持和动态类型系统,易用性则源于语法简洁和丰富的标准库。1.灵活性:支持面向对象、函数式和过程式编程,动态类型系统提高开发效率。2.易用性:语法接近自然语言,标准库涵盖广泛功能,简化开发过程。

Python因其简洁与强大而备受青睐,适用于从初学者到高级开发者的各种需求。其多功能性体现在:1)易学易用,语法简单;2)丰富的库和框架,如NumPy、Pandas等;3)跨平台支持,可在多种操作系统上运行;4)适合脚本和自动化任务,提升工作效率。

可以,在每天花费两个小时的时间内学会Python。1.制定合理的学习计划,2.选择合适的学习资源,3.通过实践巩固所学知识,这些步骤能帮助你在短时间内掌握Python。

Python适合快速开发和数据处理,而C 适合高性能和底层控制。1)Python易用,语法简洁,适用于数据科学和Web开发。2)C 性能高,控制精确,常用于游戏和系统编程。

学习Python所需时间因人而异,主要受之前的编程经验、学习动机、学习资源和方法及学习节奏的影响。设定现实的学习目标并通过实践项目学习效果最佳。

Python在自动化、脚本编写和任务管理中表现出色。1)自动化:通过标准库如os、shutil实现文件备份。2)脚本编写:使用psutil库监控系统资源。3)任务管理:利用schedule库调度任务。Python的易用性和丰富库支持使其在这些领域中成为首选工具。

要在有限的时间内最大化学习Python的效率,可以使用Python的datetime、time和schedule模块。1.datetime模块用于记录和规划学习时间。2.time模块帮助设置学习和休息时间。3.schedule模块自动化安排每周学习任务。

Python在游戏和GUI开发中表现出色。1)游戏开发使用Pygame,提供绘图、音频等功能,适合创建2D游戏。2)GUI开发可选择Tkinter或PyQt,Tkinter简单易用,PyQt功能丰富,适合专业开发。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

Atom编辑器mac版下载
最流行的的开源编辑器

Dreamweaver CS6
视觉化网页开发工具

Dreamweaver Mac版
视觉化网页开发工具