Heim Backend-Entwicklung Python-Tutorial python实现360的字符显示界面

python实现360的字符显示界面

Jun 16, 2016 am 08:45 AM
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_())

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Welcher Ordner ist 360safe? Welcher Ordner ist 360safe? Feb 28, 2023 pm 01:56 PM

360safe ist der Installationsordner von 360 Security Guard, der die relevanten Cache-Dateien von 360 Security Guard enthält. Das Löschen des Inhalts in 360safe kann den normalen Betrieb von 360 Security Guard beeinträchtigen und 360safe kann nicht auf andere Festplatten verschoben werden Wenn die installierte Version in der Registrierung registriert wurde, kann 360 nicht gestartet werden. Sie können es nur deinstallieren und dann den Pfad erneut auswählen, um es auf einem anderen Datenträger zu installieren.

Ist Meister Lu von 360? Ist Meister Lu von 360? Sep 06, 2022 pm 03:14 PM

Meister Lu ist von 360. „Master Lu“ ist eine professionelle Tool-Software auf Hardware-Ebene. Am 6. September 2010 gab „Master Lu“ bekannt, dass es dem „Free Software Takeoff Plan“ beitreten würde, und wurde damit ein weiteres neues Mitglied, das seit der Einführung des Plans aufgenommen wurde , es wurde ein Produkt von 360 .

Was tun, wenn der Zugriff auf den 360-Ordner verweigert wird? Was tun, wenn der Zugriff auf den 360-Ordner verweigert wird? Apr 28, 2023 pm 04:41 PM

Lösung für den verweigerten Zugriff auf den 360-Ordner: 1. Überprüfen Sie die Berechtigungen des 360-Ordners, überprüfen Sie die Attributeinstellungen und setzen Sie ihn auf lesbar. 2. Überprüfen Sie jede Datei im 360-Ordner, um sicherzustellen, dass kein Schaden vorliegt. Überprüfen Sie den 360-Ordner. Erlauben Sie Zugriffsberechtigungen für jede Datei. 4. Autorisieren Sie den 360-Ordner erneut und stellen Sie ihn so ein, dass er zugänglich ist.

So deaktivieren Sie das Hintergrundbild für den 360-Grad-Computersperrbildschirm So deaktivieren Sie das Hintergrundbild für den 360-Grad-Computersperrbildschirm Dec 01, 2022 am 10:26 AM

So deaktivieren Sie das 360-Grad-Computer-Sperrbildschirm-Hintergrundbild: 1. Öffnen Sie den 360-Browser, klicken Sie auf die drei horizontalen Symbole in der oberen rechten Ecke und dann auf „Einstellungen“. 2. Suchen Sie die Kategorie „Labor“ und klicken Sie darauf auf der Einstellungsseite und deaktivieren Sie dann die Bildfunktion. Sie können das Hintergrundbild für den Computersperrbildschirm deaktivieren.

So stellen Sie 360-Dateien in Quarantäne wieder her So stellen Sie 360-Dateien in Quarantäne wieder her Dec 01, 2022 am 10:32 AM

So stellen Sie 360-Dateien in Quarantäne wieder her: 1. Öffnen Sie 360 ​​Security Guard und klicken Sie auf „Trojaner-Erkennung“. 2. Klicken Sie auf „Wiederherstellungsbereich“ in der unteren linken Ecke der Seite „Trojaner-Erkennung“, um sie zu öffnen Klicken Sie auf die Dateien, die Sie wiederherstellen möchten. 4. Klicken Sie auf „Wiederherstellen“ und bestätigen Sie das Wiederherstellungsfenster.

Was ist der Unterschied zwischen 360 Antivirus und 360 Guard? Was ist der Unterschied zwischen 360 Antivirus und 360 Guard? Nov 10, 2022 pm 04:40 PM

Unterschiede: 1. Die Hauptfunktionen sind unterschiedlich. 360 Security Guard konzentriert sich auf das Töten von Trojanern, die Sicherung des Computerkontos, das Bereinigen von Müll und die Optimierung der Beschleunigung. 2. 360 Security Guard verfügt über vollständige Selbstschutzfunktionen, 360 Antivirus-Software jedoch nicht. Sie muss sich auf die Selbstschutzfunktion von 360 Security Guard verlassen. 3. 360 Security Guard verwendet eine eigene Engine, während die 360-Antivirensoftware über eine eigene Engine und zwei aus anderen Ländern (Bitdefender und Avira) verfügt.

So entfernen Sie 360 ​​​​Abfangen So entfernen Sie 360 ​​​​Abfangen Dec 01, 2022 am 10:18 AM

So entfernen Sie 360 ​​​​Interception: 1. Öffnen Sie 360 ​​Security Guard und klicken Sie auf [Security Protection Center] 2. Klicken Sie auf die Schaltfläche [Schutz aktivieren] 4. Wechseln Sie zu [Blockierter Bereich]; 5. Klicken Sie auf die Schaltfläche [Entfernen]. 6. Klicken Sie zum Entfernen auf die Schaltfläche [Bestätigen].

Was ist der Grund, warum 360wifi keine Verbindung herstellen kann? Was ist der Grund, warum 360wifi keine Verbindung herstellen kann? Apr 26, 2023 pm 02:22 PM

Gründe und Lösungen für 360wifi-Verbindungsfehler: 1. Verursacht durch lose Netzwerkleitungen, Verbindungsfehler oder Schäden, müssen Sie die Breitbandverbindungsleitung überprüfen. 2. Verursacht durch einen Fehler der Netzwerkkarte, müssen Sie die Netzwerkkarte neu starten Bei falschen Netzwerkkarteneinstellungen müssen Sie die MODEM-Einstellungen überprüfen und auf die Standardeinstellungen zurücksetzen. 4. Wenn das optische Modem ausfällt, müssen Sie den Kopf des Glasfaser-Endsteckers abwischen Reinigen Sie es und stecken Sie es erneut in das optische Modem.

See all articles