0

我用 RGTK2 和 Tcltk 在 R 中编写了一个 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 来解决问题,但这似乎会停止执行整个程序,直到关闭对话,这反而违背了目的。

任何帮助将不胜感激。

4

1 回答 1

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 等)变为灰色并阻止输入。

于 2013-10-04T21:16:59.907 回答