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_())

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

360safe est le dossier d'installation de 360 Security Guard, qui contient les fichiers de cache pertinents de 360 Security Guard. La suppression du contenu dans 360safe peut affecter le fonctionnement normal de 360 Security Guard et 360safe ne peut pas être déplacé vers d'autres disques car 360 Security Guard ; La version installée a été enregistrée dans le registre. Son déplacement vers un autre disque entraînera l'impossibilité de démarrer 360. Vous pouvez uniquement la désinstaller, puis resélectionner le chemin pour l'installer sur un autre disque.

Maître Lu vient de 360. "Master Lu" est un outil logiciel professionnel au niveau matériel Le 6 septembre 2010, "Master Lu" a annoncé qu'il rejoindrait le "Free Software Takeoff Plan" de 360 et est devenu un autre nouveau membre accepté depuis le lancement du plan. , c'est devenu un produit de 360 .

Comment désactiver le fond d'écran de l'écran de verrouillage de l'ordinateur 360 : 1. Ouvrez le navigateur 360, cliquez sur les trois icônes horizontales dans le coin supérieur droit, puis cliquez sur « Paramètres » 2. Recherchez et cliquez sur la catégorie « Laboratoire » ; sur la page des paramètres, puis décochez la fonction picturale. Vous pouvez désactiver le fond d'écran de l'écran de verrouillage de l'ordinateur.

Solution pour l'accès au dossier 360 refusé : 1. Vérifiez les autorisations du dossier 360, vérifiez les paramètres d'attribut et définissez-le sur lisible ; 2. Vérifiez chaque fichier du dossier 360 pour vous assurer qu'il n'y a aucun dommage ; Vérifiez le dossier 360 Autoriser les autorisations d'accès pour chaque fichier ; 4. Réautorisez le dossier 360 et configurez-le pour qu'il soit accessible.

Comment récupérer 360 fichiers en quarantaine : 1. Ouvrez 360 Security Guard et cliquez sur « Trojan Killing » ; 2. Cliquez sur « Zone de récupération » dans le coin inférieur gauche de la page Trojan Killing pour ouvrir ; fichiers à récupérer Et cliquez sur "Restaurer" ; 4. Cliquez sur Restaurer et confirmez la fenêtre de récupération.

Différences : 1. Les fonctions principales sont différentes. 360 Security Guard se concentre sur la suppression des chevaux de Troie, la garantie du compte informatique de l'utilisateur, le nettoyage des fichiers indésirables et l'optimisation de l'accélération, tandis que le logiciel 360 Anti-Virus est destiné à l'antivirus. 2. 360 Security Guard possède des capacités d'autoprotection complètes, mais pas le logiciel 360 Antivirus. Il doit s'appuyer sur la fonction d'autoprotection de 360 Security Guard. 3. 360 Security Guard utilise son propre moteur, tandis que le logiciel 360 Antivirus possède ses propres moteurs et deux d'autres pays (Bitdefender et Avira).

Comment supprimer l'interception 360 : 1. Ouvrez 360 Security Guard et cliquez sur [Security Protection Center] ; 2. Cliquez sur le bouton [Entrer la protection] ; 3. Cliquez sur [Confiance et blocage] ; 5. Cliquez sur le bouton [Supprimer] ; 6. Cliquez sur le bouton [Confirmer] pour supprimer.

Raisons et solutions de l'échec de connexion de 360wifi : 1. Causé par des lignes réseau desserrées, des erreurs de connexion ou des dommages, vous devez vérifier la ligne de connexion haut débit ; 2. Causé par une panne de la carte réseau, vous devez redémarrer la carte réseau ; en cas de paramètres de carte réseau incorrects, vous devez vérifier les paramètres du MODEM et les restaurer aux paramètres par défaut ; 4. Si le modem optique tombe en panne, vous devez utiliser un coton-tige pour essuyer la tête de la fiche de la fibre optique après l'avoir essuyée. nettoyez-le, insérez-le à nouveau dans le modem optique.
