Button
あるグローバルフロントエンド設定の値がであり、この値を設定して押しFalse
た後、行全体で自己破壊する場合にのみ表示されるを作成するにはどうすればよいですか?Column
True
私はこのようなものが必要です:
Column[{"Item 1", "Item 2",
Dynamic[If[
Last@Last@Options[$FrontEnd, "VersionedPreferences"] === False,
Button["Press me!",
SetOptions[$FrontEnd, "VersionedPreferences" -> True]],
Sequence @@ {}]]}]
しかし、このコードでは、Button
それを押しても消えることはありません。自己破壊的にすることは可能ですか?
belisariusとmikuszefskiによるアイデアに基づく最終的な解決策:
PreemptProtect[SetOptions[$FrontEnd, "VersionedPreferences" -> False];
b = True];
Dynamic[Column[
Join[{"Item 1", "Item 2"},
If[Last@Last@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[! Last@Last@Options[$FrontEnd, "VersionedPreferences"], b = True,
b = False]]
重要なポイントは次のとおりです。
Dynamic
追加の変数を導入b
し、それをの値でバインドしますOptions[$FrontEnd, "VersionedPreferences"]
。- 内部を使用する代わりに、
Column
構成全体をでラップします。Dynamic
Dynamic
Column