当前位置:首页 > 项目 > Wpython > 正文内容

LVGL_micropython 模拟器

Watrt2年前 (2022-12-07)Wpython10660

在使用micropython编写lvgl界面时有时间非常的麻烦。要在设备上才看得到效果。比较麻烦。npx的GUI-Guider软件中的模拟器给抠出来了单独使用,非常不错。

image.png

下面是运行实例:

import SDL
import utime as time
import usys as sys
import lvgl as lv
import lodepng as png
import ustruct

lv.init()
SDL.init(w=240,h=320)

# Register SDL display driver.
disp_buf1 = lv.disp_draw_buf_t()
buf1_1 = bytearray(240*10)
disp_buf1.init(buf1_1, None, len(buf1_1)//4)
disp_drv = lv.disp_drv_t()
disp_drv.init()
disp_drv.draw_buf = disp_buf1
disp_drv.flush_cb = SDL.monitor_flush
disp_drv.hor_res = 240
disp_drv.ver_res = 320
disp_drv.register()

# Regsiter SDL mouse driver
indev_drv = lv.indev_drv_t()
indev_drv.init() 
indev_drv.type = lv.INDEV_TYPE.POINTER
indev_drv.read_cb = SDL.mouse_read
indev_drv.register()
#==========================上面为调用SDL接口代码一般不用修改===========================


class CounterBtn():
    def __init__(self):
        self.cnt = 0
        #
        # Create a button with a label and react on click event.
        #

        btn = lv.btn(lv.scr_act())                               # Add a button the current screen
        btn.set_pos(10, 10)                                      # Set its position
        btn.set_size(120, 50)                                    # Set its size
        btn.align(lv.ALIGN.CENTER,0,0)
        btn.add_event_cb(self.btn_event_cb, lv.EVENT.ALL, None)  # Assign a callback to the button
        

        title = lv.label(lv.scr_act())                                    # Add a label to the button
        title.set_pos(5,5)
        title.set_text("http://www.xb6.cn")                                 # Set the labels text

        label = lv.label(btn)                                    # Add a label to the button
        label.set_text("Button")                                 # Set the labels text
        label.center()

    def btn_event_cb(self,evt):
        code = evt.get_code()
        btn = evt.get_target()
        if code == lv.EVENT.CLICKED:
            self.cnt += 1

        # Get the first child of the button which is the label and change its text
        label = btn.get_child(0)
        label.set_text("Button: " + str(self.cnt))


counterBtn = CounterBtn()



# ==============================调用刷新接口不能删除====================================
while SDL.check():
    time.sleep_ms(5)

lvgl_micropython.zip


分享给朋友:

相关文章

wpython板子的gui版本已经设计完成

wpython板子的gui版本已经设计完成

这个是已经修改过多次的了。现在是1.6版1、调整旋转编码器为5向开关2、调整LCD的SPI为HSPI(SPI1)为IO_MUX 直接硬件接口不在通过GPIO matrix,理论上能够达到速度80M(待测试)3、调整电池供电芯片为:SPX3819M5解决使用asm1117 3.3 压差不够,电压不能够稳定到3.3的BUG4、留出I2S接口5、调整I2C接口为插座位置。6、调整布线,板子更小了...

wpython_GUI 1.6板子回来了

wpython_GUI 1.6板子回来了

板子打出来了。小的元件已经SMT好了,大的元件我已经自己手焊好了,先给大家看看样板两个LED因为出于成本的原因是单面贴,双面太贵了,而且感觉不重要就先没有焊正面,大体算正常吧,但是也现在了两个BUG,还是缺少经验。1、ESP32的IO36脚和IO39脚,只支持输入模式,而且没有内部上拉,所以要外挂上拉,这点在画板的时间 没有想到。目前使用的是补焊两个电阻补救上(KEY_A、KEY_B)。2、还有一个就是屏的背景使用的是S8050当做背光开关,结果发现在虽然可以过通IO来控制引脚,但是背景电压太低...

micropython 实现tar 文件解包

micropython 实现tar 文件解包

import upip_utarfile as tar import os def run(src,dest_dir):   t = tar.TarFile(src)   if not dest_dir in os.listdir():     os.mkdir(dest_dir)  ...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。