https://github.com/rreilink/pylvgl
又一个lvgl的python绑定,只可惜目前仅支持到 v5.1.1 版。与最新版相比,少了一些绘图模块。
可以拿来作为熟悉API和快速设计界面的一个工具。
使用效果与mpy版相同。
使用步骤:
1、下载
git clone --recurse-submodules https://github.com/rreilink/pylvgl.git
2、按需修改分辨率
lv_conf.h:LV_HOR_RES,LV_VER_RES
3、生成扩展模块
$ python3 ./setup.py
4、安装PyQt5
$ pip3 install PyQt5
5、进入python交互界面,导入模块,开始体验。
$ python3
Python 3.6.5 (default, May 9 2018, 10:02:20)
[GCC 4.2.1 Compatible Apple LLVM 9.1.0 (clang-902.0.39.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> from pylvgl import Demo, lvgl
>>> d = Demo()
>>>
>>> b1 = lvgl.Btn(lvgl.scr_act())
>>> b1.set_size(200,50)
>>> b1.align(b1.get_parent(), lvgl.ALIGN_IN_LEFT_MID, 0, 0)
>>>
>>> l1 = lvgl.Label(b1)
>>> l1.set_text('LittlevGL')
>>>
>>> lm = lvgl.Lmeter(lvgl.scr_act())
>>> lm.align(cal.get_parent(), lvgl.ALIGN_IN_LEFT_MID, 300, 0)
>>> lm.set_range(0,100)
>>> lm.set_value(10)
>>>
>>> style_lm1.line_width = 4
>>> style_lm1.body_main_color = 0x2200
>>> style_lm1.body_grad_color = 0x0022
>>> lm.set_style(style_lm1)
>>>
>>> lb2 = lvgl.Label(lm)
>>> lb2.set_text('10%')
>>> lb2.align(lm, lvgl.ALIGN_CENTER, 0, 0)
附:
步骤5中所导入的辅助模版,另存为pylvgl.py,放在工程目录。
import lvgl
from PyQt5 import QtGui, QtWidgets, QtCore
class LvglWindow(QtWidgets.QLabel):
def __init__(self):
super().__init__()
self.setMinimumSize(lvgl.HOR_RES, lvgl.VER_RES)
self.setMaximumSize(lvgl.HOR_RES, lvgl.VER_RES)
self.timer = QtCore.QTimer()
self.timer.timeout.connect(self.update)
self.timer.start(10)
def mousePressEvent(self, evt):
self.mouseMoveEvent(evt)
def mouseReleaseEvent(self, evt):
self.mouseMoveEvent(evt)
def mouseMoveEvent(self, evt):
pos = evt.pos()
lvgl.send_mouse_event(pos.x(), pos.y(), evt.buttons() & QtCore.Qt.LeftButton)
def update(self):
# Poll lvgl and display the framebuffer
for i in range(10):
lvgl.poll()
data = bytes(lvgl.framebuffer)
img = QtGui.QImage(data, lvgl.HOR_RES, lvgl.VER_RES, QtGui.QImage.Format_RGB16)
pm = QtGui.QPixmap.fromImage(img)
self.setPixmap(pm)
class Demo():
def __init__(self):
self.app = QtWidgets.QApplication([])
self.window = LvglWindow();
self.window.show()
def run(self):
self.app.exec_()
补充:
该工程使用bindingsgen.py和sourceparser.py两个自定义工具,及lvglmodule_template.c模版,自动解析lvgl源码并生成编译扩展模块所需的接口代码,即lvglmodule.c。
上述工具基于pycparser模块,且根据lvgl定制,与API版本关联,目前支持到v5.1.1。
有兴趣的朋友,可以尝试自行编译。
$ pip3 install pycparser
$ python3 ./bindingsgen.py
离线