Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.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:Rgtk2:gwidgets:gWidgetsRGtk2_R_Gwidgets - Fatal编程技术网

R:Rgtk2:gwidgets:gWidgetsRGtk2

R:Rgtk2:gwidgets:gWidgetsRGtk2,r,gwidgets,R,Gwidgets,我想结合gWidgetsjohn verzani和Rgtk2。 这可以被任何人用作范例 算法如下: 步骤1:构建gwindow或gframe 步骤2:构建GTK可滚动文本视图 步骤3:将最后一个转换为gwidget 步骤4:将其添加到gwindow或gframe中 我不知道这是不是一个正确的想法 我面临的问题是GTK可滚动文本视图: 我无法使滚动条工作 R中的代码如下所示: ########################### # load libraries library(RGtk2) l

我想结合gWidgetsjohn verzani和Rgtk2。 这可以被任何人用作范例

算法如下: 步骤1:构建gwindow或gframe 步骤2:构建GTK可滚动文本视图 步骤3:将最后一个转换为gwidget 步骤4:将其添加到gwindow或gframe中

我不知道这是不是一个正确的想法 我面临的问题是GTK可滚动文本视图: 我无法使滚动条工作

R中的代码如下所示:

###########################
# load libraries
library(RGtk2)
library(gWidgets)
library(gWidgetsRGtk2)

# data set
x <- c(1:9)
y <- c(10:19)
z <- c(20:29)
df <- data.frame(x, y, z)
df.co <- capture.output(df)

###########################
# STEP 1, library(gWidgets)
# Construct a gwindow (or a gframe)
G.Window <- gwindow()

###########################
# STEP 2, library(RGtk2)
# Construct a GTK scrollable text view
Gtk.Text.View <- gtkTextViewNew(show = TRUE)

# create a table to attach the scrollbars
Gtk.Table.New <- gtkTableNew(2, 2, show = TRUE)

# construct the scrollbars
Gtk.H <- gtkHScrollbarNew()
Gtk.V <- gtkVScrollbarNew()

# attach the text view and the scrollbars to the table
gtkTableAttach(Gtk.Table.New, Gtk.Text.View, 0, 1, 0, 1)
gtkTableAttach(Gtk.Table.New, Gtk.H, 0, 1, 1, 2)
gtkTableAttach(Gtk.Table.New, Gtk.V, 1, 2, 0, 1)

# The scrollbars are not functional, for now.
# So I thought of constructing a viewport.
# The problem I face is that I cannot make the scrollbars work. 
Gtk.Viewport <- gtkViewportNew()

###########################
# STEP 3, library(gWidgetsRGtk2)
# Convert the table into a gwidget
G.Table.View <- as.gWidgetsRGtk2(Gtk.Table.New)

###########################
# STEP 4, library(gWidgets)
# Add the table into the gwindow (or into the gframe)
add(G.Window, Gtk.Table.New)

# STEP 5, make the buffer management
Gtk.Text.View.Get.Buffer <- gtkTextViewGetBuffer(Gtk.Text.View)

for (i in 1:length(df.co))
{
    Gtk.Text.Buffer.Get.Bounds <- gtkTextBufferGetBounds(Gtk.Text.View.Get.Buffer)
    Gtk.Text.Buffer.Insert <- gtkTextBufferInsert(Gtk.Text.View.Get.Buffer, iter=Gtk.Text.Buffer.Get.Bounds$end, text=paste(df.co[i], "\n",  sep="", collapse=""), len=-1)
    }

###########################
我不想使用GTK可滚动窗口, 因为我希望GTK文本/表格小部件在转换成gWidget之后, 也可以在窗口gWidget中输入


如果这不是stackoverflow的主题,我也要道歉。提前感谢您

您说得对,您可以使用add将RGtk2对象插入gWidgetsRGtk2 GUI。但在这种情况下,您可能可以使用getToolkitWidget节省一些工作:

要获得gtkScrollWindow对象,需要知道它是text_view:text_view$getParent的父对象


最后一条注释是,步骤3可以工作,应该为对象提供gWidgets方法,但这不是必需的。只需添加RGtk2对象。我在github上的重写、gWidgets2中没有将这些方法包括在内,大部分都在工作,但没有完成,因为它似乎没有那么有用。

我非常感谢您的回答。多谢各位。阿波斯托洛斯
library(RGtk2)
library(gWidgets)
options(guiToolkit="RGtk2")

w <- gwindow(); txt <- gtext("", cont=w)

text_view <- getToolkitWidget(txt)
buffer <- text_view$getBuffer()
...