我想用ggtk2组合gWidgets(john verzani).这可以被任何人用作范例.
算法如下:步骤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)
}
###########################
Run Code Online (Sandbox Code Playgroud)
我不想使用GTK可滚动窗口,因为我想要将GTK文本/表格小部件转换为gWidget后,也可以进入窗口(gWidget).
如果这不是stackoverflow的主题,我也想道歉.先感谢您
您可以使用add()将RGtk2对象插入到gWidgetsRGtk2 GUI中.但在这种情况下,你可以节省一些工作getToolkitWidget():
library(RGtk2)
library(gWidgets)
options(guiToolkit="RGtk2")
w <- gwindow(); txt <- gtext("", cont=w)
text_view <- getToolkitWidget(txt)
buffer <- text_view$getBuffer()
...
Run Code Online (Sandbox Code Playgroud)
要了解gtkScrollWindow对象,您需要知道它是text_view的父级:text_view$getParent().
最后一条评论,您的第3步有效,应该为您的对象提供gWidgets方法,但这不是必需的.只需添加RGtk2对象即可.我没有as在重写中包含这些" "方法,gWidgets2(在github上,主要是工作但未完成),因为它似乎没那么有用.
| 归档时间: |
|
| 查看次数: |
1183 次 |
| 最近记录: |