360的字符显示界面

#!/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_())
	


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值