我正在为一个R程序制作一个GUI,它可以进行一些非常冗长的计算,同时不断更新gwidgets GUI上的图。如果用户花费太长时间,我想给用户中断计算的可能性。我正在尝试使用停止按钮。
问题是当函数运行时,窗口显示为灰色,没有任何控件会响应,因此无法单击停止按钮。
只有在Ubuntu上运行程序时才会出现此问题,我在Windows上测试了脚本并且按预期工作。
这是我的代码的最小工作示例,说明了我要做的事情:
require(gWidgets2RGtk2)
require(gWidgets2)
stopsignal <- FALSE
w <- gwindow()
button_gp <- ggroup(cont=w)
gbutton("calculate", cont=button_gp, handler=function(...) calculate())
gbutton("stop", cont=button_gp, handler=
function(...) assign("stopsignal", TRUE , envir = .GlobalEnv))
calculate <- function() {
while(TRUE) {
#do something
print("Hello World")
if(stopsignal) break
}
}
我试图理解为什么Ubuntu表现不同以及如何解决它。