我在R中用RGTK2和Tcltk编写了一个GUI,它对大数据集进行了大量相当繁重的计算和聚合。
我想找到一种方法来阻止用户界面在处理大型数据集时接受用户输入,理想情况下,更改界面颜色,弹出对话框或将鼠标指针更改为沙漏/微调器向用户表明该应用程序处于活动状态。
我想要的实现看起来像:
gSignalConnect(bigRedButton,"clicked",
f=function(widget)
{
something$start() # object with method that blocks further user input
# and pops up loading bar or "Processing" dialogue
# (or possibly spins the mouse)
# Code that does a very big set of calculations
something$stop() # unblocks user inputs and removes visual impedance
}
)
我尝试过使用gtkDialogue来解决这个问题,但是这似乎停止了整个程序的执行,直到一个人关闭了对话,这反而破坏了目的。
非常感谢任何帮助。
答案 0 :(得分:0)
所以神奇的方法是gtkWidgetSetSensitive:
gSignalConnect(bigRedButton,"clicked",
f=function(widget)
{
gtkWidgetSetSensitive(Window,FALSE)
# Code that does a very big set of calculations
gtkWidgetSetSensitive(Window,TRUE)
}
)
此方法将目标窗口小部件(可以是单个按钮,textEntry,comboBox等等)变为灰色并阻止输入。