以编程方式触发 MATLAB UI 回调
Posted
技术标签:
【中文标题】以编程方式触发 MATLAB UI 回调【英文标题】:Trigger a MATLAB UI callback programmatically 【发布时间】:2015-12-22 14:06:04 【问题描述】:MATLAB UI 回调(例如 WindowKeyPressFcn)可以被新触发的回调中断。这对于终止运行时间过长的代码非常有用。有没有办法以编程方式触发回调事件?
请注意,与this question 的答案相比,我不是在问如何以编程方式运行回调函数。我实际上想以编程方式触发回调事件,以利用此可中断性功能。
【问题讨论】:
【参考方案1】:回调中断是由其他回调发起的,特别是因为在执行回调时不能执行任何其他代码。如果您能够“以编程方式”调用回调,那么您已经“中断”了任何其他可能正在进行的回调。
这并不是说您不能以编程方式触发 UI 回调。存储在WindowKeyPressFcn
等对象属性中的回调句柄通常会馈送到侦听器中,以获取这些对象的相应事件。例如,您可以使用notify(gcf,'WindowKeyPress')
为当前图形调用WindowKeyPressFcn
。
但是,如果您可以拨打电话,您也可以在中断回调中做任何您想做的事情。如果您能够运行该行是因为您中断了回调,那么您需要考虑回调在恢复执行时会做什么。
【讨论】:
你说得很好。但是,我想知道计时器函数是否在单独的线程中运行,因此可以在 WindowKeyPressFcn 当前运行时调用notify(gcf(), 'WindowKeyPress')
。
不,我的建议不起作用。奇怪,因为定时器可以中断标准的 matlab 代码。另外,关于它恢复时该怎么做的好点。以上是关于以编程方式触发 MATLAB UI 回调的主要内容,如果未能解决你的问题,请参考以下文章
以+scheduledTimerWithTimeInterval...的方式触发的timer,在滑动页面上的列表时,timer会暂定回调,为什么?如何解决?