本文介绍在树莓派上使用python和qt开发GUI程序,程序功能为显示DS18B20模块的温度曲线。开发环境依然使用之前介绍的PyCharm编写python代码和远程开发,然后使用QtCreator编写QML界面的方式。
1、新建项目1.1、新建工程
打开PyCharm,新建工程tempMonitor,如下:
1.2、添加python主程序
tempMonitor.py 主程序如下:
- import math
- import os
- import sys
- import time
- from pathlib import Path
-
- from PySide2.QtCore import Qt, QObject, Slot
- from PySide2.QtQml import QQmlApplicationEngine
- from PySide2.QtWidgets import QApplication
-
- class Controler(QObject):
-
- def __init__(self):
- super().__init__()
- self.tempValue = 0
-
- @Slot()
- def exit(self):
- sys.exit()
-
- @Slot(result=float)
- def getTempValue(self):
- file_name = os.path.join("/", "mnt", "1wire", "uncached", "28.99E88D0D0000", "temperature")
-
- file_object = open(file_name, 'r')
- temp = file_object.read()
-
- self.tempValue = float(temp)
-
- print("tempvalue:",self.tempValue)
-
- file_object.close()
-
- return self.tempValue
-
- if __name__=='__main__':
-
- a = QApplication(sys.argv)
-
- a.setOverrideCursor(Qt.BlankCursor)
-
- engine = QQmlApplicationEngine()
-
- controler = Controler()
- context = engine.rootContext()
- context.setContextProperty("_Controler", controler)
-
- engine.load(os.fspath(Path(__file__).resolve().parent / "ui/monitor.qml"))
-
- if not engine.rootObjects():
- sys.exit(-1)
-
- sys.exit(a.exec_())
复制代码
- 在该程序中,建立一个 Controler 类,并实现了一个获取温度的方法,获取温度后就可以再qml界面中进行显示了。
1.3、添加界面文件- 在项目中添加ui文件夹,并新建main.qml文件; 参考代码如下:
复制代码
- 界面中使用了qml的一个组件 ChartView 用于显示温度的变化曲线;
- 使用qml的组件 Gauge 来显示变化刻度;
2、执行程序2.1、上传程序到树莓派
在工程上右键将这个项目文件上传到树莓派中:
2.2、执行程序
上传后,在树莓派对应文件夹中,执行如下命令执行程序:
python3 tempMonitor.py
执行后可以看到显示如下:
当用手接触DS18B20温度模块后,可以看到温度变化曲线:
|