[R-gui] embedding R graphics in Tk widgets

Sebastian P. Luque spluque at gmail.com
Thu Jul 3 17:58:35 CEST 2008


On Thu, 19 Jun 2008 02:14:18 +0000 (UTC),
jverzani <jverzani at gmail.com> wrote:

[...]

> The handlers in the various toolkits have several different arguments,
> none of course being standard. The ... is to accommodate
> these. Whereas, the first argument for a handler, called "h" from the
> iWidgets background of gWidgets, is a list containing components "obj"
> to refer to the object that the handler is called on, such as the
> slider in your example, and "action" which just passes along the
> action= argument. (Some widgets have additional components, such as
> "dropdata" or "x" and "y".) The h$obj construction allows you to avoid
> global variables. So the following are equivalent:

> sl = gslider(cont=gwindow(), handler = function(h,...)
> print(svalue(sl)))

> and

> sl = gslider(cont=gwindow(), handler = function(h,...)
> print(svalue(h$obj)))


Thanks for the explanation!

On another note, I got a bit confused the other day trying to learn more
about layout from the density example given in the vignette.  I was
trying to get the following layout:

-------------- next part --------------
A non-text attachment was scrubbed...
Name: density_layout.png
Type: image/png
Size: 6458 bytes
Desc: not available
URL: <https://stat.ethz.ch/pipermail/r-sig-gui/attachments/20080703/74926396/attachment.png>
-------------- next part --------------

Basically, move the bandwidth slider below the graph and spanning the
whole width of the window.  Modifying the layout section of the code as:

---<---------------cut here---------------start-------------->---
window <- gwindow("gWidgetsDensity")
bigGroup <- ggroup(container=window)

vGroup <- ggroup(horizontal=FALSE, container=bigGroup)
hGroup <- ggroup(horizontal=FALSE, container=bigGroup)

tmp <- gframe("Distribution", container=vGroup)
add(tmp, distribution)

tmp  <- gframe("Sample size", container=vGroup)
add(tmp,sampleSize)

tmp <- gframe("Kernel", container=vGroup)
add(tmp,kernel)

add(bigGroup, ggraphics())

tmp <- gframe("Bandwidth adjust", container=hGroup)
add(tmp,bandwidthAdjust, expand=TRUE)
---<---------------cut here---------------end---------------->---

Why is the slider still packed side by side, when I'm specifying
'horizontal=FALSE' in hGroup?

I also notice that one needs to do something in a widget to produce the
initial plot, i.e. a default initial the plot is not produced.


Thanks for any further pointers,
-- 
Seb


More information about the R-SIG-GUI mailing list