MPDisplay 是一款针对 MicroPython、CircuitPython 和 CPython(标准Python)等多种 Python 版本的通用显示器、事件和设备驱动框架。它可以作为独立工具为您的应用程序创建图形前端,也可以作为基础与 LVGL、MicroPython-touch 等 GUI 库或您自己开发的 GUI 框架结合使用。MPDisplay 的主要目的是为 MicroPython 提供显示器和触摸驱动程序,但它对那些可能从未接触过 MicroPython 的开发者同样有用。
MPDisplay 的优势
1. 跨平台兼容性
MPDisplay 提供了统一的 API,适用于 MicroPython、CircuitPython 和 CPython,使其能够在不同的平台之间无缝迁移。例如,您可以将 ESP32-S3 上的 MicroPython 代码移植到 Windows 上的 CPython 环境中,而无需修改代码。您可以在桌面、笔记本电脑或 Chromebook 上进行图形开发,然后将代码移植到微控制器,与您的传感器和设备交互。CPython 的错误消息比 MicroPython 更详细,这使得在出现问题时更容易进行故障排除。
2. 设备兼容性
MPDisplay 基于微控制器上的可用设备,而这些设备不一定在桌面操作系统上可用。例如,旋钮编码器和鼠标滚轮显示为相同的设备类型,产生相同的事件。微控制器上的触摸屏与桌面上的鼠标产生相同的事件。键盘/按键也是如此。
3. 可扩展性
MPDisplay 提供了一些基本元素,您可以利用这些元素添加自己的库、类和函数,以实现更强大的功能。
4. 颜色调色板
MPDisplay 提供了一些内置的调色板,以及生成自定义调色板的机制。
5. 丰富的示例
MPDisplay 包含了许多示例,包括专门为 MPDisplay 开发的示例,以及从 Russ Hughes 的 st7789py_mpy 移植的示例。它还兼容 Peter Hinch 的 MicroPython GUI 库 MicroPython-Touch 和 Nano-GUI 在 MicroPython 上的示例。
6. 硬件支持
MPDisplay 支持在微控制器和类 Unix 操作系统上的 MicroPython。
7. 高效的驱动程序
在 MicroPython 上,MPDisplay 支持 kdschlosser 的 lvgl_micropython 总线驱动程序,这是一种用 C 语言编写的速度非常快的总线驱动程序。
8. 多种显示驱动方式
MPDisplay 支持 CircuitPython 的 FourWire 和 ParallelBus 总线驱动程序,以及基于 FrameBufferDisplay 的接口,例如 dotclockframebuffer、usb_video 和 rgbmatrix。
入门指南
重要:您需要从 board_configs 目录中找到与您的硬件相匹配的 board_config.py 文件。如果您在桌面操作系统上运行,该文件会为您提供,您不需要任何其他文件。如果您在微控制器(如 ESP32 或 RP2040)上运行,您还需要在 board_config.py 中引用的显示器、触摸和编码器驱动程序。这些驱动程序中的许多可以在 drivers 目录中找到。有关 board_config.py 的更多详细信息,请参阅本节末尾。
MPDisplay 的核心功能
MPDisplay 本质上是一个用于 GUI 库的基础,而不是一个 GUI 库本身。它不提供诸如按钮、复选框或滑块之类的控件,也不提供计时机制。如果需要,您将需要一个 GUI 库来提供这些功能,尽管许多应用程序不需要它们。(如果需要使用定时中断,您可以使用跨平台的库 timer。它适用于 CPython 和 MicroPython,但不适用于 CircuitPython。您也可以使用 asyncio 进行计时。)
总结
MPDisplay 是一款功能强大的图形界面框架,它提供了跨平台兼容性、设备兼容性、可扩展性和丰富的示例,使其成为构建嵌入式应用程序的用户界面的理想选择。无论您是 MicroPython、CircuitPython 还是 CPython 开发者,MPDisplay 都能为您提供强大的图形界面开发能力。
项目地址:https://github.com/bdbarnett/mpdisplay