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