日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux桌面宠物

發布時間:2023/12/20 linux 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux桌面宠物 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

環境:

ubuntu19.10

xfce4

步驟如下:

python getpet.py(獲取寵物動作圖片)

然后會彈出來一個對話框,對話框里面你看中哪個寵物就用鼠標雙擊一下,然后終端就會開始下載這個寵物的圖片

python start.py(啟動桌面寵物)

?

小技巧:

可以把你下載的寵物給備份起來,以后就不用重復下載啦.

?

效果:

目前寵物總是喜歡待在最下面,腳本還需要改進啊.

#------------------------------------------------附錄--------------------------------------------------------------------------------------

getpet.py

import sys from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtCore import * import requests import threading import os import zipfile from PIL import Imageclass Workchange(QThread):"""docstring for WorkThread"""change_done = pyqtSignal()def __init__(self):super(Workchange, self).__init__()def run(self):url = self.urlname = url.split('/')[-1] + '.zip'print('正在下載資源',name)data = requests.get(url).contentwith open(name,'wb') as f:f.write(data)print('下載完成!')# path = os.environ['HOME']+'/shimeji/'path="./"if not os.path.exists(path):os.makedirs(path)print('正在解壓資源...')z = zipfile.ZipFile(name, 'r')z.extractall(path=path)z.close()for i in range(1,47):os.rename(path + 'shime%s.png'% str(i),path+str(i)+'.png')pri_image = Image.open(path+'%s.png' %str(i))pri_image.transpose(Image.FLIP_LEFT_RIGHT).save(path+'-%s.png'%str(i))for i in os.listdir(path):os.system('convert %s %s'%(path+i,path+i))print('解壓完成')os.remove(name)self.change_done.emit()class Workinit(QThread):"""docstring for WorkThread"""init_done = pyqtSignal(dict)def __init__(self):super(Workinit, self).__init__()def run(self):for i in range(3,90):threading.Thread(target=self.load,args=(i,)).start()def load(self,i):url = ''' http://pepeswap.com/thumb/%s''' %str(i)data = requests.get(url).contentname = str(i)dict_data = dict(data=data,name=name)self.init_done.emit(dict_data)class DQListWidget(QListWidget):def __init__(self):super(DQListWidget, self).__init__()self.workinit = Workinit()self.workchange = Workchange()self.workchange.change_done.connect(self.change_done)self.workinit.init_done.connect(self.load_picture)self.workinit.start()self.itemDoubleClicked.connect(self.change)def change_done(self):QMessageBox.about(self,'提示','更換完成!(*>﹏<*)')def change(self,item):self.workchange.url = 'http://pepeswap.com/mascot/' + item.text()self.workchange.start()def load_picture(self,dict_data): item = QListWidgetItem(dict_data['name'])item.setSizeHint(QSize(10, 128))self.addItem(item)pixmap = QPixmap()label = QLabel()pixmap.loadFromData(dict_data['data'])label.setPixmap(pixmap)self.setItemWidget(item,label)class Mywin(QWidget):def __init__(self):super(Mywin, self).__init__()list_ = DQListWidget() layout = QVBoxLayout(self)layout.addWidget(list_) self.setLayout(layout) app = QApplication(sys.argv) mywin = Mywin() # 實例化一個窗口小部件 mywin.setWindowTitle('Hello world!') # 設置窗口標題 mywin.show() #顯示窗口 sys.exit(app.exec())

start.py

import sys from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtCore import * import time import random import osdef random_probability(r):s = random.randint(1,100)if r >= s:return Trueelse:return Falseclass Donghua(QWidget):def __init__(self):super(Donghua, self).__init__()self.desktop = QApplication.desktop()self.screenRect = self.desktop.screenGeometry()self.HEIGHT = self.screenRect.height()self.WIDTH = self.screenRect.width()self.setWindowFlags(Qt.FramelessWindowHint)# self.setWindowFlags(Qt.SplashScreen)self.setAttribute(Qt.WA_TranslucentBackground)self.timer = QTimer()self.timer.timeout.connect(self.update)self.img_timer = QTimer()self.img_timer.timeout.connect(self.update_img)self.label = QLabel(self)self.label.setScaledContents(True)layout = QVBoxLayout(self)layout.addWidget(self.label)self.setLayout(layout)self.index = 0self.x = 0self.is_right = Trueself.m_flag = Falseself.action_dcit = {'left_go':(1,3),'right_go':(-3,-1),'left_hold':(5,7),'right_hold':(-7,-5),'left_release':(4,4),'right_release':(-4,-4),'left_down':(18,19),'right_down':(-19,-18),'left_crawl':(12,14),'right_crawl':(-14,-12),# 'left_rest':(15,17),# 'right_rest':(-17,-15),'left_rest':(26,27),'right_rest':(-27,-26),'left_rest2':(27,29),'right_rest2':(-29,-27),}self.action = 'right_release'self.pre_action = ''# 控制窗體移動及各種動作切換計時器self.timer.start(100)# 控制圖片切換計時器self.img_timer.start(200)#監聽鼠標動作def mousePressEvent(self, event):x = (event.globalPos()-self.pos()).x()y = (event.globalPos()-self.pos()).y()if event.button() == Qt.LeftButton and x < 128 and y < 128:self.m_flag = Trueself.m_Position = event.globalPos()-self.pos() # 獲取鼠標相對窗口的位置event.accept()if self.is_right:self.action='right_hold'else:self.action='left_hold'self.setCursor(QCursor(Qt.OpenHandCursor))def mouseMoveEvent(self, QMouseEvent):if Qt.LeftButton and self.m_flag:self.move(QMouseEvent.globalPos()-self.m_Position) # 更改窗口位置QMouseEvent.accept()#鼠標左鍵釋放def mouseReleaseEvent(self, QMouseEvent):self.m_flag = Falseif self.is_right:self.action = 'right_release'else:self.action = 'left_release'#手動將其放入屏幕邊緣if self.x <= 0 and self.y > 0:self.action = 'left_crawl'elif self.x + self.width >= self.WIDTH and self.y > 0:self.action = 'right_crawl'self.setCursor(QCursor(Qt.ArrowCursor))#動作更新def update(self):self.width = self.geometry().width()self.height = self.geometry().height()self.x = self.geometry().x()self.y = self.geometry().y()# print(self.x,self.y)exec('self.%s()'% self.action)def right_crawl(self):if self.y > 0:self.y -= 10self.setGeometry(self.x,self.y,100,100)else:self.action = 'right_release'def left_crawl(self):if self.y > 0:self.y -= 10self.setGeometry(self.x,self.y,100,100)else:self.action = 'left_release'def right_down(self):if self.index+1 == self.action_dcit[self.action][1]:self.action = 'right_go'def left_down(self):if self.index+1 == self.action_dcit[self.action][1]:self.action = 'left_go'def right_release(self):if self.y + self.height > self.HEIGHT:self.action = 'right_down'else:self.action = 'right_release'self.y += 100self.setGeometry(self.x,self.y,100,100)def left_release(self):if self.y + self.height > self.HEIGHT:self.action = 'left_down'else:self.action = 'left_release'self.y += 100self.setGeometry(self.x,self.y,100,100)def right_go(self):self.x += 5self.action = 'right_go'if self.x + self.width> self.WIDTH:if random_probability(30):self.action = 'right_crawl'else:self.is_right = Falseself.action = 'left_go'if random_probability(1):self.action = 'right_rest'self.setGeometry(self.x,self.y,100,100)def left_go(self):self.x -= 5self.action = 'left_go'if self.x < 0:if random_probability(30):self.action = 'left_crawl'else:self.is_right = Trueself.action = 'right_go'if random_probability(1):self.action = 'left_rest'self.setGeometry(self.x,self.y,100,100)def right_rest(self):if random_probability(1):self.action = 'right_go'def left_rest(self):if random_probability(1):self.action = 'left_go'def right_hold(self):passdef left_hold(self):pass#更新圖片def update_img(self):start_index,end_index = self.action_dcit[self.action]if self.pre_action != self.action:self.index = start_indexself.pre_action = self.actionif self.index == end_index:self.index = start_indexelse:self.index += 1q = QPixmap(path +'%s.png' % self.index)self.label.setPixmap(q)if __name__ == '__main__':path = "./"app = QApplication(sys.argv)mywin = Donghua()mywin.show()sys.exit(app.exec())

?

?

總結

以上是生活随笔為你收集整理的linux桌面宠物的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。