Comment créer un Button
qui sera affiché que lorsque la valeur de certains paramètre global FrontEnd est False
et se autodétruira avec toute la ligne de la Column
après l'avoir enfoncé la définition de cette valeur à True
?autodestructeur Bouton intérieur Colonne
je besoin de quelque chose comme ceci:
Column[{"Item 1", "Item 2",
Dynamic[If[
[email protected]@Options[$FrontEnd, "VersionedPreferences"] === False,
Button["Press me!",
SetOptions[$FrontEnd, "VersionedPreferences" -> True]],
Sequence @@ {}]]}]
Mais avec ce code, la Button
ne disparaît pas après avoir appuyé sur elle. Est-il possible de le rendre autodestructeur?
La solution finale basée sur des idées par belisarius et mikuszefski:
PreemptProtect[SetOptions[$FrontEnd, "VersionedPreferences" -> False];
b = True];
Dynamic[Column[
Join[{"Item 1", "Item 2"},
If[[email protected]@Options[$FrontEnd, "VersionedPreferences"] === False &&
b == True, {Button[
Pane[Style[
"This FrontEnd uses shared preferences file. Press this \
button to set FrontEnd to use versioned preferences file (all the \
FrontEnd settings will be reset to defaults).", Red], 300],
AbortProtect[
SetOptions[$FrontEnd, "VersionedPreferences" -> True];
b = False]]}, {}]], Alignment -> Center],
Initialization :>
If[! [email protected]@Options[$FrontEnd, "VersionedPreferences"], b = True,
b = False]]
Les points clés sont les suivants:
- introduction supplémentaires
Dynamic
variablesb
et la liaison avec la valeur deOptions[$FrontEnd, "VersionedPreferences"]
, - emballage entier
Column
construire avecDynamic
au lieu d'utiliserDynamic
à l'intérieurColumn
.
Je souhaite détruire complètement la ligne entière de la colonne après avoir appuyé sur le bouton. –
@Alexey Ohhh désolé, j'ai mal compris.Maintenant, je comprends le 'Sequence @@ {}' :) –
@Alexey Voir Modifier, s'il vous plaît –