gWidgets: как да вградите от други пакети?

Ако има начин за вграждане в gWidgets обекти от други пакети. Например от пакета utils.

options(guiToolkit = "RGtk2")
library(RGtk2)
library(gWidgets)
library(gWidgetsRGtk2)

library(utils)

w <- gwindow() # gwindow {gWidgets}
e <- edit(InsectSprays) # edit.data.frame {utils} 

person Apostolos Polymeros    schedule 23.01.2012    source източник
comment
edit.data.frame връща редактирания кадър с данни. Предполагам, че имате предвид можете ли да вградите програмата за преглед на данни на R в прозорец на gWidget. В който случай отговорът вероятно е не.   -  person Richie Cotton    schedule 23.01.2012
comment
Ти си прав. Отговорът вероятно е не. Въпросът ми идва от идеята джаджа да включва обекти от други пакети. Както и да е, TNX   -  person Apostolos Polymeros    schedule 23.01.2012
comment
Няма причина да не можете да смесвате GUI на gWidgets с неща, създадени другаде: просто не можете да ги имате в един и същи прозорец. Така че можете да имате бутон gWidgets, щракването върху който отваря прозореца на R dataviewer или каквото и да е друго.   -  person Richie Cotton    schedule 23.01.2012


Отговори (1)


Не е възможно, тъй като gWidgets поддържа само обекти от определен клас като gButton, gWindow и т.н. gWidgets не съдържа документирани функции за импортиране \ вграждане на външна библиотека \ пакетиране на GUI обекти. напр.

options(guiToolkit = "RGtk2")
library(RGtk2)
library(gWidgets)
library(gWidgetsRGtk2)

library(utils)

win <- gwindow("Window example",
               handler=function(h,...) {
                 print("See ya")
               })
but <- gbutton("cancel", container=win,
        handler = function(h,...) dispose(win))

str(but)  # gButton class object structure

# Formal class 'gButton' [package "gWidgets"] with 2 slots
# ..@ toolkit:Formal class 'guiWidgetsToolkitRGtk2' [package "gWidgets"] with 1 slot
# .. .. ..@ toolkit: chr  ...
# ..@ widget :Warning in str.default(obj, ...) :
#   'str.default': 'le' -- это NA, так что беру как 0
# Formal class 'gButtonRGtk' [package "gWidgetsRGtk2"] with 3 slots
# .. .. ..@ block  :Classes 'GtkAlignment', 'GtkBin', 'GtkContainer', 'GtkWidget', 'GtkObject', 'GInitiallyUnowned', 'GObject', 'RGtkObject' <externalptr> 
#   .. .. .. ..- attr(*, "interfaces")= chr [1:2]  ...
# .. .. ..@ widget :Classes 'GtkButton', 'GtkBin', 'GtkContainer', 'GtkWidget', 'GtkObject', 'GInitiallyUnowned', 'GObject', 'RGtkObject' <externalptr> 
#   .. .. .. ..- attr(*, "interfaces")= chr [1:3]  ...
# .. .. ..@ toolkit:Formal class 'guiWidgetsToolkitRGtk2' [package "gWidgets"] with 1 slot
# .. .. .. .. ..@ toolkit: chr  ...

освен това след изпълнението на кода кодът връща контрола на средата за програмиране на R.

За разлика от това функцията utils::edit връща обекта data.frame и спира средата за изпълнение на R.

Въз основа на коментара jverzani, новата версия на пакета gWidgets2 позволява да получите достъп до основните джаджи, ако искате да се интегрирате в други GUI. С помощта на метода getToolkitWidget на gWidgets2 е възможно да прикачите основни GUI елементи към оформление, методът add трябва да работи.

person Artem    schedule 19.12.2019
comment
Можете да получите достъп до базовите уиджети, ако искате да се интегрирате в други GUI. Използването на gWidgets2 прави това по-лесно, тъй като има getToolkitWidget метод. Ако искате да прикачите основни GUI елементи към оформление, методът add трябва да работи. - person jverzani; 01.01.2020
comment
Благодаря, ще добавя към основната част на отговора. - person Artem; 10.01.2020