R 使用gwidgets2创建停止按钮以中断Ubuntu上运行的功能

R 使用gwidgets2创建停止按钮以中断Ubuntu上运行的功能,r,ubuntu,gwidgets,R,Ubuntu,Gwidgets,我正在为一个R程序制作一个GUI,该程序在不断更新gwidgets GUI上的绘图的同时进行一些相当长的计算。如果计算时间过长,我想让用户有可能中断计算。我试着用一个停止按钮 问题是,当函数运行时,窗口变灰,并且没有任何控件响应,因此无法单击“停止”按钮 这个问题只有在Ubuntu上运行这个程序时才会出现,我在Windows上测试了这个脚本,它按照预期工作 下面是我的代码的一个最简单的工作示例,说明了我正在尝试做什么: require(gWidgets2RGtk2) require(gWidge

我正在为一个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
  }
}
require(gWidgets2RGtk2)
require(gWidgets2)
停车信号