最近做一个汽车仪表盘的项目,用到Pyqt5,于是我决定开贴,记录我的实现路程:
首先我在做的时候,首先考虑的就是我们要用什么来实现UI编程,我本来想的是用C#,但是由于这段时间在学python,而且,最终我们是应用在Linux上,所以我决定用python来写,得益于python丰富多样的资源。
python社区为我们提供了多种UI的编程方式,在选择之后,我最后选择了使用python下的Qt来进行开发。Qt这个东西原本是基于C++来开发的,但是python社区做了一个可以用python来实现Qt的工具包,名为 PyQt 。
我们首先要搭载PyQt的环境,这个在网上非常多的教程,pycharm下PyQt5等等方式都可以搜索到的。我建议大家都用Anaconda,非常方便。
我选择的是PyQt5,有个问题就是,现在PyQt5的资料不是很丰富,所以必选要结合Qt来学习,这花了我很长一段时间。这里我先给出一个相对比较官方的文档链接给大家: https://pythonspot.com/en/pyqt5/ 。这个文档里面有很多的简单控件的应用实例,所以还是比较好的。 当所有的环境配置好之后,可以先写一些简单的程序来熟悉一下基本的控件,在设计的时候可以用QtDesigner来进行简单的辅助设计,对于QtDesigner大家可以自己搜一下教程,很多,也算是比较简单,就是拖控件。
割割割割割割割割割割割割割割割割割割割割割。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
现在呢,进入我们的主题,开始设计我们的仪表盘。关于仪表盘,我遇到的第一个问题就是指针的旋转问题,首先仪表盘本身我实际是找个这样的一张图片。贴上我的酷炫神图:
但是有一个问题。。。这张图有太多的我们不想要的东西,比如仪表盘上的指针,使我们需要取消的,因为我们最后的指针是需要我们画上去的,可以旋转的。还有哪些多余的文字。
我这个人比较糙,也不会什么PS,于是我用了最简单的方法,就是用的电脑上的画图。
我把图片放到最大,然后用橡皮擦将不用的擦掉,然后使用背景色进行填充或者用画笔画上。
最后我做出了这样的图片:
这就是我们的素材了。
简单,暴力。
然后我们需要将我们的图片设置成我们窗口的桌面背景。
贴上我实现桌面背景的方法。
[mw_shl_code=python,true] #设置桌面背景
def setBackground(self):
painter =QPainter(self)
首先我在做的时候,首先考虑的就是我们要用什么来实现UI编程,我本来想的是用C#,但是由于这段时间在学python,而且,最终我们是应用在Linux上,所以我决定用python来写,得益于python丰富多样的资源。
python社区为我们提供了多种UI的编程方式,在选择之后,我最后选择了使用python下的Qt来进行开发。Qt这个东西原本是基于C++来开发的,但是python社区做了一个可以用python来实现Qt的工具包,名为 PyQt 。
我们首先要搭载PyQt的环境,这个在网上非常多的教程,pycharm下PyQt5等等方式都可以搜索到的。我建议大家都用Anaconda,非常方便。
我选择的是PyQt5,有个问题就是,现在PyQt5的资料不是很丰富,所以必选要结合Qt来学习,这花了我很长一段时间。这里我先给出一个相对比较官方的文档链接给大家: https://pythonspot.com/en/pyqt5/ 。这个文档里面有很多的简单控件的应用实例,所以还是比较好的。 当所有的环境配置好之后,可以先写一些简单的程序来熟悉一下基本的控件,在设计的时候可以用QtDesigner来进行简单的辅助设计,对于QtDesigner大家可以自己搜一下教程,很多,也算是比较简单,就是拖控件。
割割割割割割割割割割割割割割割割割割割割割。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
现在呢,进入我们的主题,开始设计我们的仪表盘。关于仪表盘,我遇到的第一个问题就是指针的旋转问题,首先仪表盘本身我实际是找个这样的一张图片。贴上我的酷炫神图:
但是有一个问题。。。这张图有太多的我们不想要的东西,比如仪表盘上的指针,使我们需要取消的,因为我们最后的指针是需要我们画上去的,可以旋转的。还有哪些多余的文字。
我这个人比较糙,也不会什么PS,于是我用了最简单的方法,就是用的电脑上的画图。
我把图片放到最大,然后用橡皮擦将不用的擦掉,然后使用背景色进行填充或者用画笔画上。
最后我做出了这样的图片:
这就是我们的素材了。
简单,暴力。
然后我们需要将我们的图片设置成我们窗口的桌面背景。
贴上我实现桌面背景的方法。
[mw_shl_code=python,true] #设置桌面背景
def setBackground(self):
painter =QPainter(self)