【问题标题】:Trigger a MATLAB UI callback programmatically以编程方式触发 MATLAB UI 回调
【发布时间】:2025-12-23 18:50:07
【问题描述】:

MATLAB UI 回调(例如 WindowKeyPressFcn)可以被新触发的回调中断。这对于终止运行时间过长的代码非常有用。有没有办法以编程方式触发回调事件?

请注意,与this question 的答案相比,我不是在问如何以编程方式运行回调函数。我实际上想以编程方式触发回调事件,以利用此可中断性功能。

【问题讨论】:

    标签: matlab callback


    【解决方案1】:

    回调中断是由其他回调发起的,特别是因为在执行回调时不能执行任何其他代码。如果您能够“以编程方式”调用回调,那么您已经“中断”了任何其他可能正在进行的回调。

    这并不是说您不能以编程方式触发 UI 回调。存储在WindowKeyPressFcn 等对象属性中的回调句柄通常会馈送到侦听器中,以获取这些对象的相应事件。例如,您可以使用notify(gcf,'WindowKeyPress') 为当前图形调用WindowKeyPressFcn

    但是,如果您可以拨打电话,您也可以在中断回调中做任何您想做的事情。如果您能够运行该行是因为您中断了回调,那么您需要考虑回调在恢复执行时会做什么。

    【讨论】:

    • 你说得很好。但是,我想知道计时器函数是否在单独的线程中运行,因此可以在 WindowKeyPressFcn 当前运行时调用notify(gcf(), 'WindowKeyPress')
    • 不,我的建议不起作用。奇怪,因为定时器可以中断标准的 matlab 代码。另外,关于它恢复时该怎么做的好点。