一、桌面宠物素材

1.1 需要准备什么素材

桌面宠物的各种动画效果,可以看作是由一个个GIF动图拼接而成,我们需要准备多组GIF动图来实现桌面宠物的动作切换。

最好选取是白底的GIF动图。

1.2 介绍几种获得GIF动图的方式

1.2.1 通过pr实现视频转GIF

pr在导出的时候选择动画GIF可以直接导出GIF动图。

当然了想要白底就需要自已用“蒙版”和画笔工具自己抠图了。

1.2.2 通过ps实现图片组转GIF

ps会高级一点,首先点击最上方的窗口,再点击时间轴,在下方显示出的时间轴的最右边的加号可以添加你想要添加的图片。图层右边可以选择删除背景。

然后选择最上方的文件,选择导出,选择导出为web所用格式旧版,即可

1.2.3 百度一下,获取网上现成的GIF资源

① 百度:“制作GIF动图”

② 百度    “GIF动图资源”

你想要的角色人物素材都在这里!最实用的2d游戏素材! - 知乎

二、python实现代码

2.1 目录结构

项目的目录结构整体如下:main.py为主程序代码。

normal下的GIF图是宠物平常会随机切换的动作GIF图, click下面的GIF图是点击宠物之后的宠物动作的GIF图

dialog.txt 记录了宠物的对话信息

tigerIcon.jpg是缩小到托盘后托盘图标的图片

2.2 实现代码

2.2.1 引用包

os包用于加载文件,sys包用于退出程序,random包用于程序中一些需要调用随机数的操作。其他的三个包则是用于实现桌面宠物的基础。

import os
import sys
import random
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *

2.2.2 主代码部分

if __name__ == '__main__':# 创建了一个QApplication对象,对象名为app,带两个参数argc,argv# 所有的PyQt5应用必须创建一个应用(Application)对象。sys.argv参数是一个来自命令行的参数列表。app = QApplication(sys.argv)# 窗口组件初始化pet = DesktopPet()# 1. 进入时间循环;# 2. wait,直到响应app可能的输入;# 3. QT接收和处理用户及系统交代的事件(消息),并传递到各个窗口;# 4. 程序遇到exit()退出时,机会返回exec()的值。sys.exit(app.exec_())

2.2.3 代码运行流程

整个运行流程为:

(1)通过self.init():实现窗体的初始化,宠物的GIF图在这个窗体中播放。

(2)通过self.initPall():配置托盘化

(3)通过self.initPetImage():将宠物的静态GIF资源,包括对话和GIF动图进行加载

(4)通过self.petNormalAction():实现宠物随机切换动作和语句的功能

class DesktopPet(QWidget):def __init__(self, parent=None, **kwargs):super(DesktopPet, self).__init__(parent)# 窗体初始化self.init()# 托盘化初始self.initPall()# 宠物静态gif图加载self.initPetImage()# 宠物正常待机,实现随机切换动作self.petNormalAction()

① 加载显示GIF动图的窗体,通过函数init实现,其代码配置如下:

这几句的作用是对展示宠物的窗体进行一些初步的设置,使得白色GIF图能够去掉背景的白色,将GIF图透明的展示出来

    # 窗体初始化def init(self):# 初始化# 设置窗口属性:窗口无标题栏且固定在最前面# FrameWindowHint:无边框窗口# WindowStaysOnTopHint: 窗口总显示在最上面# SubWindow: 新窗口部件是一个子窗口,而无论窗口部件是否有父窗口部件# https://blog.csdn.net/kaida1234/article/details/79863146self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint | Qt.SubWindow)# setAutoFillBackground(True)表示的是自动填充背景,False为透明背景self.setAutoFillBackground(False)# 窗口透明,窗体空间不透明self.setAttribute(Qt.WA_TranslucentBackground, True)# 重绘组件、刷新self.repaint()

② 实现能托盘显示的功能,通过函数initPall实现,其代码配置如下:

主要有下面这几个操作:

(1)读取静态图片资源设置托盘化的图标

(2)设置托盘化图片点击右键显示的菜单,并对这些菜单的点击操作进行设置

流程代码如下:

 # 托盘化设置初始化def initPall(self):# 导入准备在托盘化显示上使用的图标icons = os.path.join('tigerIcon.jpg')# 设置右键显示最小化的菜单项# 菜单项退出,点击后调用quit函数quit_action = QAction('退出', self, triggered=self.quit)# 设置这个点击选项的图片quit_action.setIcon(QIcon(icons))# 菜单项显示,点击后调用showing函数showing = QAction(u'显示', self, triggered=self.showwin)# 新建一个菜单项控件self.tray_icon_menu = QMenu(self)# 在菜单栏添加一个无子菜单的菜单项‘退出’self.tray_icon_menu.addAction(quit_action)# 在菜单栏添加一个无子菜单的菜单项‘显示’self.tray_icon_menu.addAction(showing)# QSystemTrayIcon类为应用程序在系统托盘中提供一个图标self.tray_icon = QSystemTrayIcon(self)# 设置托盘化图标self.tray_icon.setIcon(QIcon(icons))# 设置托盘化菜单项self.tray_icon.setContextMenu(self.tray_icon_menu)# 展示self.tray_icon.show()

其中‘退出’项涉及到的函数代码如下:

    # 退出操作,关闭程序def quit(self):self.close()sys.exit()

其中‘显示’项涉及到的函数代码如下:

    # 显示宠物def showwin(self):# setWindowOpacity()设置窗体的透明度,通过调整窗体透明度实现宠物的展示和隐藏self.setWindowOpacity(1)

③ 宠物静态资源的加载,通过函数initPetImage实现,其代码配置如下:

静态资源的加载主要涉及两个部分,对话框内容的加载和图片内容的加载。

    # 宠物静态gif图加载def initPetImage(self):# 对话框定义self.talkLabel = QLabel(self)# 对话框样式设计self.talkLabel.setStyleSheet("font:15pt '楷体';border-width: 1px;color:blue;") # 定义显示图片部分self.image = QLabel(self)# QMovie是一个可以存放动态视频的类,一般是配合QLabel使用的,可以用来存放GIF动态图self.movie = QMovie("normal/normal1.gif")# 设置标签大小self.movie.setScaledSize(QSize(200, 200))# 将Qmovie在定义的image中显示self.image.setMovie(self.movie)self.movie.start()self.resize(1024, 1024)# 调用自定义的randomPosition,会使得宠物出现位置随机self.randomPosition()# 展示self.show()# https://new.qq.com/rain/a/20211014a002rs00# 将宠物正常待机状态的动图放入pet1中self.pet1 = []for i in os.listdir("normal"):self.pet1.append("normal/" + i)# 将宠物正常待机状态的对话放入pet2中self.dialog = []# 读取目录下dialog文件with open("dialog.txt", "r") as f:text = f.read()# 以\n 即换行符为分隔符,分割放进dialog中self.dialog = text.split("\n")

其中我们希望宠物出现的位置是随机的而不是固定的,那么便通过 randomPosition()实现宠物出现位置的随机。

    # 宠物随机位置def randomPosition(self):# screenGeometry()函数提供有关可用屏幕几何的信息screen_geo = QDesktopWidget().screenGeometry()# 获取窗口坐标系pet_geo = self.geometry()width = (screen_geo.width() - pet_geo.width()) * random.random()height = (screen_geo.height() - pet_geo.height()) * random.random()self.move(width, height)

④ 宠物正常待机,实现随机切换动作,对话框通过函数petNormalAction实现,其代码配置如下

这里通过QTimer实现定时操作,到达设置的时间即调用相关的函数。其中condition为标识宠物状态的flag,0为平常状态,1为点击状态,这个状态可按照自己的喜好拓展。talk_condition同理,为标识宠物对话状态的flag。

# 宠物正常待机动作def petNormalAction(self):# 每隔一段时间做个动作# 定时器设置self.timer = QTimer()# 时间到了自动执行self.timer.timeout.connect(self.randomAct)# 动作时间切换设置self.timer.start(3000)# 宠物状态设置为正常self.condition = 0# 每隔一段时间切换对话self.talkTimer = QTimer()self.talkTimer.timeout.connect(self.talk)self.talkTimer.start(3000)# 对话状态设置为常态self.talk_condition = 0# 宠物对话框self.talk()

其中,通过randomAct实现宠物动作的随机切换,通过talk实现对话框内容的切换,其代码如下:

self.pet1和self.dialog在初始化的时候即定义了。这里可以按照自己的喜好进行拓展,用多个if-else if实现多种状态的切换和定义,增加一些喂食,玩耍动作等。

 # 随机动作切换def randomAct(self):# condition记录宠物状态,宠物状态为0时,代表正常待机if not self.condition:# 随机选择装载在pet1里面的gif图进行展示,实现随机切换self.movie = QMovie(random.choice(self.pet1))# 宠物大小self.movie.setScaledSize(QSize(200, 200))# 将动画添加到label中self.image.setMovie(self.movie)# 开始播放动画self.movie.start()# condition不为0,转为切换特有的动作,实现宠物的点击反馈# 这里可以通过else-if语句往下拓展做更多的交互功能else:# 读取特殊状态图片路径self.movie = QMovie("./click/click.gif")# 宠物大小self.movie.setScaledSize(QSize(200, 200))# 将动画添加到label中self.image.setMovie(self.movie)# 开始播放动画self.movie.start()# 宠物状态设置为正常待机self.condition = 0self.talk_condition = 0# 宠物对话框行为处理def talk(self):if not self.talk_condition:# talk_condition为0则选取加载在dialog中的语句self.talkLabel.setText(random.choice(self.dialog))# 设置样式self.talkLabel.setStyleSheet("font: bold;""font:25pt '楷体';""color:white;""background-color: white""url(:/)")# 根据内容自适应大小self.talkLabel.adjustSize()else:# talk_condition为1显示为别点我,这里同样可以通过if-else-if来拓展对应的行为self.talkLabel.setText("别点我")self.talkLabel.setStyleSheet("font: bold;""font:25pt '楷体';""color:white;""background-color: white""url(:/)")self.talkLabel.adjustSize()# 设置为正常状态self.talk_condition = 0

⑤ 实现能够拖动宠物,通过多个自带函数实现,其代码配置如下:

实现宠物的拖动主要通过三个函数实现,mouserPressEvent负责在鼠标点击判断其是否在宠物窗口上,如果在则将宠物和鼠标的位置绑定,并执行点击改变宠物GIF图和对话框的操作。

mouseMoveEvent实现按下后宠物跟着鼠标移动

mouseReleaseEvent将之前的锁定取消

 # 鼠标左键按下时, 宠物将和鼠标位置绑定def mousePressEvent(self, event):# 更改宠物状态为点击self.condition = 1# 更改宠物对话状态self.talk_condition = 1# 即可调用对话状态改变self.talk()# 即刻加载宠物点击动画self.randomAct()if event.button() == Qt.LeftButton:self.is_follow_mouse = True# globalPos() 事件触发点相对于桌面的位置# pos() 程序相对于桌面左上角的位置,实际是窗口的左上角坐标self.mouse_drag_pos = event.globalPos() - self.pos()event.accept()# 拖动时鼠标图形的设置self.setCursor(QCursor(Qt.OpenHandCursor))# 鼠标移动时调用,实现宠物随鼠标移动def mouseMoveEvent(self, event):# 如果鼠标左键按下,且处于绑定状态if Qt.LeftButton and self.is_follow_mouse:# 宠物随鼠标进行移动self.move(event.globalPos() - self.mouse_drag_pos)event.accept()# 鼠标释放调用,取消绑定def mouseReleaseEvent(self, event):self.is_follow_mouse = False# 鼠标图形设置为箭头self.setCursor(QCursor(Qt.ArrowCursor))

⑥ 实现宠物右键点击具有交互功能,通过函数contextMenuEvent实现,其代码配置如下:

退出操作通过 qApp.quit()实现,直接退出相应的QT程序。

隐藏操作则通过self.setWindowOpacity(0)实现,这个可控制窗口的透明度。

 # 宠物右键点击交互def contextMenuEvent(self, event):# 定义菜单menu = QMenu(self)# 定义菜单项quitAction = menu.addAction("退出")hide = menu.addAction("隐藏")# 使用exec_()方法显示菜单。从鼠标右键事件对象中获得当前坐标。mapToGlobal()方法把当前组件的相对坐标转换为窗口(window)的绝对坐标。action = menu.exec_(self.mapToGlobal(event.pos()))# 点击事件为退出if action == quitAction:qApp.quit()# 点击事件为隐藏if action == hide:# 通过设置透明度方式隐藏宠物self.setWindowOpacity(0)

⑦ 鼠标移到宠物上的时候显示为闭合的手

    # 鼠标移进时调用def enterEvent(self, event):# 设置鼠标形状 Qt.ClosedHandCursor   非指向手self.setCursor(Qt.ClosedHandCursor)

2.3 完整源码

import os
import sys
import random
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *class DesktopPet(QWidget):def __init__(self, parent=None, **kwargs):super(DesktopPet, self).__init__(parent)# 窗体初始化self.init()# 托盘化初始self.initPall()# 宠物静态gif图加载self.initPetImage()# 宠物正常待机,实现随机切换动作self.petNormalAction()# 窗体初始化def init(self):# 初始化# 设置窗口属性:窗口无标题栏且固定在最前面# FrameWindowHint:无边框窗口# WindowStaysOnTopHint: 窗口总显示在最上面# SubWindow: 新窗口部件是一个子窗口,而无论窗口部件是否有父窗口部件# https://blog.csdn.net/kaida1234/article/details/79863146self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint | Qt.SubWindow)# setAutoFillBackground(True)表示的是自动填充背景,False为透明背景self.setAutoFillBackground(False)# 窗口透明,窗体空间不透明self.setAttribute(Qt.WA_TranslucentBackground, True)# 重绘组件、刷新self.repaint()# 托盘化设置初始化def initPall(self):# 导入准备在托盘化显示上使用的图标icons = os.path.join('tigerIcon.jpg')# 设置右键显示最小化的菜单项# 菜单项退出,点击后调用quit函数quit_action = QAction('退出', self, triggered=self.quit)# 设置这个点击选项的图片quit_action.setIcon(QIcon(icons))# 菜单项显示,点击后调用showing函数showing = QAction(u'显示', self, triggered=self.showwin)# 新建一个菜单项控件self.tray_icon_menu = QMenu(self)# 在菜单栏添加一个无子菜单的菜单项‘退出’self.tray_icon_menu.addAction(quit_action)# 在菜单栏添加一个无子菜单的菜单项‘显示’self.tray_icon_menu.addAction(showing)# QSystemTrayIcon类为应用程序在系统托盘中提供一个图标self.tray_icon = QSystemTrayIcon(self)# 设置托盘化图标self.tray_icon.setIcon(QIcon(icons))# 设置托盘化菜单项self.tray_icon.setContextMenu(self.tray_icon_menu)# 展示self.tray_icon.show()# 宠物静态gif图加载def initPetImage(self):# 对话框定义self.talkLabel = QLabel(self)# 对话框样式设计self.talkLabel.setStyleSheet("font:15pt '楷体';border-width: 1px;color:blue;")# 定义显示图片部分self.image = QLabel(self)# QMovie是一个可以存放动态视频的类,一般是配合QLabel使用的,可以用来存放GIF动态图self.movie = QMovie("normal/normal1.gif")# 设置标签大小self.movie.setScaledSize(QSize(200, 200))# 将Qmovie在定义的image中显示self.image.setMovie(self.movie)self.movie.start()self.resize(1024, 1024)# 调用自定义的randomPosition,会使得宠物出现位置随机self.randomPosition()# 展示self.show()# https://new.qq.com/rain/a/20211014a002rs00# 将宠物正常待机状态的动图放入pet1中self.pet1 = []for i in os.listdir("normal"):self.pet1.append("normal/" + i)# 将宠物正常待机状态的对话放入pet2中self.dialog = []# 读取目录下dialog文件with open("dialog.txt", "r") as f:text = f.read()# 以\n 即换行符为分隔符,分割放进dialog中self.dialog = text.split("\n")# 宠物正常待机动作def petNormalAction(self):# 每隔一段时间做个动作# 定时器设置self.timer = QTimer()# 时间到了自动执行self.timer.timeout.connect(self.randomAct)# 动作时间切换设置self.timer.start(3000)# 宠物状态设置为正常self.condition = 0# 每隔一段时间切换对话self.talkTimer = QTimer()self.talkTimer.timeout.connect(self.talk)self.talkTimer.start(3000)# 对话状态设置为常态self.talk_condition = 0# 宠物对话框self.talk()# 随机动作切换def randomAct(self):# condition记录宠物状态,宠物状态为0时,代表正常待机if not self.condition:# 随机选择装载在pet1里面的gif图进行展示,实现随机切换self.movie = QMovie(random.choice(self.pet1))# 宠物大小self.movie.setScaledSize(QSize(200, 200))# 将动画添加到label中self.image.setMovie(self.movie)# 开始播放动画self.movie.start()# condition不为0,转为切换特有的动作,实现宠物的点击反馈# 这里可以通过else-if语句往下拓展做更多的交互功能else:# 读取特殊状态图片路径self.movie = QMovie("./click/click.gif")# 宠物大小self.movie.setScaledSize(QSize(200, 200))# 将动画添加到label中self.image.setMovie(self.movie)# 开始播放动画self.movie.start()# 宠物状态设置为正常待机self.condition = 0self.talk_condition = 0# 宠物对话框行为处理def talk(self):if not self.talk_condition:# talk_condition为0则选取加载在dialog中的语句self.talkLabel.setText(random.choice(self.dialog))# 设置样式self.talkLabel.setStyleSheet("font: bold;""font:25pt '楷体';""color:white;""background-color: white""url(:/)")# 根据内容自适应大小self.talkLabel.adjustSize()else:# talk_condition为1显示为别点我,这里同样可以通过if-else-if来拓展对应的行为self.talkLabel.setText("别点我")self.talkLabel.setStyleSheet("font: bold;""font:25pt '楷体';""color:white;""background-color: white""url(:/)")self.talkLabel.adjustSize()# 设置为正常状态self.talk_condition = 0# 退出操作,关闭程序def quit(self):self.close()sys.exit()# 显示宠物def showwin(self):# setWindowOpacity()设置窗体的透明度,通过调整窗体透明度实现宠物的展示和隐藏self.setWindowOpacity(1)# 宠物随机位置def randomPosition(self):screen_geo = QDesktopWidget().screenGeometry()pet_geo = self.geometry()width = (screen_geo.width() - pet_geo.width()) * random.random()height = (screen_geo.height() - pet_geo.height()) * random.random()self.move(width, height)# 鼠标左键按下时, 宠物将和鼠标位置绑定def mousePressEvent(self, event):# 更改宠物状态为点击self.condition = 1# 更改宠物对话状态self.talk_condition = 1# 即可调用对话状态改变self.talk()# 即刻加载宠物点击动画self.randomAct()if event.button() == Qt.LeftButton:self.is_follow_mouse = True# globalPos() 事件触发点相对于桌面的位置# pos() 程序相对于桌面左上角的位置,实际是窗口的左上角坐标self.mouse_drag_pos = event.globalPos() - self.pos()event.accept()# 拖动时鼠标图形的设置self.setCursor(QCursor(Qt.OpenHandCursor))# 鼠标移动时调用,实现宠物随鼠标移动def mouseMoveEvent(self, event):# 如果鼠标左键按下,且处于绑定状态if Qt.LeftButton and self.is_follow_mouse:# 宠物随鼠标进行移动self.move(event.globalPos() - self.mouse_drag_pos)event.accept()# 鼠标释放调用,取消绑定def mouseReleaseEvent(self, event):self.is_follow_mouse = False# 鼠标图形设置为箭头self.setCursor(QCursor(Qt.ArrowCursor))# 鼠标移进时调用def enterEvent(self, event):# 设置鼠标形状 Qt.ClosedHandCursor   非指向手self.setCursor(Qt.ClosedHandCursor)# 宠物右键点击交互def contextMenuEvent(self, event):# 定义菜单menu = QMenu(self)# 定义菜单项quitAction = menu.addAction("退出")hide = menu.addAction("隐藏")# 使用exec_()方法显示菜单。从鼠标右键事件对象中获得当前坐标。mapToGlobal()方法把当前组件的相对坐标转换为窗口(window)的绝对坐标。action = menu.exec_(self.mapToGlobal(event.pos()))# 点击事件为退出if action == quitAction:qApp.quit()# 点击事件为隐藏if action == hide:# 通过设置透明度方式隐藏宠物self.setWindowOpacity(0)if __name__ == '__main__':# 创建了一个QApplication对象,对象名为app,带两个参数argc,argv# 所有的PyQt5应用必须创建一个应用(Application)对象。sys.argv参数是一个来自命令行的参数列表。app = QApplication(sys.argv)# 窗口组件初始化pet = DesktopPet()# 1. 进入时间循环;# 2. wait,直到响应app可能的输入;# 3. QT接收和处理用户及系统交代的事件(消息),并传递到各个窗口;# 4. 程序遇到exit()退出时,机会返回exec()的值。sys.exit(app.exec_())

三、程序打包

3.1 安装pyinstaller

pip install pyinstaller

如果提示黄色提示pip版本问题,照着上面的提示修改即可

3.2 项目目录下完成打包

进入打开cmd命令行,进入项目目录,输入命令

pyinstaller -F -w main.py

打包完成后,在生成的dist里面可以看到main.exe文件

这里因为我自己的原因,需要将main.exe放到主目录下才可正常运行

四、总结与参考资料

4.1 项目百度网盘:

链接:https://pan.baidu.com/s/1YYXzGpmCJkz43tYuki1wFQ 
提取码:3gkw

DeskTopPetEXE为带打包好的文件。

DeskTopPet是打包前的文件。

4.2 总结

写之前挺开心的,写的时候也挺开心的,写完之后就有点索然无味了。用python做一个简单的桌面宠物,我看到的方法除了我参考的这种加载GIF图外:

Python 玩出花儿,把罗小黑养在自己桌面_AI科技大本营的博客-CSDN博客

还有一种通过加载图片帧的方式实现

Python实现桌面宠物_hxxjxw的博客-CSDN博客_python桌面宠物

这种通过图片帧的加载实现,需要编写一个自定义配置类cfg.py,很多人也不把这个东西代码给出来:

'''配置文件'''ROOT_DIR = 'resources'
ACTION_DISTRIBUTION = [['1', '2', '3'],['4', '5', '6', '7', '8', '9', '10', '11'],['12', '13', '14'],['15', '16', '17', '18']]PET_ACTIONS_MAP = {'pet_1': ACTION_DISTRIBUTION}
for i in range(1, 4):PET_ACTIONS_MAP.update({'pet_%s' % i: ACTION_DISTRIBUTION})

这种方式宠物动作的实现,是根据上面这个配置文件进行配置的,比如[1,2,3]就代表这个pet_1文件夹下对应1,2,3号图片组成一个动作。我看到有人直接把这个当作一个动作赋值给宠物,然后图片就会莫名鬼畜。

纯粹是因为无聊写着玩的,下次再试试能不能弄个3D的

桌面宠物 ① 通过python制作属于自己的桌面宠物相关推荐

  1. 桌面宠物 ② 通过js制作属于自己的web网页宠物

    一.网页宠物素材 1.1 需要准备什么素材 桌面宠物 ① 通过python制作属于自己的桌面宠物_林林zonzon的博客-CSDN博客_python桌面宠物同前一篇文章一样,web网页宠物的动画效果的 ...

  2. Python开发第一步:如何制作一个简单的桌面应用

    Python开发第一步:如何制作一个简单的桌面应用 前言 大家好,我是baifagg, 一个热爱Python的编程爱好者. 今天我们来学习一下, 如何用Python制作一个简单的桌面应用程序. 虽然桌 ...

  3. 【脚本项目源码】Python制作桌面宠物,这么可爱的萌宠你不想拥有吗?

    前言 本文给大家分享的是如何通过利用Python制作桌面宠物,废话不多直接开整~ 开发工具 Python版本: 3.6 相关模块: random模块 os模块 cfg模块 sys模块 PyQt5模块 ...

  4. python制作一个桌面小工具

    python实现一个桌面小工具,制作一个桌面的便签提醒工具 参考代码:https://github.com/cosven/memo 参考链接:https://www.jb51.net/article/ ...

  5. 用Python写个桌面挂件,手把手带你做只桌面宠物~

    导语 前段时间有小伙伴留言说想让我带大家写写桌面小挂件,今天就满足一下留过类似言的小伙伴的请求呗~不过感觉写桌面的挂历啥的没意思,就简单带大家做一只桌面宠物吧~ 皮卡丘大家喜欢吗~今天就由做个皮卡丘为 ...

  6. python制作电脑软件_利用PYTHON制作桌面版爬虫软件(二)

    今天继续新的专题.主要讲解[利用PYTHON制作桌面版爬虫软件]下的如何实现界面功能(一).该讲主要包括以下三个内容:掌握如何编写主函数,运行界面. 了解pywin32模块. 如何用python识别Q ...

  7. Python爬虫实战,requests+random模块,Python制作桌面翻译软件

    前言 今天尝试用Python制作翻译软件.在这里给需要的小伙伴们提供代码,并且给出一点小心得. 程序的功能很简单,可以从三个主流翻译器中选择任意的翻译器进行单词和句子的翻译,使用PyQt5模块实现人机 ...

  8. 【python】python制作 连连看 游戏脚本(一)

    [python]python制作 连连看 游戏脚本(一)_sunriver2000的博客-CSDN博客 [python]python制作 连连看 游戏脚本(二)_sunriver2000的博客-CSD ...

  9. python制作动图-用Python制作迷宫GIF

    原标题:用Python制作迷宫GIF 安装 可以通过PyPi安装 或者通过Git 为什么你需要这个库? 问:我是一个Python迷,并且对迷宫的生成和迷宫解决的办法非常感兴趣.我很羡慕别人能够做出生成 ...

最新文章

  1. 安装llvmlite报错解决:RuntimeError: llvm-config failed executing, please point LLVM_CONFIG to the path for
  2. search string iteration
  3. 【linux】Linux查看服务器登陆用户信息命令(w、last、who)详解
  4. php中的冒泡排序实例,PHP实现冒泡排序的简单实例,php冒泡排序_PHP教程
  5. vue中自定义指令、组件化、生命周期、节流和防抖、获取DOM、mint-ui简介、过渡和动画
  6. 转: iptables数据包处理流程
  7. ArcGIS 10.2.2 for Desktop非管理员权限用户连接Oracle12c,崩溃
  8. 微信小程序 点击复制文本到剪贴板
  9. PTT BBS-- 软件人的心路历程分享 (补习计算机、学习写程序、出书、出国、求职...这位前辈都经历过了)...
  10. 2022年高压电工最新解析及高压电工考试资料
  11. 文本检测最近文章检索(1)
  12. java转义字符响铃_转义字符
  13. fla文件与as文件之间的绑定
  14. Golang pprof简介
  15. 小米5无线显示如何连接到服务器,小米电视无线显示怎么用?详细操作方法
  16. numpy、pandas操作
  17. SAP 成本中心 冻结而不能直接对 记帐
  18. 主数据管理解决方案(PPT完整版)
  19. 经典长文:管理自己(彼得·德鲁克)
  20. 诺基亚5320微信提示服务器繁忙,诺基亚5320XM刷机要注意 RM409刷6.13失败的经历

热门文章

  1. JAVA狗叫源代码_从头认识java-1.1 编程语言抽象过程以及java的基础特性
  2. Linux部署redis以及部署完成后,远程工具连接不上问题
  3. Arista教你如何讨容器、白盒基础架构数据中心玩家的欢心
  4. Unity DOTS入门教程(Unity2019)
  5. TortoiseSVN安装最新版,设置中文;并修改比对工具为BeyondCompare
  6. keil里的debug项里没有 proteus vsm 51解决方案
  7. ffmpeg webm 提取_使用 FFmpeg 对 webp转png , webm转mp4或者gif等进行操作
  8. 大厂Redis day2 自用笔记
  9. cadence 原理图不能打印成PDF 解决方案
  10. 9.15蚂蚁金服hr面