首頁 後端開發 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_())

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

360safe是什麼資料夾 360safe是什麼資料夾 Feb 28, 2023 pm 01:56 PM

360safe是360安全衛士的安裝文件夾,裡面有360安全衛士的相關快取文件,刪除360safe裡面的內容可能會影響360安全衛士的正常運作;且不能將360safe移到其它盤,因為360安全衛士是安裝版的,已經在註冊表中註冊,移到別的碟會導致無法啟動360,只能卸載後再重新選擇路徑安裝到其它盤。

360資料夾拒絕存取怎麼辦 360資料夾拒絕存取怎麼辦 Apr 28, 2023 pm 04:41 PM

360資料夾拒絕存取的解決方法:1、檢查360資料夾的權限,查看屬性設置,設定為可讀;2、檢查360資料夾裡的每一個文件,不能存在損壞;3、檢查360資料夾裡的每一個文件,允許存取權限;4、重新授權360資料夾並設定為可以被存取即可。

360電腦鎖定螢幕桌布怎麼關閉 360電腦鎖定螢幕桌布怎麼關閉 Dec 01, 2022 am 10:26 AM

關閉360電腦鎖定螢幕桌布的方法:1、開啟360瀏覽器,點選右上角三橫圖標,然後點擊「設定」;2、在設定頁面找到並點選「實驗室」分類,然後取消勾選畫報功能即可關閉電腦鎖定螢幕桌布。

魯大師是360的嗎? 魯大師是360的嗎? Sep 06, 2022 pm 03:14 PM

魯大師是360的。魯大師是一款硬體級專業工具軟體,2010年9月6日,魯大師」宣布加入360的“免費軟體起飛計劃”,成為該計劃啟動以來接納的又一位新成員,即成為360旗下產品。

360隔離的檔案怎麼恢復 360隔離的檔案怎麼恢復 Dec 01, 2022 am 10:32 AM

360隔離文件的恢復方法:1、開啟360安全衛士並點選「木馬查殺」;2、在木馬查殺頁面左下角點選「復原區」開啟;3、在復原區頁面,勾選要復原的文件並點選「恢復」;4、點選恢復並確認恢復視窗即可。

360殺毒和360衛兵有什麼差別 360殺毒和360衛兵有什麼差別 Nov 10, 2022 pm 04:40 PM

區別:1.主要功能不一樣,360安全衛士重在查殺木馬,保證用戶的電腦帳號,並且清理垃圾優化加速;而360殺毒軟體則是為了殺毒。 2、360安全衛士有完善的自保能力,但360防毒軟體則沒有,它需要依靠360安全衛士的自保功能。 3.360安全衛士用的都是自家引擎,而360防毒軟體的引擎有自家,也有其他國家的兩個(Bitdefender和Avira)。

360攔截如何解除 360攔截如何解除 Dec 01, 2022 am 10:18 AM

360攔截的解除方法:1、打開360安全衛士,點選【安全防護中心】;2、點選【進入防護】按鈕;3、點選【信任與阻止】;4、切換到【已阻止區】;5、點選【移除】按鈕;6、點選【確認】按鈕即可移除。

360wifi連線不上是什麼原因 360wifi連線不上是什麼原因 Apr 26, 2023 pm 02:22 PM

360wifi連接不上的原因及解決方法:1、網路線路鬆動,連接錯誤或損壞導致的,需要檢查寬頻的連接線路;2、網路卡故障導致的,需要將網路卡重新啟動;3、網路卡設定錯誤導致的,需要檢查MODEM設定並將其恢復預設值;4、光貓故障導致的,需要使用棉籤擦拭光纖尾插的頭部,擦拭乾淨後,再次插入光貓上即可。

See all articles