Фигура GUI не открывается на двух мониторах, но другие фигуры в порядке

Я использую 64-разрядную версию Matlab R2012a (7.14.0.737) на ПК с Windows 7. У меня 2 монитора. Я хочу иметь возможность открыть графический интерфейс Matlab на втором мониторе (слева).

в командной строке открытие цифр там работает нормально.

h = figure( ... , 'position',[some -value on the other screen y w h)

но рисунок GUI всегда создается на 1-м мониторе, несмотря на 1) правильные значения положения, введенные в свойствах окна GUI и/или 2) использование кода

set( hObject, 'position',[some -value on the other screen y w h)

в функции открытия GUI.

Однако, если я помещу этот код в функцию вывода, все в порядке. неэлегантно, поскольку вы видите, что фигура появляется, а затем перемещается. значения в графическом интерфейсе установлены так, как я хочу. просто игнорируется Matlab, кажется. Любые идеи?

  • Обновить *

С тех пор я читал, что Matlab вызывает movegui(fig, 'onscreen') при открытии фигуры, созданной гидом. аргумент Я полагаю, что теперь проблема заключается в том, как переопределить это или как установить «на экране» в качестве другого монитора. До сих пор нет решения на этот счет


person user1877560    schedule 05.12.2012    source источник


Ответы (2)


Это невозможно сделать напрямую из GUIDE.

Временное решение

Экспортируйте фигуру: GuideMenu -> Файл -> Экспорт

Замените строку:

movegui(gui_hFigure,'onscreen');

с участием:

set(gcbf, 'position',[some -value on the other screen y w h)

Для меня (R2012a) это отображается в строке 330 экспортированного графического интерфейса:

...
  % openfig (called by local_openfig below) does this for guis without
  % the LayoutFcn. Be sure to do it here so guis show up on screen.
  movegui(gui_hFigure,'onscreen');   %% COMMENT OUT OR REPLACE THIS LINE
else
  gui_hFigure = local_openfig(gui_State.gui_Name, 
...
person supyo    schedule 07.12.2012

Вы заметите, что графические интерфейсы GUIDE в Matlab имеют несколько функций по умолчанию, которые автоматически вызываются при открытии. Это раздражающая особенность Matlab, что по крайней мере две из этих функций переопределяют ваше позиционирование фигуры по умолчанию. Возможно, одно из решений, обсуждаемых здесь здесь, можно изменить для решения вашей проблемы.

person jerad    schedule 06.12.2012