[R-gui] Process control in gWidgets

jverzani jverzani at gmail.com
Mon Aug 10 18:15:40 CEST 2009


Hana Sevcikova <hana <at> cs.washington.edu> writes:

> 
> Hello,
> 
> I implemented a GUI (using gWidgets) from which I'd like to start a long 
> process by clicking a button. This process prints out status messages 
> which the user should be able to see in the R console during the 
> computation. But at the moment clicking the button freezes the GUI until 
> the process is finished and all output is printed at the end. Is there a 
> way how to do this? The process can take several hours and during that 
> time I need to make the GUI available for other tasks.
> 

Dear Hana,

This post was followed up with
https://stat.ethz.ch/pipermail/r-help/2008-February/154249.html where a
combination of gtkEventsPending() and  gtkMainIteration() is used to update the
GUI during a computation. This could work for you if a) you are using
gWidgetsRGtk2 through gWidgets and b) you can add this within your long
computation. If that doesn't work out, let me know. 

--John


> I found a similar post on R-help from last year where John Verzani 
> posted the following test code:
> 
> reallySlowFunction = function(n=20) {
> for(i in 1:n) {
> cat("z")
> Sys.sleep(1) }
> cat("\n")
> }
> w <- gwindow("test")
> g <- ggroup(cont=w, horizontal=FALSE)
> b <- gbutton("click me", cont=g,handler = function(h,...)
> reallySlowFunction())
> r <- gradio(1:3, cont=g, handler = function(h,...) print(svalue(h
>   $obj)))
> 
> I cannot figure out why my GUI freezes and this one not but
> here again, the output of reallySlowFunction is printed at the very end 
> after the process finishes. Would anybody know how to solve it?
> 
> Thanks,
> 
> Hana
>



More information about the R-SIG-GUI mailing list