2013-09-28 2 views
0

Я написал графический интерфейс в R с RGTK2 и Tcltk, который выполняет множество довольно тяжелых вычислений и агрегаций на больших наборах данных.Пользовательский ввод блока RGTK2 во время обработки

Я хотел бы найти способ остановить пользовательский интерфейс от приема пользовательских входов при обработке большого набора данных и, в идеале, изменить цвет интерфейса, всплывающее диалоговое окно или изменить указатель мыши на песочные часы/spinner, чтобы указать пользователям, что приложение активно.

Реализация, что я хочу, буду выглядеть примерно так:

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

Так волшебный метод gtkWidgetSetSensitive:

gSignalConnect(bigRedButton,"clicked", 
f=function(widget) 
{ 
    gtkWidgetSetSensitive(Window,FALSE) 

    # Code that does a very big set of calculations 

    gtkWidgetSetSensitive(Window,TRUE) 
} 
) 

Этот метод превращает целевой виджет (который может быть индивидуальная кнопка, TextEntry, COMBOBOX, и т.д ...) серый и блоки ввода.

Смежные вопросы