Rumah pembangunan bahagian belakang Tutorial Python 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_())

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah folder 360safe? Apakah folder 360safe? Feb 28, 2023 pm 01:56 PM

360safe ialah folder pemasangan 360 Security Guard, yang mengandungi fail cache 360 ​​Security Guard yang berkaitan Memadamkan kandungan dalam 360safe boleh menjejaskan operasi biasa 360 Security Guard dan 360safe tidak boleh dialihkan ke cakera lain kerana 360 ​​Security Guard versi dipasang telah didaftarkan dalam pendaftaran Mengalihkannya ke cakera lain akan mengakibatkan ketidakupayaan untuk memulakan 360. Anda hanya boleh menyahpasangnya dan kemudian memilih semula laluan untuk memasangnya ke cakera lain.

Adakah Master Lu dari 360? Adakah Master Lu dari 360? Sep 06, 2022 pm 03:14 PM

Master Lu adalah dari 360. "Master Lu" ialah perisian alat profesional peringkat perkakasan Pada 6 September 2010, "Master Lu" mengumumkan bahawa ia akan menyertai "Pelan Berlepas Perisian Percuma" 360 dan menjadi ahli baharu yang diterima sejak pelancaran pelan itu, iaitu. , ia menjadi produk 360 .

Apa yang perlu dilakukan jika akses folder 360 dinafikan Apa yang perlu dilakukan jika akses folder 360 dinafikan Apr 28, 2023 pm 04:41 PM

Penyelesaian kepada akses folder 360 ditolak: 1. Semak kebenaran folder 360, semak tetapan atribut, dan tetapkannya kepada boleh dibaca 2. Semak setiap fail dalam folder 360 untuk memastikan tiada kerosakan 3. Semak folder 360 Benarkan kebenaran akses untuk setiap fail 4. Benarkan semula folder 360 dan tetapkan ia boleh diakses.

Bagaimana untuk mematikan kertas dinding skrin kunci komputer 360 Bagaimana untuk mematikan kertas dinding skrin kunci komputer 360 Dec 01, 2022 am 10:26 AM

Cara mematikan kertas dinding skrin kunci komputer 360: 1. Buka penyemak imbas 360, klik tiga ikon mendatar di sudut kanan atas, dan kemudian klik "Tetapan" 2. Cari dan klik kategori "Makmal". pada halaman tetapan, dan kemudian nyahtanda fungsi bergambar Anda boleh mematikan kertas dinding skrin kunci komputer.

Bagaimana untuk memulihkan 360 fail yang dikuarantin Bagaimana untuk memulihkan 360 fail yang dikuarantin Dec 01, 2022 am 10:32 AM

Cara memulihkan fail 360 yang dikuarantin: 1. Buka Pengawal Keselamatan 360 dan klik "Pembunuh Trojan" 2. Klik "Kawasan Pemulihan" di sudut kiri bawah halaman Pembunuhan Trojan untuk membuka 3. Pada halaman kawasan pemulihan, semak fail untuk dipulihkan Dan klik "Pulihkan" 4. Klik Pulihkan dan sahkan tetingkap pemulihan.

Apakah perbezaan antara 360 Antivirus dan 360 Guard? Apakah perbezaan antara 360 Antivirus dan 360 Guard? Nov 10, 2022 pm 04:40 PM

Perbezaan: 1. Fungsi utama adalah berbeza 360 Security Guard memfokuskan pada membunuh Trojan, memastikan akaun komputer pengguna, dan membersihkan sampah dan mengoptimumkan pecutan manakala perisian 360 Anti-Virus adalah untuk anti-virus. 2. Pengawal Keselamatan 360 mempunyai keupayaan perlindungan diri yang lengkap, tetapi perisian 360 Antivirus tidak perlu bergantung pada fungsi perlindungan diri Pengawal Keselamatan 360. 3. 360 Security Guard menggunakan enjin sendiri, manakala perisian 360 Antivirus mempunyai enjin sendiri dan dua dari negara lain (Bitdefender dan Avira).

Bagaimana untuk membuang pintasan 360 Bagaimana untuk membuang pintasan 360 Dec 01, 2022 am 10:18 AM

Cara mengalih keluar pemintasan 360: 1. Buka Pengawal Keselamatan 360 dan klik [Pusat Perlindungan Keselamatan] 2. Klik butang [Enter Protection] 3. Klik [Trust and Block]; 5. Klik butang [Alih Keluar] 6. Klik butang [Sahkan] untuk mengalih keluar.

Apakah sebab mengapa 360wifi tidak dapat disambungkan? Apakah sebab mengapa 360wifi tidak dapat disambungkan? Apr 26, 2023 pm 02:22 PM

Sebab dan penyelesaian untuk kegagalan 360wifi untuk menyambung: 1. Disebabkan oleh talian rangkaian yang longgar, ralat sambungan atau kerosakan, anda perlu menyemak talian sambungan jalur lebar 2. Disebabkan oleh kegagalan kad rangkaian, anda perlu memulakan semula kad rangkaian; dengan tetapan kad rangkaian yang salah, anda perlu menyemak tetapan MODEM dan memulihkannya kepada tetapan lalai 4. Jika modem optik gagal, anda perlu menggunakan swab kapas untuk mengelap kepala palam ekor gentian optik, lap bersih; , dan kemudian masukkannya ke dalam modem optik sekali lagi.

See all articles