树莓派+PyQt制作魔镜

前段时间在GitHub瞎看,看到一个超炫酷的项目MagicMirror(项目地址),下面附上两张国外大神做的镜子。
这里写图片描述
这里写图片描述
然后就感觉超级帅气,树莓派啥的买来以后在上面跑了一遍MagicMirror的源码,然后看到可以扩展好多好玩的东西,后来发现这个项目使用JavaScript写的,自己对JavaScript接触的很少又正好最近学了学python就准备自己动手写一个:我的魔镜链接

当时想做这个的时候有两种思路:

  • 第一种是服务器端用python获取各种我想显示的数据然后存库,镜子端利用纯Qt通过socket读取服务器端的信息。
    这样的好处就是做起来比较简单,QT以及python相对独立,然后Qt的可移植性也很好,弄到树莓派上也比较容易。缺点是感觉在Qt跟服务器之间数据比较杂,要弄一个比较完善的数据结构,另外服务器端数据库的操作也麻烦一点,另外感觉Qt在调用接口的时候可能会很麻烦。

  • 第二种就是用PyQt,也是我最后选择的。直接在电脑上把代码传到树莓派跑起来就行。
    这样的好处是利用python来替Qt调用API,直接将解析到的数据返回到Qt主函数显示在主界面就行,理论上写起来更简单一些。缺点主要是担心pyqt的可移植性不如Qt,担心代码写好以后在树莓派上跑不起来。

最后还是选择了第二种方案,下面是具体的过程。

0x00:编写代码

大体的思路是:在Qt creator里设计好ui界面,并把ui文件放到python工程目录下,通过pyuic(有关Pycharm安装pyqt插件的过程)转换成相应的py文件,然后对各个模块进行相应的一些操作。

一些有关PyQt5的教程:

简单来说就是在ui文件转换过来的py文件的__init__(self)函数中写要写的代码。

0x01:移植到树莓派

对于移植到树莓派,真是遇到了一万个坑。

我从一开始就打算在虚拟机里把代码通过pyinstaller将代码打包成Linux下的可执行文件然后传到树莓派运行。可能是树莓派跟虚拟机的cpu一些方面有问题,好不容易在Ubuntu上把写好代码的界面重新调整了一遍(早知道直接在Ubuntu上写了,Windows和Linux的界面差了好多),打包成可执行文件以后发送到树莓派发现树莓派不能打开这个文件。

没办法就准备直接在树莓派上搭建python3+pyqt5的环境,直接在树莓派上跑代码,参考树莓派上安装配置Python+PyQt+Eric教程,这个教程都是下载源码然后make,速度很慢,应该可以用pip3直接安装,有关换源的问题参考链接,后来跟着教程走到安装Eric的时候一直提示找不到Qtsvg,绝望了好一阵以后发现树莓派自带python的IDE,然后就试着跑了一下,之前跟着教程安装了相应的环境,没想到竟然跑起来了!

  • 这里也可以直接 python xx.py直接运行,效果是一样的
    这里写图片描述

0x02 一些小优化

这里就是一些强迫症做的事情了了,我把顶栏设置成黑色,任务栏弄到了树莓派的底部这样程序可以覆盖底部,另外这个显示屏会自己息屏我也设置了不息屏,最后就是让他开机自动启动了。
一些参考链接:

0x03 总结

做什么都有坑,反正踩了一万个坑。

  • 通过pyqt来修改qt的界面蛮麻烦的,一些数据调来调去很费时间,后面准备封装几个函数来操作界面。
  • 成本有限,使用的七寸的显示屏,放置的功能比较少。
  • 接口调用的时候,是自己看的不仔细,换了一个天气的接口
  • 还有一些代码写的比较臃肿(自己看的难受)
  • 配环境真是个细活
  • 考虑添加跟镜子对话的功能,魔镜魔镜谁是世界上最美丽的人?哈哈哈哈哈。

猜你喜欢

转载自blog.csdn.net/qq_35614920/article/details/77531411