几个域名查询框的textarea改成text

本文记录了一次关于.cm.tel等域名查询时输入框显示异常的问题排查过程。作者最初将输入框设置为文本区域导致尺寸不符,在尝试调整未果后,通过检查样式类解决了问题。此外,文章还提到了在版本控制时要注意覆盖文件。

在.cm .tel这些域名查询的时候,把input type="text"做成了textarea,改的时候,发现改成text还是那么大,弄了几分钟还是一样大,于是想会不会是样式class的问题,去问小P,果然。先前改的时候就不够认真。

 

check out 的时候要overwritten 一下。

 

 

 

 

import gradio as gr import requests # 配置LM Studio本地API参数 LM_STUDIO_API = "http://localhost:1234/v1/chat/completions" API_HEADERS = {"Content-Type": "application/json"} # 可用语言列表(支持扩展) LANGUAGE_MAP = { "中文": "chinese", "英语": "english", "日语": "japanese", "韩语": "korean", "法语": "french", "德语": "german", "西班牙语": "spanish" } # 核心翻译函数 def lmstudio_translate(text, source_lang, target_lang): """调用LM Studio API进行文本翻译""" if not text.strip(): return "" # 构建翻译指令 system_prompt = ( f"你是一个专业翻译引擎,需严格遵守以下规则:" f"\n1. 仅执行{source_lang}到{target_lang}的翻译任务" f"\n2. 禁止解释、润色或添加额外内容" f"\n3. 保持原文格式和标点" ) # 构造API请求 payload = { "messages": [ {"role": "system", "content": system_prompt}, {"role": "user", "content": text} ], "temperature": 0.1, "max_tokens": 2000, "stop": [] } try: response = requests.post(LM_STUDIO_API, headers=API_HEADERS, json=payload, timeout=30) response.raise_for_status() translated_text = response.json()["choices"][0]["message"]["content"] return translated_text except Exception as e: return f"⚠️ 翻译失败: {str(e)}" # 创建Gradio界面 with gr.Blocks(title="MELAC翻译服务", theme=gr.themes.Soft()) as app: gr.Markdown("## 🌐MELAC多语言翻译系统") gr.Markdown("> *安全提示:当前服务仅开放域名内访问*") with gr.Row(): # 左侧输入区 with gr.Column(): source_lang = gr.Dropdown( label="源语言", choices=list(LANGUAGE_MAP.keys()), value="中文", interactive=True ) input_text = gr.Textbox( label="输入内容", placeholder="在此输入需要翻译的文本...", lines=8, max_lines=20 ) # 右侧输出区 with gr.Column(): target_lang = gr.Dropdown( label="目标语言", choices=list(LANGUAGE_MAP.keys()), value="英语", interactive=True ) output_text = gr.Textbox( label="翻译结果", placeholder="翻译内容将显示在这里...", lines=8, interactive=False ) # 控制按钮 translate_btn = gr.Button("🚀 执行翻译", variant="primary") clear_btn = gr.Button("🧹 清空内容") # 事件绑定 translate_btn.click( fn=lambda t, sl, tl: lmstudio_translate(t, LANGUAGE_MAP[sl], LANGUAGE_MAP[tl]), inputs=[input_text, source_lang, target_lang], outputs=output_text ) clear_btn.click( fn=lambda: ["", "", ""], inputs=[], outputs=[input_text, output_text, source_lang] ) # 启动应用(仅限内网访问) app.launch( server_name="0.0.0.0", server_port=5000, ) 我像把两边输入框的字体都改成win11系统自带的宋体
10-31
<%@ page contentType="text/html;charset=UTF-8"%> <%@ include file="/WEB-INF/include/adminCommon.jsp"%> <tags:wjs items="calendar.js"></tags:wjs> <body> <!-- 导航条区 --> <c:import url="/WEB-INF/views/admin/adminNavbar.jsp"></c:import> <div id="content"> <div class="container-fluid"> <div class="row-fluid"> <div class="span3"> <!-- 个人信息区 --> <c:import url="/WEB-INF/views/admin/adminInfo.jsp"></c:import> <hr /> <!-- 左侧菜单区 --> <c:import url="/WEB-INF/views/admin/adminLeft.jsp"></c:import> </div> <!-- /span3 --> <div class="span9"> <!--这里是操作完成的消息提示区 --> <c:import url="/WEB-INF/include/message.jsp"></c:import> <!-- 标题区 --> <ul class="breadcrumb"> <li>过程管理<span class="divider">/</span></li> <li><a href="${ctx}/processArea">过程域管理</a> <span class="divider">/</span></li> <li class="active">编辑过程域</li> </ul> <!-- 表单区 --> <form id="searchForm1" action="${ctx}/processArea/intomodify/${processArea.processAreaKey}" method="post"> <input type="hidden" name="processAreaKey" value="${processArea.processAreaKey}"> <div class="widget-header"> <i class="icon-plus"></i> <h3>编辑过程域</h3> </div> <!-- /widget-header --> <div class="widget-content" style="margin-bottom: 15px;"> <table style="width: 100%"> <tr> <td>过程域标识</td> <td><input type="text" id="txt_processAreaID" name="processAreaID" value="${processArea.processAreaID}" class="input-medium"> <input id="hid_processAreaID" value="${processArea.processAreaID}" type="hidden" /></td> </tr> <tr> <td>过程域名称</td> <td><input type="text" id="txt_processAreaName" name="processAreaName" value="${processArea.processAreaName}" class="input-medium"> <input id="hid_productName" value="${processArea.processAreaName }" type="hidden" /></td> </tr> <tr> <td>过程域类型</td> <td><select id="txt_processAreaType" name="processAreaType" style="width: 160px;"> <option value="">--请选择--</option> <c:forEach items="${processList}" var="processArea"> <option value="${processArea.processAreaKey }">${processArea.processAreaName }</option> </c:forEach> </select></td> </tr> <tr> <td>简介</td> <td><textarea rows="10" cols="10" name="remark"></textarea> </td> </tr> <tr> <td align="right" colspan="4"><input class="btn" type="button" onclick="window.history.back(-1)" value="返回"> <input class="btn btn-primary" type="submit" value="确定"> </td> </tr> </table> </div> </form> </div> </div> <!-- /row --> </div> <!-- /container --> </div> <!-- /content --> <!-- 页脚区 --> <c:import url="/WEB-INF/views/admin/adminFooter.jsp"></c:import> </body> <!-- 表单校验区 --> <script type="text/javascript"> $(document).ready(function() { $("#searchForm1").validate({ rules : { processAreaName : { required : true, remote : { url : "${ctx}/processArea/processNameUnique", type : "post", dataType : "json", data : { processAreaName : function() { return $("#txt_processAreaName").val(); }, hidSystemName : function() { return $("#hid_processAreaName").val(); } } } }, messages : { processAreaName : { remote : "该过程域名称已存在", } } }); }); </script> 修改页面不显示原有没修改的信息
09-26
<think>我们之前讨论了lv_obj_add_style函数的参数,现在用户询问如何让lvgl的textarea框无法编辑。 根据LVGL文档,我们可以通过以下两种方法实现: 1. 设置文本框为只读模式(Read-only mode): 使用lv_textarea_set_readonly(textarea, true) 2. 移除或禁用与输入相关的事件回调(例如,如果之前添加了键盘事件,可以移除) 但用户使用的是LVGL的textarea控件,根据引用中提到lv_textarea是用于文本输入的控件,支持多种功能,包括密码输入等。因此,最简单的方法是将其设置为只读。 步骤: 1. 获取指向textarea对象的指针(假设为ta) 2. 调用lv_textarea_set_readonly(ta, true) 另外,也可以通过样式来改外观以表示不可编辑(例如灰色背景),但核心功能上还是需要设置只读属性。 示例代码: ```c lv_obj_t * ta = lv_textarea_create(lv_scr_act()); // 创建文本框 lv_textarea_set_text(ta, "Initial text"); // 设置文本 // 设置文本框为只读 lv_textarea_set_readonly(ta, true); ``` 如果需要根据条件切换可编辑状态,可以使用lv_textarea_set_readonly(ta, false)重新启用。 注意:在只读模式下,用户无法通过键盘或触摸输入修改文本,但可以通过程序(API)修改文本内容(使用lv_textarea_set_text等函数)。 引用中提到lv_textarea支持文本插入、删除等功能,但在只读模式下,这些用户交互会被禁用。 相关问题: 1. 如何设置文本框的最大输入长度? 2. 如何为文本框添加密码模式? 3. 如何检测文本框内容化? 这些都可以通过LVGL的API实现,例如: - lv_textarea_set_max_length(ta, max_len) - lv_textarea_set_password_mode(ta, true) - 使用事件LV_EVENT_VALUE_CHANGED </think>### 如何让 LVGL 的文本框无法编辑 在 LVGL 中,要使 `lv_textarea` 文本框无法编辑,主要有两种方法: #### 1. **设置只读模式(推荐)** 使用 `lv_textarea_set_readonly()` 函数直接禁止用户编辑: ```c lv_obj_t *ta = lv_textarea_create(lv_scr_act()); // 创建文本框 lv_textarea_set_readonly(ta, true); // 设为只读状态 ``` 效果: - 用户无法通过键盘或触摸输入修改文本 - 文本可选择/复制(如启用选择功能) - 光标消失,视觉上明确标识为不可编辑[^2] #### 2. **移除输入事件响应** 通过事件回调拦截输入操作: ```c static void event_cb(lv_event_t *e) { lv_event_code_t code = lv_event_get_code(e); if(code == LV_EVENT_KEY || code == LV_EVENT_PRESSED) { lv_event_stop_propagation(e); // 拦截键盘和触摸事件 } } lv_obj_add_event_cb(ta, event_cb, LV_EVENT_ALL, NULL); // 绑定事件 ``` 效果: - 完全阻止用户交互 - 需手动管理其他事件(如滚动) --- ### 方法对比 | 方法 | 代码复杂度 | 交互保留能力 | 视觉反馈 | |--------------|------------|--------------------|----------| | **只读模式** | ★☆☆☆☆ (简单) | 保留滚动/选择功能 | 自动隐藏光标 | | **事件拦截** | ★★★☆☆ (中等) | 完全禁用所有交互 | 需自定义样式 | --- ### 完整示例 ```c // 创建文本框 lv_obj_t *ta = lv_textarea_create(lv_scr_act()); lv_textarea_set_text(ta, "只读文本示例"); // 方法1: 设为只读 lv_textarea_set_readonly(ta, true); // 方法2: 添加事件拦截(二选一) // lv_obj_add_event_cb(ta, event_cb, LV_EVENT_ALL, NULL); // 视觉强化:灰色背景提示不可编辑 lv_style_t style; lv_style_init(&style); lv_style_set_bg_color(&style, lv_color_hex(0xEEEEEE)); lv_obj_add_style(ta, &style, LV_PART_MAIN); ``` --- ### 注意事项 1. **编程修改仍有效** 即使设为只读,仍可通过 `lv_textarea_set_text()` 等 API 修改内容。 2. **密码模式兼容性** 在只读状态下,密码模式 (`lv_textarea_set_password_mode()`) 的星号显示仍正常生效[^2]。 3. **移动端适配** 触摸屏设备需额外处理长按选择事件,避免与滚动冲突。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值