Matlab GUI - Edit text only allow numbers and '.'

6 ビュー (過去 30 日間)
Eddie
Eddie 2011 年 7 月 1 日
I would like to create an edit text that only allows to introduce numbers and '.' . If another letter is pressed it should write nothing.
Using KeyPressFcn I am able to detect the letter pressed and compare to the valid ones but I do not know what to do in order to not to write the character if it is not valid.
Any idea?

採用された回答

Daniel Shub
Daniel Shub 2011 年 7 月 1 日
If the key is invlaid you want to set the string of the edit box to be whatever the string is minus the last element
x = get(h, 'String')
set(h, 'String', h(1:end-1))
  1 件のコメント
Jan
Jan 2011 年 7 月 13 日
This wil fail if a string is copied by Ctrl-V.

サインインしてコメントする。

その他の回答 (1 件)

Jan
Jan 2011 年 7 月 1 日
This behaviour will annoy the user. The limitation of the keyboard feels sticky. Better let the user write anything and check the input in the callback function only, e.g. by:
function myNumberCheck(ObjH, EventData)
S = get(ObjH, 'String');
% Exclude characters, which are accepted by sscanf:
S(ismember(S, '-+eEgG')) = ' ';
% Convert to one number and back to a string:
S2 = sprintf('%g', sscanf(S, '%g', 1));
set(ObjH, 'String', S2);
% Perhaps a small warning in WARNDLG or inside the GUI:
if ~all(ismember(S, '.1234567890'))
...
end

カテゴリ

Help Center および File ExchangeCharacters and Strings についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by