I use expressions to create "control panels" to set dynamic variables to control the evaluation of other expressions in a large notebook. For example: I would like the expressions that create these grids to hide themselves after evaluation, so I have a cleaner notebook showing controls, but hiding expressions. How can I do this?
1 Answer
Probably the best what you can do is to collapse the cell group keeping visible only the output cell(s).
If your input cell produces only one output cell, you can define an auxiliary function printAndCollapseInputCell
as follows:
printAndCollapseInputCell =
Function[CellPrint[ExpressionCell[#, "Output"]];
SelectionMove[EvaluationCell[], Next, "Cell"]; FrontEndTokenExecute["OpenCloseGroup"]];
Now you can apply it to your expression:
printAndCollapseInputCell@Slider[Dynamic[a]]
Or alternatively if your input cell outputs/prints more than one cell, you can define an auxiliary function hideInputCell
which should be put at the last (and separate!) line of the input cell:
hideInputCell := (SelectionMove[EvaluationCell[], All, "CellGroup"];
Module[{nb = EvaluationNotebook[], group}, group = NotebookRead[nb];
NotebookWrite[nb,
group /. CellGroupData[cells_, ___] :>
CellGroupData[cells, Range[2, Length[cells]]]]];)
An example of use:
Print[Slider[Dynamic[a]]]
Slider[Dynamic[a]]
hideInputCell
-
$\begingroup$ Related: "How to fold output cells by default?" $\endgroup$ Commented Oct 16, 2019 at 13:15
Open
inMenu >> Cell >> Cell Properties
$\endgroup$SetOptions[EvaluationCell[], CellOpen -> False]
as last command in the cell (to open it, see @kglr's comment). You can also put this code in theCellEpilog
option, possibly connected to a custom style, so that you can just set the cell style to make it auto-hide. $\endgroup$