[Rd] tcltk GUIs (was need gui matrix editor: does R Core team have advice on how?)

Kevin R. Coombes kevin.r.coombes at gmail.com
Mon Jan 30 15:17:36 CET 2012



On 1/29/2012 4:35 PM, Paul Johnson wrote:
> On Sun, Jan 29, 2012 at 6:10 AM, Prof Brian Ripley
> <ripley at stats.ox.ac.uk>  wrote:
>> On 28/01/2012 22:04, John Fox wrote:
>>> Dear Paul and Gabor,
>>>
>>> The Rcmdr GUI uses the tcltk package, so I have some experience with
>>> providing an R tcltk-based GUI for various platforms.
>>>
>>> As Gabor says, everything works very smoothly on Windows because the R
>>> Windows binary includes Tcl/Tk.
>>
>> Maybe, but getting it there was very far from smooth.  Tcl/Tk compiled under
>> the compilers we used, but the resulting DLLs crashed R.  No one has ever
>> found the cause and I used the system SDK (essentiallly a version of VC++)
>> to build them.  And that puts us in a bind since the current system SDKs
>> generate code depending on DLLs that are not part of the minimal OS versions
>> we support (e.g. Windows XP and Server 2003, and the machine used to build
>> was retired 2 years ago).
>>
> Thanks, this is clearing things up. I believe these comments mean
> that, at the current time, tcl/tk is as close as there is to an
> officially endorsed graphical toolkit.  As I search more, I find many
> other community contributors (besides Prof. Fox) using tcl/tk
> (Sciviews).  So I should learn how to work with that.  Prof Ripley's
> comment makes me think the endorsement is not entirely enthusiastic,
> though.
There's this famous quotation from Winston Churchill: "it has been said 
that democracy is the worst form of government except all those other 
forms that have been tried."

Using Tcl/Tk in R is similar.  It's there, and the R Core team (mostly) 
makes sure it works cross-platform, so it is the obvious choice for GUI 
development in R.  But it is far from perfect.  For one thing, the 
documentation in R is quite limited.  The manual pages list all of the 
functions in the tcltk package, but they basically take "..." as their 
arguments.  As a result, you sometimes have to guess how to get the 
inputs formatted correctly to pass them back-and-forth between the R 
process and the Tcl/Tk process (which have very different syntax).  For 
another thing, communication between the two processes (at least on 
Windows) sometimes breaks down in non-reproducible and hard-to-debug 
ways.  We built a tcltk GUI that uses a tabbed notebook interface, which 
is supposed to display five tabs.  Most of the time, it does.  But it 
can end up displaying anything from 1 to 5 tabs.  It always displays 
them in order, so it apparently runs into a problem at some random point 
and stops.  Closing the GUi and restarting it usually fixes the 
problem.  Since we cannot trigger it reproducibly, we have never found 
the underlying source of the problem.

This message is not meant to dissuade you from using Tcl/Tk.  It's just 
a warning to expect some bumps along the way....

Good luck,
     Kevin



More information about the R-devel mailing list