2

gWidgets(john verzani) と Rgtk2 を組み合わせたいと思います。これはパラダイムとして誰でも使用できます。

アルゴリズムは次のとおりです。 STEP 1: gwindow (または gframe) を構築する STEP 2: GTK スクロール可能なテキスト ビューを構築する STEP 3: 最後のビューを gwidget に変換する STEP 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 テキスト/テーブル ウィジェットを gWidget に変換した後、ウィンドウ (gWidget) にも入力したいので、GTK スクロール可能なウィンドウを使用したくありません。

これがstackoverflowの対象ではない場合もお詫び申し上げます。前もって感謝します

4

1 に答える 1

5

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()
...

gtkScrollWindow オブジェクトを手に入れるには、それが text_view: の親であることを知る必要がありますtext_view$getParent()

最後のコメントとして、ステップ 3 は機能し、オブジェクトに gWidgets メソッドを与える必要がありますが、必須ではありません。RGtk2 オブジェクトを追加するだけです。私はこれらの " as" メソッドを書き直した gWidgets2 (github 上でほとんど動作しているが完成していない) に含めませんでした。

于 2012-01-15T17:10:04.860 に答える