Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R gWidgets:如何从其他包中嵌入?_R_Gwidgets - Fatal编程技术网

R gWidgets:如何从其他包中嵌入?

R gWidgets:如何从其他包中嵌入?,r,gwidgets,R,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} 选项(guiToolkit=“RG

如果有办法嵌入其他包中的
gWidgets
对象。 例如,来自包
utils

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

library(utils)

w <- gwindow() # gwindow {gWidgets}
e <- edit(InsectSprays) # edit.data.frame {utils} 
选项(guiToolkit=“RGtk2”) 图书馆(RGtk2) 库(gWidgets) 库(gWidgetsRGtk2) 图书馆(utils)
w这是不可能的,因为
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  ...
选项(guiToolkit=“RGtk2”) 图书馆(RGtk2) 库(gWidgets) 库(gWidgetsRGtk2) 图书馆(utils)
win
edit.data.frame
返回已编辑的数据帧。我猜你的意思是“你能把R的dataviewer嵌入gWidget窗口吗?”。在这种情况下,答案可能不是。你是对的。答案可能不是。我的问题来自于一个小部件合并来自其他包的对象的想法。不管怎么说,没有理由不能将gWidgets gui与其他地方创建的东西混合匹配:只是不能将它们放在同一个窗口中。因此,您可以有一个gWidgets按钮,单击该按钮可以打开R dataviewer窗口或其他任何窗口。如果您想集成到其他GUI中,您可以访问底层小部件。使用gWidgets2使这更容易,因为有一个
getToolkitWidget
方法。如果您想将底层GUI项附加到布局中,那么
add
方法应该可以工作。谢谢,我将添加到答案的正文中。