MATLAB GUI界面编程——用MATLAB GUI做一个登录界面,设置隐藏密码,如何实现?

问题描述:

用MATLAB GUI做一个登录界面,设置隐藏密码,如何实现?例如密码是123456,输入时应该显示******

(这里使用MATLAB的guide工具来完成界面编程)

下面提供几种解决方式:

方法一:

如果不强调一定要用星号来隐藏所输入的密码字符,则可以直接设置Edit Text控件的属性“FontName”来完成密码隐藏功能。

具体地,双击用作输入密码的Edit Text控件,打开其属性设置面板(Property Inspector ),找到属性“FontName”,默认的字体名为“MS Sans Serif”,将字体改为“Symbol”,即可完成密码隐藏功能。如下图所示。

修改前:

MATLAB GUI界面编程——用MATLAB GUI做一个登录界面,设置隐藏密码,如何实现?_第1张图片

修改后:

MATLAB GUI界面编程——用MATLAB GUI做一个登录界面,设置隐藏密码,如何实现?_第2张图片

执行时的效果:

MATLAB GUI界面编程——用MATLAB GUI做一个登录界面,设置隐藏密码,如何实现?_第3张图片

这样设置后,输入的密码以空白方框形式进行加密显示。并且光标随着输入移动。完成任务。

 

方法二:

不改变字体,而是通过代码,修改用作输入密码的Edit Text控件的“KeyPressFcn”函数。具体地:

% --- Executes on key press with focus on editPassword and none of its controls.
function editPassword_KeyPressFcn(hObject, eventdata, handles)              % “密码”输入框-KeyPressFcn
% hObject    handle to editPassword (see GCBO)
% eventdata  structure with the following fields (see MATLAB.UI.CONTROL.UICONTROL)
%	Key: name of the key that was pressed, in lower case
%	Character: character interpretation of the key(s) that was pressed
%	Modifier: name(s) of the modifier key(s) (i.e., control, shift) pressed
% handles    structure with handles and user data (see GUIDATA)
password = get( hObject, 'UserData' );
switch eventdata.Key
   case 'backspace'
      password = password( 1:end-1 );
   case 'return'
      uiresume;
      return;
   otherwise
      password = [password eventdata.Character];
end
set( hObject, 'UserData', password );
set( hObject, 'String', char( '*'*sign(password) ) );

以上代码中,第二行的“editPassword”为密码输入Edit Text控件的属性“Tag”。

并且,这种方式下,将输入的密码存放在控件的属性“UserData”中。

执行效果:

MATLAB GUI界面编程——用MATLAB GUI做一个登录界面,设置隐藏密码,如何实现?_第4张图片

这种解法下,输入密码时,输入的字符被星号代替,但是会发现光标位于最前面(如上图所示),不过也没关系。


另外,提供以上所述的完整的登录界面程序。下载地址为:

https://dev.tencent.com/u/dtid_c29b2ebfc475760f/p/UserLogIn_Interface_MATLAB_GUI/git

其中,名为“UserLogIn_Interface”的两个文件对应方法一;名为“UserLogIn_Interface_2”的两个文件对应方法二。


参考资料:

https://ww2.mathworks.cn/matlabcentral/fileexchange/23045-getauthentication(该网页内也提供了一个登录界面程序,上面方法二也参考了该程序)

http://www.ilovematlab.cn/thread-250550-1-1.html

 

你可能感兴趣的:(MATLAB,GUI)