合宙Air724UG LuatOS-Air LVGL API控件--日历 (Calendar)
日历 (Calendar)

LVGL 提供了一个用来选择和显示当前日期的日历控件。
示例代码
– 高亮显示的日期
highlightDate = lvgl.calendar_date_t()
– 日历点击的回调函数
– 将点击日期设置高亮
function event_handler(obj, event)
if event == lvgl.EVENT_VALUE_CHANGED then
date = lvgl.calendar_get_pressed_date(obj)
if date then
print(string.format(“Clicked date: %02d.%02d.%d\n”, date.day, date.month, date.year))
highlightDate.year = date.year
highlightDate.month = date.month
highlightDate.day = date.day
lvgl.calendar_set_highlighted_dates(obj, highlightDate, 1)
end
end
end
– 创建日历
calendar = lvgl.calendar_create(lvgl.scr_act(), nil)
lvgl.obj_set_size(calendar, 235, 235)
lvgl.obj_align(calendar, nil, lvgl.ALIGN_CENTER, 0, 0)
lvgl.obj_set_event_cb(calendar, event_handler)
– 设置今天日期
today = lvgl.calendar_date_t()
today.year = 2018
today.month = 10
today.day = 23
lvgl.calendar_set_today_date(calendar, today)
lvgl.calendar_set_showed_date(calendar, today)
创建
通过 lvgl.calendar_create 函数可以获取一个日历控件。
calendar = lvgl.calendar_create(lvgl.scr_act(), nil)
要知道日历控件是个大家伙,虽然可以对日历控件设置大小,但是如果如果尺寸显示过小,显示效果会严重折扣。毕竟这样的控件不会像那些简单的矢量图形一样可以自动调整。
lvgl.obj_set_size(calendar, 128, 160)
设置日历大小 128*160 显示效果就是这样。所以屏幕分辨率不是很高,不建议使用日历控件。

使用
日历控件当然是用在显示日期的地方,一个日历控件就能当成是一个应用了。也可以辅助用户选择日期,让用户输入一个日期还是比较繁琐的,格式也不好确定,而且用户很有可能会输入一个不存在的日期 2021年02月29日。通过日历控件可以很好的辅助用户选择日期。
日期
日期是通过 lvgl.calendar_date_t() 函数创建的,这是个用户自定义数据,注意不要用 talbe 创建日期,两者还是有区别的。
today = lvgl.calendar_date_t()
today.year = 2018
today.month = 8
today.day = 8
选择/设置日期
日历控件有三个常用日期,今天的日期,高亮日期,当前显示的日期。
today = lvgl.calendar_date_t()
today.year = 2018
today.month = 10
today.day = 23
lvgl.calendar_set_today_date(calendar, today) – 设置当前日期
show = lvgl.calendar_date_t()
show.year = 2018
show.month = 9
show.day = 23
lvgl.calendar_set_showed_date(calendar, show) – 设置显示日期
light = lvgl.calendar_date_t()
light.year = 2018
light.month = 10
light.day = 23
lvgl.calendar_set_highlighted_dates(calendar, light, 1) – 设置高亮日期
来看下这三个日期的区别:
image.png
2018年10月11日是高亮显示的效果。
2018年10月23日是当前日期的显示效果。
但是控件默认显示是在9月,因为显示的日期是2018年09月23日。

事件
除了对象的通用事件以外,日历控件可以通过 lvgl.EVENT_VALUE_CHANGED 事件获取当前用户点击的日期。
function event_handler(obj, event)
if event == lvgl.EVENT_VALUE_CHANGED then
date = lvgl.calendar_get_pressed_date(obj)
if date then
print(string.format(“Clicked date: %02d.%02d.%d\n”, date.day, date.month, date.year))
end
end
end
lvgl.obj_set_event_cb(calendar, event_handler)


API
lvgl.calendar_create
调用 lvgl.calendar_create(par, copy)
功能 创建日历对象
返回 指向创建的日历的指针
参数
par 指向对象的指针, 它将是新日历的父对象
copy 指向日历对象的指针, 如果不为 nil, 则将从其复制新对象
lvgl.calendar_set_today_date
调用 lvgl.calendar_set_today_date(calendar, today)
功能 设定今天的日期
参数
calendar 指向日历对象的指针
today 指向包含今天的日期的变量的指针
lvgl.calendar_set_showed_date
调用 lvgl.calendar_set_showed_date(calendar, showed)
功能 设置当前显示
参数
calendar 指向日历对象的指针
showed 指向包含要显示日期的变量的指针。
lvgl.calendar_set_highlighted_dates
调用 lvgl.calendar_set_highlighted_dates(calendar, light, num)
功能 设置高亮显示日期
参数
calendar 指向日历对象的指针
light 指向包含要显示日期的变量的指针。
num 高亮日期个数。
lvgl.calendar_get_today_date
调用 lvgl.calendar_get_today_date(calendar)
功能 获取今天的日期
返回 指向包含今天的日期的变量的指针。
参数
calendar 指向日历对象的指针
lvgl.calendar_get_showed_date
调用 lvgl.calendar_get_showed_date(calendar)
功能 获取当前显示
返回 包含日期的变量的指针正在显示。
参数
calendar 指向日历对象的指针
lvgl.calendar_get_pressed_date
调用 lvgl.calendar_get_pressed_date(calendar)
功能 获取按下日期。
返回 指向包含按下日期的变量的指针。如果当前未按下,显示 nil。
参数
calendar 指向日历对象的指针
相关文章:
合宙Air724UG LuatOS-Air LVGL API控件--日历 (Calendar)
日历 (Calendar) LVGL 提供了一个用来选择和显示当前日期的日历控件。 示例代码 – 高亮显示的日期 highlightDate lvgl.calendar_date_t() – 日历点击的回调函数 – 将点击日期设置高亮 function event_handler(obj, event) if event lvgl.EVENT_VALUE_CHANGED then da…...
[python]问题:pandas处理excel里的多个sheet
Pandas 可以很容易地处理 Excel 文件中的多个工作表。首先,你需要安装 pandas 和 openpyxl(用于读取 .xlsx 文件)库。你可以使用以下命令安装这两个库: pip install pandas openpyxl接下来,你可以使用以下代码来处理 Excel 文件中的多个工作表: import pandas as pd# 读…...
[MySQL] MySQL基础操作汇总
文章目录 前言1.数据库概述1.1 数据库相关概念1.2登录MySQL:1.3 MySQL常用命令1.4表:1.5SQL语句分类: 2.CRUD操作2.1 DQL1.基础查询基础查询(简单查询)条件查询:排序查询:分组查询:分…...
C语言每日一题 ---- 打印从1到最大的n位数(Day 1)
本专栏为c语言练习专栏,适合刚刚学完c语言的初学者。本专栏每天会不定时更新,通过每天练习,进一步对c语言的重难点知识进行更深入的学习。 💓博主csdn个人主页:小小unicorn ⏩专栏分类:C语言天天练 &#x…...
2023-08-23 LeetCode每日一题(统计点对的数目)
2023-08-23每日一题 一、题目编号 1782. 统计点对的数目二、题目链接 点击跳转到题目位置 三、题目描述 给你一个无向图,无向图由整数 n ,表示图中节点的数目,和 edges 组成,其中 edges[i] [ui, vi] 表示 ui 和 vi 之间有一…...
LLMs之Code:SQLCoder的简介、安装、使用方法之详细攻略
LLMs之Code:SQLCoder的简介、安装、使用方法之详细攻略 目录 SQLCoder的简介 1、结果 2、按问题类别的结果 SQLCoder的安装 1、硬件要求 2、下载模型权重 3、使用SQLCoder 4、Colab中运行SQLCoder 第一步,配置环境 第二步,测试 第…...
数学建模(四)整数规划—匈牙利算法
目录 一、0-1型整数规划问题 1.1 案例 1.2 指派问题的标准形式 2.2 非标准形式的指派问题 二、指派问题的匈牙利解法 2.1 匈牙利解法的一般步骤 2.2 匈牙利解法的实例 2.3 代码实现 一、0-1型整数规划问题 1.1 案例 投资问题: 有600万元投资5个项目&…...
openGauss学习笔记-47 openGauss 高级数据管理-权限
文章目录 openGauss学习笔记-47 openGauss 高级数据管理-权限47.1 语法格式47.2 参数说明47.3 示例 openGauss学习笔记-47 openGauss 高级数据管理-权限 数据库对象创建后,进行对象创建的用户就是该对象的所有者。数据库安装后的默认情况下,未开启三权分…...
开始MySQL之路——MySQL 事务(详解分析)
MySQL 事务概述 MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等…...
注解和class对象和mysql
注解 override 通常是用在方法上的注解表示该方法是有重写的 interface 表示一个注解类 比如 public interface override{} 这就表示是override是一个注解类 target 修饰注解的注解表示元注解 deprecated 修饰某个元素表示该元素已经过时了 1.不代表该元素不能用了&…...
【桌面小屏幕项目】ESP32开发环境搭建
视频教程链接: 【【有手就行系列】嵌入式单片机教程-桌面小屏幕实战教学 从设计、硬件、焊接到代码编写、调试 ESP32 持续更新2022】 https://www.bilibili.com/video/BV1wV4y1G7Vk/?share_sourcecopy_web&vd_source4fa5fad39452b08a8f4aa46532e890a7 一、esp…...
CSS 滚动容器与固定 Tabbar 自适应的几种方式
问题 容器高度使用 px 定高时,随着页面高度发生变化,组件展示的数量不能最大化的铺满,导致出现底部留白。容器高度使用 vw 定高时,随着页面宽度发生变化,组件展示的数量不能最大化的铺满,导致出现底部留白…...
IP 地址追踪工具
IP 地址跟踪工具是一种网络实用程序,允许您扫描、跟踪和获取详细信息,例如 IP 地址的 MAC 和接口 ID。IP 跟踪解决方案通过使用不同的网络扫描协议来检查网络地址空间来收集这些详细信息。一些高级 IP 地址跟踪器软件(如 OpUtils)…...
最新企业网盘产品推荐榜发布
随着数字化发展,传统的文化存储方式已无法跟上企业发展的步伐。云存储的出现为企业提供了新的文件管理存储模式。企业网盘作为云存储的代表性工具,被越来越多的企业所青睐。那么在众多企业网盘产品中,企业该如何找到合适的企业网盘呢…...
实用的面试经验分享:程序员们谈论他们的面试历程
🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…...
6.oracle中listagg函数使用
1. 作用 可以实现行转列,将多列数据聚合为一列,实现数据的压缩 2. 语法 listagg(measure_expr,delimiter) within group ( order by order_by_clause); 解释: measure_expr可以是基于任何列的表达式 delimiter分隔符,…...
习题练习 C语言(暑期)
编程能力小提升! 前言一、转义字符二、重命名与宏定义三、三目运算符四、计算日期到天数转换五、计算字符串长度六、宏定义应用七、const常量八、C语言基础九、const常量(二)十、符号运算十一、记负均正十二、SWITCH,CASE十三、错…...
C++中虚函数表的概念
当一个类对象指针调用虚函数时,这就涉及到 运行时多态 的概念。这意味着实际调用的函数取决于对象的实际类型,而不仅仅是指针的静态类型。 假设我们有以下的类层次结构: class Base { public:virtual void print() {std::cout << &qu…...
代码随想录算法训练营第四十八天 | 198.打家劫舍,213.打家劫舍II,337.打家劫舍III
代码随想录算法训练营第四十八天 | 198.打家劫舍,213.打家劫舍II,337.打家劫舍III 198.打家劫舍213.打家劫舍II337.打家劫舍III 198.打家劫舍 题目链接 视频讲解 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金ÿ…...
uniapp项目实战系列(1):导入数据库,启动后端服务,开启代码托管
目录 前言前期准备1.数据库的导入2.运行后端服务2.1数据库的后端配置2.2后端服务下载依赖,第三方库2.3启动后端服务 3.开启gitcode代码托管 ✨ 原创不易,还希望各位大佬支持一下! 👍 点赞,你的认可是我创作的动力&…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...
三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...
【 java 虚拟机知识 第一篇 】
目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...
