python实现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() 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_())

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











360safe는 360securityguard 관련 캐시 파일이 포함되어 있는 360securityguard 설치 폴더입니다. 360safe에서 해당 내용을 삭제하면 360securityguard의 정상적인 동작에 영향을 미칠 수 있으며, 360securityguard를 다른 디스크로 이동할 수 없습니다. 설치된 버전이 레지스트리에 등록되어 있으므로 다른 디스크로 옮기면 360을 시작할 수 없습니다. 해당 버전을 제거한 후 경로를 다시 선택하여 다른 디스크에 설치할 수 있습니다.

360 폴더 액세스 거부에 대한 해결 방법: 1. 360 폴더의 권한을 확인하고 속성 설정을 확인한 후 읽기 가능으로 설정합니다. 2. 360 폴더의 모든 파일을 확인하여 손상이 없는지 확인합니다. 360 폴더 각 파일에 대한 접근 권한 허용을 확인하세요. 4. 360 폴더를 재인증하고 접근 가능하도록 설정하세요.

Master Lu는 360 출신입니다. "Master Lu"는 하드웨어 수준의 전문 도구 소프트웨어입니다. 2010년 9월 6일 "Master Lu"는 360의 "Free Software Takeoff Plan"에 합류하겠다고 발표했으며 해당 계획 출시 이후 승인된 또 다른 새 멤버가 되었습니다. , 360 의 제품이 되었습니다.

360 컴퓨터 잠금 화면 배경화면을 끄는 방법: 1. 360 브라우저를 열고 오른쪽 상단에 있는 세 개의 가로 아이콘을 클릭한 다음 "설정"을 클릭합니다. 2. "실험실" 카테고리를 찾아 클릭합니다. 설정 페이지에서 그림 기능을 선택 취소하면 컴퓨터 잠금 화면 배경화면을 끌 수 있습니다.

360개의 격리된 파일을 복구하는 방법: 1. 360 Security Guard를 열고 "Trojan Killing"을 클릭합니다. 2. Trojan Killing 페이지 왼쪽 하단에 있는 "복구 영역"을 클릭하여 엽니다. 3. 복구 영역 페이지에서 다음을 확인합니다. 4. 복원을 클릭하고 복구 창을 확인합니다.

차이점: 1. 360 보안 가드는 트로이 목마 제거, 사용자 컴퓨터 계정 보호, 쓰레기 정리 및 가속 최적화에 중점을 두고 있으며, 360 안티 바이러스 소프트웨어는 바이러스 백신용입니다. 2. 360 Security Guard는 완벽한 자체 보호 기능을 갖추고 있지만 360 Antivirus 소프트웨어는 360 Security Guard의 자체 보호 기능에 의존해야 합니다. 3. 360 Security Guard는 자체 엔진을 사용하는 반면, 360 바이러스 백신 소프트웨어에는 자체 엔진과 다른 국가의 두 엔진(Bitdefender 및 Avira)이 있습니다.

360 차단을 제거하는 방법: 1. 360 보안 가드를 열고 [보안 보호 센터]를 클릭합니다. 2. [보호 입력] 버튼을 클릭합니다. 3. [신뢰 및 차단]을 클릭합니다. 5. [제거] 버튼을 클릭하세요. 6. 제거하려면 [확인] 버튼을 클릭하세요.

360wifi 연결 실패의 원인 및 해결 방법: 1. 네트워크 회선이 느슨하거나 연결 오류 또는 손상이 발생하여 광대역 연결 회선을 확인해야 합니다. 2. 네트워크 카드 오류로 인해 네트워크 카드를 다시 시작해야 합니다. 잘못된 네트워크 카드 설정으로 인해 모뎀 설정을 확인하고 기본 설정으로 복원해야 합니다. 4. 광 모뎀에 문제가 있는 경우 면봉을 사용하여 광섬유 테일 플러그의 머리를 닦아야 합니다. 청소한 후 광 모뎀에 다시 삽입하십시오.
