在MATLAB中在函数和回调之间传递数据(Passing data between functions and callbacks in MATLAB)
我是MATLAB GUI构建的新手,我正在尝试学习如何在两个GUI之间传递数据。 我的问题是如何从子GUI调用主GUI中的函数。
例如:
在主GUI中,我从各自的回调中获取两个文本框中的值:
handles.A= str2double(get(handles.textbox1,'string')); guidata(hObject,handles) handles.B = str2double(get(handles.textbox2,'string')); guidata(hObject, handles)
那么除了上面的内容之外,我还有第三个功能就是这样做:
function addition(handles) C= handles.A + handles.B
然而,第三个功能是通过按钮按钮从子GUI访问,如下所示:
function pushbutton1_Callback(hObject, eventdata, handles) main_gui('addition');
我得到的错误是没有足够的输入参数在
C = handles.A + handles.B
,但我不知道为什么我收到此错误。 谁能帮我?I am new to MATLAB GUI building and I am trying to learn how to pass data between two GUIs. My question is how to call a function in the main GUI from a sub GUI.
For example:
In the main GUI, I am getting the values from two text box from their respective callbacks as such:
handles.A= str2double(get(handles.textbox1,'string')); guidata(hObject,handles) handles.B = str2double(get(handles.textbox2,'string')); guidata(hObject, handles)
then in addition to the above, I have a third function that does addition as such:
function addition(handles) C= handles.A + handles.B
The third function however is being accessed from the sub GUI through a button push as follows:
function pushbutton1_Callback(hObject, eventdata, handles) main_gui('addition');
The error I am getting is not enough input arguments in the line
C = handles.A + handles.B
, but I don't know why I am getting this error. Can anyone help me?
原文:https://stackoverflow.com/questions/16865859
最满意答案
你不是100%清楚规则是什么,但如果它只是在第一个冒号之前删除所有内容的问题,那么你可以使用
split
:>>> 'm:abc'.split(':',1)[-1] 'abc' >>> 'mabc'.split(':',1)[-1] 'mabc' >>> 'm:a:bc'.split(':',1)[-1] 'a:bc'
split
的第二个参数限制了要执行的拆分数,而[-1]
得到了拆分的正确部分(如果没有拆分,则为第一个元素)。请参阅
str.split()
上的文档 。但是,如果结肠必须处于第二位置:
def remove_prefix(s): return s[2:] if len(s) > 1 and s[1] == ':' else s
This is the only way I could figure out how to accomplish the above:
re.sub(r'^[a-z]:','',string)
相关问答
更多-
你可以使用像驯化的贪婪令牌 ^foo(?:(?!^foo|bar=2$).)*bar=2$ (?:(?!^foo|bar=2$).)*匹配任何不是foo文本(在行/字符串的开头)而不是在行/字符串末尾的bar=2 。 请参阅正则表达式演示 。 但是,这样的构造是消耗资源的,建议将其展开。 这是一个选项: ^foo[^\nb]*(?:\n(?!foo)[^\nb]*|b(?!ar$)[^\nb]*)*bar=2$ 看另一个演示 。 You can use a tempered greedy token l ...
-
$ echo abcabcabc | perl -ne 'print $1 if /(a.*?c)$/' abcabcabc # what, non-greedy become greedy? 非贪婪意味着它将匹配当前位置上可能的最少字符,以使整个模式匹配。 在位置0匹配a后, bcabcab是最少的.*? 可以在位置1处匹配,同时仍然满足该模式的其余部分。 "abcabcabc" = /a.*?c$/详细信息: 在pos 0, a匹配1个字符( a )。 在pos 1, .*? 匹配0个字符(空字符串) ...
-
你不是100%清楚规则是什么,但如果它只是在第一个冒号之前删除所有内容的问题,那么你可以使用split : >>> 'm:abc'.split(':',1)[-1] 'abc' >>> 'mabc'.split(':',1)[-1] 'mabc' >>> 'm:a:bc'.split(':',1)[-1] 'a:bc' split的第二个参数限制了要执行的拆分数,而[-1]得到了拆分的正确部分(如果没有拆分,则为第一个元素)。 请参阅str.split()上的文档 。 但是,如果结肠必须处于第二位置: d ...
-
尝试: {{[^{]*?}}这是使用'{'字符不应出现在内部字符串中的事实。 它符合你的期望。 Try: {{[^{]*?}} This is using the fact that the '{' character should not appear in the inner strings. It does match what you expect.
-
如果您知道0x前缀,您可以使用切片将其删除: >>> "0xdeadbeef"[2:] 'deadbeef' 或者,您可以使用字符串格式化运算符而不是hex() : >>> "%x" % 3735928559 'deadbeef' 或使用format() : >>> format(3735928559, "x") 'deadbeef' If you know the 0x prefix is there, you can remove it by using slicing: >>> "0xdeadb ...
-
与grep非贪婪匹配(Non-greedy matching with grep)[2022-06-30]
双量词只是一个语法错误,可能会导致错误消息或未定义的行为。 如果您收到错误消息,这可能会更好。 大量的Perl扩展到正则表达式POSIX; 在写这些工具的时候,有人不太可能会试图用这种古怪的语法来做任何事情。 贪婪的匹配仅在20世纪90年代中期在Perl 5中引入。 The double quantifier is simply a syntax error and could result in either an error message or undefined behavior. It would ... -
ANTLRv4:非贪婪的规则(ANTLRv4: non-greedy rules)[2023-08-26]
ANTLR 4词法分析器通常以最长匹配获胜行为运行,而不考虑替代出现在语法中的顺序。 如果两个词法分析器规则匹配相同的最长输入序列,则只有这些规则的相对顺序进行比较才能确定如何分配令牌类型。 一旦词法分析器到达非贪婪的可选或闭包,规则内的行为就会发生变化。 从该时刻到规则结束,该规则中的所有备选方案都将被视为有序,而具有最低备选方案的路径将获胜。 这种看似奇怪的行为实际上是由于我们在底层ATN表示中订购替代方式而导致的非贪婪处理。 当词法分析器处于此模式并到达块(ESC|.) ,排序约束要求它尽可能使用ES ... -
PyParsing非贪婪的匹配(PyParsing non-greedy match)[2023-12-03]
使用否定, ~来检查即将到来的street_name是否实际上是street_suffix 。 from pyparsing import * street_number = Word(nums)('street_number') street_suffix = oneOf("ST RD DR LN AVE WAY")('street_suffix') street_name = OneOrMore(~street_suffix + Word(alphas))('street_name') addres ... -
perl非贪心的问题(perl non-greedy problem)[2023-03-14]
尝试打印$& (与整个正则表达式匹配的文本)以及$1 。 这可能会让您更好地了解正在发生的事情。 你似乎遇到的问题是.*? 并不意味着“在这里使用最少字符的所有可能匹配中找到匹配。” 它只是意味着“首先,尝试在这里匹配0个字符,然后继续匹配正则表达式的其余部分。如果失败,请尝试匹配1个字符。如果正则表达式的其余部分不匹配,请在此处尝试2个字符。等等。 “ Perl将始终找到最接近字符串开头的匹配项 。 由于大多数模式都以href=开头,因此它会在字符串中找到第一个href=并查看是否有任何方法可以扩展重复以 ... -
我在Regex lazy vs greedy confusion的帮助下找到了一个解决方案。 在像Javascript(我相信的NFA引擎 )那样的正则表达式引擎中,非贪婪只能从左到右匹配最短的匹配 - 从适合最近的右手匹配的第一个左手匹配。 如果一场右手比赛有很多左手比赛,那么它将始终从它到达的第一场比赛开始(这实际上会给出最长的比赛)。 基本上,它一次通过字符串一个字符询问“这个字符是否匹配?如果是,匹配最短并完成。如果不是,请转到下一个字符,重复”。 我期望它是“在这个字符串中的任何地方都有匹配吗?如 ...