You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何隐藏编辑文本及长度?输入Root密码时光标不移动的技术问题

解决MATLAB中Root密码输入的隐藏与光标固定问题

首先,inputdlg函数本身不支持密码输入隐藏,也无法固定光标位置,你需要改用以下两种方案来实现需求:

方案一:自定义MATLAB密码对话框(固定光标+隐藏输入)

通过创建图形窗口和密码输入控件,设置隐藏字符并强制锁定光标位置:

function senha_root = getRootPassword()
    fig = figure('Visible','off','Position',[100 100 350 100],'Name','Para Alterar Permissões de Porta USB');
    
    % 添加提示文本
    uicontrol('Style','text','Position',[20 60 200 20],'String','Senha de Administrador:');
    
    % 创建密码输入框,设置隐藏规则并锁定光标
    passwordBox = uicontrol('Style','edit','Position',[220 60 100 20],...
        'PasswordChar','*',... % 用*隐藏输入,设为''可完全不显示输入内容
        'Enable','on',...
        'Callback',@(~,~)set(passwordBox,'CursorPosition',1)); % 强制光标固定在首位
    
    % 添加确认按钮
    confirmBtn = uicontrol('Style','pushbutton','Position',[125 20 100 30],...
        'String','Confirmar','Callback',@(~,~)close(fig));
    
    % 显示窗口并等待关闭
    set(fig,'Visible','on');
    waitfor(fig);
    
    % 获取输入的密码
    senha_root = get(passwordBox,'String');
end

调用该函数即可获得隐藏输入的密码,且光标不会随输入移动。

方案二:直接调用系统Shell的密码输入命令

如果最终是要在Shell中执行Root权限命令,可直接让MATLAB调用系统自带的密码输入工具,自动实现隐藏输入:

% Linux/macOS 环境下读取密码
[status, senha_root] = system('read -s -p "Senha de Administrador: " pass && echo $pass');
senha_root = strtrim(senha_root); % 去除多余换行符

% 示例:用获取的密码执行USB端口权限修改命令
system(['echo ', senha_root, ' | sudo -S chmod 777 /dev/ttyUSB0']);

这种方式下,终端会自动隐藏输入的密码,光标也不会发生移动(取决于终端实现,主流终端均支持)。

关于“文本颜色改背景色”方案的说明

inputdlg是MATLAB自带的系统级对话框,无法直接修改输入框的文本和背景色来隐藏输入,因此该方案不可行,必须改用上述自定义控件或系统命令的方式。

内容的提问来源于stack exchange,提问作者armando

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 18:46:11