2013-03-11 3 views
1

У меня есть динамический GUI, созданный с использованием пакета gWidgets в R (guiToolkit = "RGtk2", если это имеет значение). По динамическому я имею в виду, что элементы формы создаются и удаляются при использовании графического интерфейса. Интересно, есть ли простой способ сохранить текущий графический интерфейс со всеми текущими элементами формы и выбранными/введенными значениями, а затем загрузить его позже. Сохранение и загрузка рабочего пространства не похоже на работу для такого рода вещей, например:Сохранение и загрузка динамического gWidgets GUI

require (gWidgets) 
options (guiToolkit="RGtk2") 
win1 <- gwindow("Test") 
svalue(win1) <- "Window 1" 
win2 <- win1 
svalue(win2) <- "Window 2" 
visible(win1)=FALSE 
visible(win2)=TRUE 

отлично работает, вы можете скопировать объект, и он продолжает работать под другим именем переменной. Но когда вы сохраняете рабочее пространство и загружаете его, вы получаете сообщение об ошибке «утверждение« GTK_IS_WIDGET (виджет) «не удалось» при попытке выполнить последние 2 строки. Таким образом, функция load() не воссоздает объект должным образом.

ответ

0

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

+1

Все структуры данных сохраняются при сохранении рабочей области. Загрузка рабочего пространства не вносила никаких изменений в графический интерфейс. – user1603038

+0

Когда вы начинаете свой графический интерфейс, вы инициализируете его где-то со структурой данных, рассказывающей, как следует рисовать графический интерфейс, правильно? Эта структура данных должна быть сохранена и загружена. Если вы инициализируете свой графический интерфейс статически, вам нужно сначала изменить его. –

+1

Хорошо, вот пример кода: require (gWidgets); опции (guiToolkit = "RGtk2"); win1 <- gwindow («Тест»); svalue (win1) <- "Window 1"; win2 <- win1; svalue (win2) <- "Window 2"; visible (win1) = FALSE; visible (win2) = TRUE Прекрасно работает, что означает, что вы можете скопировать объект, и он продолжает работать под другим именем переменной. Но когда вы сохраняете рабочее пространство и загружаете его, вы получаете сообщение об ошибке при попытке выполнить последние 2 строки. Если вы закроете окно после сохранения загрузки, рабочее пространство также не покажет его. – user1603038