安装pygame
pip install pygame
框架基础使用示例
引入pygame和sys
import pygame,sys
定义一个run_game函数,把初始化的逻辑都放里面
def run_game():
初始化pygame引擎
pygame.init()
设置pygame窗口大小,如果设置为0,0则自动识别分辨率,相当于窗口最大化
screen = pygame.display.set_mode((600,400))
无限循环,游戏的主循环
while True:
监听消息
for event in pygame.event.get():
当监听到pygame的退出时,触发sys.exit退出应用
if event.type == pygame.QUIT:
sys.exit()
清空屏幕
screen.fill(BG_COLOR)
游戏绘制的主逻辑放这里
刷新屏幕
pygame.display.update()
执行run_game函数
run_game()
python对于新程序员可能挺友好的,不会对代码的编写有过多先入为主的观念。但对于已经有其他语言开发经验的我来说,也花了好一阵子才适应它的语法。
pygame加载字体显示文字
==============
220是字号
my_font = pygame.font.Font(“./路径/字体.ttf”, 220)
my_font.render(文字内容,是否抗锯齿,文字颜色,文字背景色)
text_element = my_font.render(“文字内容”, 1, (255,255,255))
计算文本渲染后的宽度高度
text_width, text_height = my_font.size(“文字内容”)
将文本元素绘制到屏幕指定坐标(元素左上角为原点)
screen.blit(text_element, (100,100)
python获取日期时间
============
import time
def getTime():
获取系统本地时间
localtime = time.localtime()
将本地时间格式化为年月日
date_str = time.strftime(“%Y 年 %m 月 %d 日”, localtime)
将本地时间格式化为24小时制
hm_str = time.strftime(“%H:%M”, localtime)
将本地时间格式化获取秒
second_str = time.strftime(“%S”, localtime)
在pygame的主循环中调用getTime,并将时间文本绘制到屏幕上,一个小时钟就做好了。
显示树莓派当前局域网IP
============
为什么要显示当前IP呢,因为大部分时候我不会给树莓派连接鼠标键盘,那显示IP后就可以直接通过VNC或者SSH来连接树莓派了。
网上有Python获取局域网IP的方案。这个是我用下来的最佳方案:p
import socket
def get_host_ip():
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect((‘8.8.8.8’, 80))
ip = s.getsockname()[0]
finally:
s.close()
return ip
显示B站各类数据
========
这里最主要就是去抓取B站的各种API接口,这里也有热心网友整理好的一份野生API文档,大家可以自行查看使用自己需要的。
https:// github.com/SocialSister Yi/bilibili-API-collect
这些B站的API中有一些是需要身份认证的,这就需要我们自己去chrome浏览器中提取,主要会用到两个cookie字段
-
SESSDATA
-
CSRF Token(bili_jct)
import requests
请求直播间弹幕列表
res = requests.get(‘https://api.live.bilibili.com/xlive/web-room/v1/dM/gethistory?roomid=’+BILI_LIVEID)
data = res.json()
但是requests是同步执行的,会阻塞主线程的执行。比如在本例中,如果我直接使用requests发起请求,那么在请求时pygame的主逻辑循环就被卡住,这肯定不是我所希望的。网上有很多改异步的教程,我就不赘述了,这里我改用了另一个支持异步的库叫 httpx ,用法和普通requests无比接近
import httpx
async with httpx.AsyncClient() as client:
res = await client.get(‘https://api.live.bilibili.com/xlive/web-room/v1/dM/gethistory?roomid=’+BILI_LIVEID)
data = res.json()
然而在我设计里,要请求5个B站接口才能获取到显示的全部数据字段。这个显然也是可以优化的,而我最终选择使用 uniCloud 来开发一个云函数,然后将这个云函数URL化后给python使用,这也是我曾经在视频教程里提到过的,我们可以用uniCloud来开发后端接口,然后前端用Flutter或者其他任意框架,并不需要局限在uniapp。
将直播间弹幕念出来(TTS)
==============
import pyttsx3
pyttsx3.speak(“你好”)
是的,这个pyttsx3用来做TTS很简单,但它是利用系统自带的服务来完成的。
-
Windows系统:SAPI5
-
MacOS:NSSpeechSynthesizer
-
Linux:eSpeak
优点就像前面的代码,使用非常简单。缺点是在各个平台不太统一,跨端也会遇到一些兼容性问题。比如我在mac上开发,在linux上运行,效果是不一样的。这个方法默认也是同步的,就是在播放语音时,是阻塞主线程的,等语音播放结束后,主线程才会继续执行。这个体验就太差了,我要等弹幕结束,弹幕才能在屏幕上跑起来。
解决方案:使用Thread开启子线程执行
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)
dnimg.cn/img_convert/6c361282296f86381401c05e862fe4e9.png)
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)