Uicontrol on Octave 3.6.2

时间:2012-07-25 20:47:00

标签: octave

我正在尝试将脚本从Matlab移植到Octave。我想念的一个功能是uicontrol(),用于显示togglebuttons和按钮。

在SO上有这样一个问题:Implementation of Matlab's uicontrol in Octave?  那时,uicontrol()没有在Octave中实现,但是从3.6.N开始,它被宣传为已实现:http://www.octave.org/wiki/index.php?title=FAQ#Why_are_the_developers_planning_to_replace_Gnuplot_with_an_OpenGL_backend.3F

但是,在Ubuntu Quantal上安装octave 3.6.2之后,我遇到了这个错误:

octave:1> uicontrol
ans=-1.8402
error: __go_draw_figure__: unknown object class, uicontrol
error: called from:
error:   /usr/share/octave/3.6.2/m/plot/private/__go_draw_figure__.m at line 181, column 15
error:   /usr/share/octave/3.6.2/m/plot/__gnuplot_drawnow__.m at line 86, column 5

但是/usr/share/octave/3.6.2/m/plot/uicontrol.m已存在。

有任何帮助吗?谢谢。

2 个答案:

答案 0 :(得分:1)

回答我自己(至少部分地),对于那些我们可能会遇到同样问题的人:Octave 3.6引入了一个新的图形工具包,即FLTK,以及默认的Gnuplot。已安装的图形工具包可见:

octave> available_graphics_toolkits

命令。目前使用的图形工具包由以下人员提供:

octave> graphics_toolkit

默认为:“gnuplot”。或者,uicontrols与gnuplot不兼容,但与FLTK不兼容。因此,在调用uicontrol函数之前,应该使用以下命令切换到FLTK图形工具包:

octave> graphics_toolkit fltk;

在调用uicontrol函数之前。

然而,这个答案只是局部的:尽管使用FLTK图形工具包,uicontrol似乎没有故障,甚至返回一个有效的处理程序(允许设置和获取其属性),实际的按钮在图中不可见。那么,另一个:任何帮助?

谢谢。

答案 1 :(得分:1)

我使用Octave 3.6.2的MSVC / win32版本;这与QtHandles一起使用,它适用于uicontrol(仅使用基本小部件 - 按钮,文本框测试)。