[R-gui] Process control in gWidgets

Wayne.W.Jones at shell.com Wayne.W.Jones at shell.com
Tue Aug 11 12:02:00 CEST 2009



Hi Hana, 

I use the rpanel package to generate GUIs for R. 
Here is an example of what you are trying to do with the rpanel package: 
(p.s. make sure buffered output is switched off in the Rgui). 

  
reallySlowFunction = function(panel,n=20) {
for(i in 1:n) {
cat("z")
Sys.sleep(0.5) 
cat("\n")
}

return(panel)
}


library(rpanel)
# Create an rpanel and add the button "Simulate" to it.
panel <- rp.control()
rp.button(panel, action = reallySlowFunction, title = "Simulate")

Regards, 

Wayne






-----Original Message-----
From: r-sig-gui-bounces at stat.math.ethz.ch
[mailto:r-sig-gui-bounces at stat.math.ethz.ch]On Behalf Of Hana Sevcikova
Sent: 11 August 2009 07:30
To: jverzani
Cc: r-sig-gui at stat.math.ethz.ch
Subject: Re: [R-gui] Process control in gWidgets


Thank you very much, John. I am indeed using gWidgetsRGtk2 but I was 
hoping to make my GUI independent of the specific toolkit. But there is 
probably no easy solution. Even with the gtkEventsPending() and 
gtkMainIteration() I don't get the output into the R-console as the 
computation runs, rather at the very end.

Please let me know if you get other ideas how to solve it.

Thanks,

Hana


jverzani wrote:
> 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
>>
> 
> _______________________________________________
> R-SIG-GUI mailing list
> R-SIG-GUI at stat.math.ethz.ch
> https://stat.ethz.ch/mailman/listinfo/r-sig-gui

_______________________________________________
R-SIG-GUI mailing list
R-SIG-GUI at stat.math.ethz.ch
https://stat.ethz.ch/mailman/listinfo/r-sig-gui



More information about the R-SIG-GUI mailing list