使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第七讲)

news2025/4/13 4:49:14

这一期来讲解与文本框配套使用的键盘,以及键盘如何在项目中开启。
打开GUI_guider软件平台,在左上角点开工程选项,在该栏目的最下方点击系统设置。在这里插入图片描述
随后在系统设置界面中点击项目选项,选择显示键盘。
在这里插入图片描述
在该界面中可以设置键盘文字的大小和文本类型,最下方判断键盘是否支持中文输入(中文输入,当汉字库不够大时,用户点击中文输入会少很多字)。例如下图所示:
在这里插入图片描述
文本选项中只有四个文字,这就是文字库缺少的表现。
键盘分为四种模式:
(1)2.1 LV_KEYBOARD_MODE_TEXT_LOWER
显示小写字母,默认的情况。
在这里插入图片描述
(2)LV_KEYBOARD_MODE_TEXT_UPPER
显示大写字母,包括键盘和文本框显示。
在这里插入图片描述
(3)LV_KEYBOARD_MODE_SPECIAL
显示特殊字符
在这里插入图片描述
(4) LV_KEYBOARD_MODE_NUMBER
显示数字。
在这里插入图片描述
以下是开启键盘功能的文本框代码:
//Write codes screen_v3_z
ui->screen_v3_z = lv_textarea_create(ui->screen);
lv_textarea_set_text(ui->screen_v3_z, “”);
lv_textarea_set_placeholder_text(ui->screen_v3_z, “”);
lv_textarea_set_password_bullet(ui->screen_v3_z, “*”);
lv_textarea_set_password_mode(ui->screen_v3_z, false);
lv_textarea_set_one_line(ui->screen_v3_z, true);
lv_textarea_set_accepted_chars(ui->screen_v3_z, “”);
lv_textarea_set_max_length(ui->screen_v3_z, 16);
//当LV_USE_KEYBOARD为1时启用虚拟键盘,LV_USE_ZH_KEYBOARD为1时支持中文输入
#if LV_USE_KEYBOARD != 0 || LV_USE_ZH_KEYBOARD != 0
lv_obj_add_event_cb(ui->screen_v3_z, ta_event_cb, LV_EVENT_ALL, ui->g_kb_screen);
#endif
lv_obj_set_pos(ui->screen_v3_z, 160, 153);
lv_obj_set_size(ui->screen_v3_z, 195, 33);
默认是第一种键盘模式,当需要切换模式,进入到ta_event_cb函数修改模式,下面代码以数字模式举例子lv_keyboard_set_mode(kb, LV_KEYBOARD_MODE_NUMBER); 只需要改变这行代码即可。
attribute((unused)) void ta_event_cb (lv_event_t *e) {
lv_event_code_t code = lv_event_get_code(e);
#if LV_USE_KEYBOARD || LV_USE_ZH_KEYBOARD
lv_obj_t *ta = lv_event_get_target(e);
#endif
lv_obj_t *kb = lv_event_get_user_data(e);
if (code == LV_EVENT_FOCUSED || code == LV_EVENT_CLICKED)
{
#if LV_USE_ZH_KEYBOARD != 0
lv_zh_keyboard_set_textarea(kb, ta);
#endif
#if LV_USE_KEYBOARD != 0
lv_keyboard_set_textarea(kb, ta);
lv_keyboard_set_mode(kb, LV_KEYBOARD_MODE_NUMBER); // 设置为数字模式
#endif
lv_obj_move_foreground(kb);
lv_obj_clear_flag(kb, LV_OBJ_FLAG_HIDDEN);
v3card_write_cmd_mode0(LCD_MERGE_MODE,2);
v3card_write_cmd_mode0(WINDOW_X_STA,40);
v3card_write_cmd_mode0(WINDOW_X_END,439);
v3card_write_cmd_mode0(WINDOW_Y_STA,79);
v3card_write_cmd_mode0(WINDOW_Y_END,400);
v3card_write_cmd_mode0(PL_PLOT_CHANGE,1);
v3card_write_cmd_mode0(PL_PLOT_CHANGE,0);
}
if (code == LV_EVENT_CANCEL || code == LV_EVENT_DEFOCUSED)
{
#if LV_USE_ZH_KEYBOARD != 0
lv_zh_keyboard_set_textarea(kb, ta);
#endif
#if LV_USE_KEYBOARD != 0
lv_keyboard_set_textarea(kb, ta);
#endif
lv_obj_move_background(kb);
lv_obj_add_flag(kb, LV_OBJ_FLAG_HIDDEN);
v3card_write_cmd_mode0(LCD_MERGE_MODE,2);
v3card_write_cmd_mode0(WINDOW_X_STA,40);
v3card_write_cmd_mode0(WINDOW_X_END,439);
v3card_write_cmd_mode0(WINDOW_Y_STA,79);
v3card_write_cmd_mode0(WINDOW_Y_END,279);
v3card_write_cmd_mode0(PL_PLOT_CHANGE,1);
v3card_write_cmd_mode0(PL_PLOT_CHANGE,0);
}
}
下一期将讲述消息框的使用。
本文章由威三学社出品
对课程感兴趣可以私信联系

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2333551.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

通过AWS EKS 生成并部署容器化应用

今天给大家分享一个实战例子,如何在EKS上创建容器化应用并通过ALB来发布。先介绍一下几个基本概念: IAM, OpenID Connect (OIDC) 2014 年,AWS Identity and Access Management 增加了使用 OpenID Connect (OIDC) 的联合身份支持。此功能允许…

nginx入门,部署静态资源,反向代理,负载均衡使用

Nginx在linux上部署静态资源 概念介绍 Nginx可以作为静态web服务器来部署静态资源。这里所说的静态资源是指在服务端真实存在,并且能够直接展示的一些文件,比如常见的html页面、css文件、js文件、图片、视频等资源。 相对于Tomcat,Nginx处理…

智膳优选 | AI赋能的智慧食堂管理专家 —— 基于飞书多维表格和扣子(Coze)的智能解决方案

智膳优选 | AI赋能的智慧食堂管理专家 基于飞书多维表格和扣子(Coze)的智能解决方案 数据驱动餐饮管理,让每一餐都是营养与经济的完美平衡! “智膳优选”通过整合飞书与Coze,将数据智能引入校园餐饮管理&#xff0…

最新的es版本忘记密码,重置密码

刚刚安装了最新的es版本,就忘了密码,怎么重置密码呢? 一、进入es的斌目录 #进入es文件/bin 目录 ./elasticsearch-reset-password -u elastic 二 、输入对应的密码 然后再次访问 我的是去掉了ssl的访问 三、如果报错:解决 [main] WARN

Compose Multiplatform+Kotlin Multiplatfrom 第五弹跨平台 截图

截图功能 Compose MultiplatformKotlin Multiplatfrom下实现桌面端的截图功能,起码搞了两星期,最后终于做出来了,操作都很流畅,截取的文件大小也正常,可参考支持讨论! 功能效果 代码实现 //在jvmMain下创…

Elasticearch数据流向

Elasticearch数据流向 数据流向图 --- config: layout: elk look: classic theme: mc --- flowchart LR subgraph s1["图例"] direction TB W["写入流程"] R["读取流程"] end A["Logstash Pipeline"] -- 写入请求 --> B["Elas…

在docker里装rocketmq-console

首先要到github下载(这个一般是需要你有梯子) GitHub - apache/rocketmq-externals at release-rocketmq-console-1.0.0 如果没有梯子,用下面这个百度网盘链接下 http://链接: https://pan.baidu.com/s/1x8WQVmaOBjTjss-3g01UPQ 提取码: fu…

使用Python写入JSON、XML和YAML数据到Excel文件

在当今数据驱动的技术生态中,JSON、XML和YAML作为主流结构化数据格式,因其层次化表达能力和跨平台兼容性,已成为系统间数据交换的通用载体。然而,当需要将这类半结构化数据转化为具备直观可视化、动态计算和协作共享特性的载体时&…

x-cmd install | Slumber - 告别繁琐,拥抱高效的终端 HTTP 客户端

目录 核心优势,一览无遗安装应用场景,无限可能示例告别 GUI,拥抱终端 还在为调试 API 接口,发送 HTTP 请求而苦恼吗?还在各种 GUI 工具之间切换,只为了发送一个简单的请求吗?现在,有…

apijson 快速上手

apijson是强大的工具,简化了CRUD的操作,只要有数据库表,就能自动生成RESTFUL接口。但初次上手也是摸索了很长时间,尤其是部署与使用上,这里尝试以初学者角度来说下: 一、好处 1、对于简单的应用&#xff…

3D激光轮廓仪知识整理

文章目录 1.原理和应用场景1.1 相机原理1.1.1 测量原理1.1.2 相机激光器1.1.3 沙姆镜头1.1.4 相机标定1.1.5 中心线提取 1.2 应用场景1.2.1 测量相关应用1.2.2 缺陷检测相关应用 2.相机参数介绍及选型介绍2.1 成像原理2.2 原始图成像2.3 生成轮廓图2.4 相机规格参数2.4.1 单轮廓…

Stable Diffusion+Pyqt5: 实现图像生成与管理界面(带保存 + 历史记录 + 删除功能)——我的实验记录(结尾附系统效果图)

目录 🧠 前言 🧾 我的需求 🔧 实现过程(按功能一步步来) 🚶‍♂️ Step 1:基本图像生成界面 🗃️ Step 2:保存图片并显示历史记录 📏 Step 3&#xff1a…

使用WasmEdge将InternLM集成到Obsidian,打造本地智能笔记助手

本文来自社区投稿,作者Miley Fu,WasmEdge Runtime 创始成员。 本文将介绍如何通过 WasmEdge 将书生浦语(InternLM)大模型部署在本地,并与 Obsidian 笔记软件集成,从而在笔记软件中直接利用大模型实现文本总…

java导入excel更新设备经纬度度数或者度分秒

文章目录 一、背景介绍二、页面效果三、代码0.pom.xml1.ImportDevice.vue2.ImportDeviceError.vue3.system.js4.DeviceManageControl5.DeviceManageUserControl6.Repeater7.FileUtils8.ResponseModel9.EnumLongitudeLatitude10.词条 四、注意点本人其他相关文章链接 一、背景介…

视频设备轨迹回放平台EasyCVR远程监控体系落地筑牢国土监管防线

一、背景概述 我国土地资源遭违法滥用的现象愈发严峻,各类土地不合理利用问题频发。不当的土地开发不仅加剧了地质危害风险,导致良田受损、森林资源的滥伐,还引发了煤矿无序开采、城市开发区违建等乱象,给国家宝贵的土地资源造成…

Stable Diffusion 四重调参优化——项目学习记录

学习记录还原:在本次实验中,我基于 Stable Diffusion v1.5模型,通过一系列优化方法提升生成图像的质量,最终实现了图像质量的显著提升。实验从基础的 Img2Img 技术入手,逐步推进到参数微调、DreamShaper 模型和 Contro…

我可能用到的网站和软件

我可能用到的网站和软件 程序员交流的网站代码管理工具前端组件库前端框架在线工具人工智能问答工具学习的网站Windows系统电脑的常用工具 程序员交流的网站 csdn博客博客园 - 开发者的网上家园InfoQ - 软件开发及相关领域-极客邦掘金 (juejin.cn) 代码管理工具 GitHub 有时…

FPGA状态机设计:流水灯实现、Modelsim仿真、HDLBits练习

一、状态机思想 1.概念 状态机(Finite State Machine, FSM)是计算机科学和工程领域中的一种抽象模型,用于描述系统在不同状态之间的转换逻辑。其核心思想是将复杂的行为拆解为有限的状态,并通过事件触发状态间的转移。 2.状态机…

2024年第十五届蓝桥杯CC++大学A组--成绩统计

2024年第十五届蓝桥杯C&C大学A组--成绩统计 题目: 动态规划, 对于该题,考虑动态规划解法,先取前k个人的成绩计算其方差,并将成绩记录在数组中,记录当前均值,设小蓝已检查前i-1个人的成绩&…

Kotlin 学习-集合

/*** kotlin 集合* List:是一个有序列表,可通过索引(下标)访问元素。元素可以在list中出现多次、元素可重复* Set:是元素唯一的集合。一般来说 set中的元素顺序并不重要、无序集合* Map:(字典)是一组键值对。键是唯一的…