本节课主要学习绘制按钮和按钮点击功能。
本次实验的参考代码路径为:CanMV\04-GUI\button.py
模块的出厂固件已经集成lvgl图形化库,如果下载过其他固件,请烧录回出厂固件再进行实验。
import lvgl as lvimport lvgl_helper as lv_himport lcdimport timefrom machine import Timerimport touchscreen as ts
xxxxxxxxxxlcd.init()ts.init()lv.init()
xxxxxxxxxxdisp_buf1 = lv.disp_buf_t()buf1_1 = bytearray(320*10)lv.disp_buf_init(disp_buf1, buf1_1, None, len(buf1_1)//4)disp_drv = lv.disp_drv_t()lv.disp_drv_init(disp_drv)disp_drv.buffer = disp_buf1disp_drv.flush_cb = lv_h.flushdisp_drv.hor_res = 320disp_drv.ver_res = 240lv.disp_drv_register(disp_drv)
xxxxxxxxxxindev_drv = lv.indev_drv_t()lv.indev_drv_init(indev_drv)indev_drv.type = lv.INDEV_TYPE.POINTERindev_drv.read_cb = lv_h.readlv.indev_drv_register(indev_drv)
xxxxxxxxxxscr = lv.obj()btn = lv.btn(scr)btn.align(lv.scr_act(), lv.ALIGN.CENTER, 0, 0)label = lv.label(btn)label.set_text("Button")label.set_size(20,20)lv.scr_load(scr)btn.set_event_cb(on_btn_cb)
xxxxxxxxxxbtn_count = 0def on_btn_cb(obj, event):global btn_countif event == lv.EVENT.CLICKED:btn_count += 1label.set_text(str(btn_count))print("Button Press:", btn_count)
xxxxxxxxxxtim = time.ticks_ms()while True:if time.ticks_ms()-tim > 5:tim = time.ticks_ms()lv.task_handler()lv.tick_inc(5)
将K210模块通过microUSB数据线连接到电脑上,CanMV IDE点击连接按钮,连接完成后点击运行按钮,运行例程代码。也可以将代码作为main.py下载到K210模块上运行。
可以看到LCD显示屏中间显示一个蓝色的"Button"按钮,每次触摸按钮,按钮上的数字就会自动加1。


如果需要再次运行程序,请重新连接,避免按钮增加数字叠加的问题。
使用CanMV IDE,搭配出厂固件写好的MicroPython语法,可以非常方便绘制按钮和处理按钮触摸事件。按钮触摸事件处理最好不要打印数据,这里只是作为演示方便才加上打印数据。