Wolfram mathematica 在CDF播放器输入字段内按ENTER键复制行。如何改变行为? 我创建了一个CDF,它在文本中间有一些输入字段,供读者输入自己的值。

Wolfram mathematica 在CDF播放器输入字段内按ENTER键复制行。如何改变行为? 我创建了一个CDF,它在文本中间有一些输入字段,供读者输入自己的值。,wolfram-mathematica,mathematica-cdf,wolfram-cdf,Wolfram Mathematica,Mathematica Cdf,Wolfram Cdf,CDF播放机(8.0.3)上的所有功能都很好,除非用户在更改字段内的值后,按ENTER键而不是“Return”或“Tab”或“mouse selection other field” 如果他按Enter,CDF播放器与Mathematica所做的事情完全相同:行复制,最终在中间显示一些内部单元结构。 所有Mathematica用户都可以轻松避免按ENTER键,但CDF播放器用户很可能没有意识到这种输入/返回二元性 我已经尝试了我能记住的所有笔记本选项:部署、可编辑等,但没有成功 我记得的另一件事

CDF播放机(8.0.3)上的所有功能都很好,除非用户在更改字段内的值后,按ENTER键而不是“Return”或“Tab”或“mouse selection other field”

如果他按Enter,CDF播放器与Mathematica所做的事情完全相同:行复制,最终在中间显示一些内部单元结构。

所有Mathematica用户都可以轻松避免按ENTER键,但CDF播放器用户很可能没有意识到这种输入/返回二元性

我已经尝试了我能记住的所有笔记本选项:部署、可编辑等,但没有成功

我记得的另一件事是用NotebookEventAction删除ENTER操作,但找不到如何做:{“KeyDown”,“ENTER”}->Null;尝试输入、输入键、[输入键]等,但未成功


有人能帮我从CDF付款人身上消除这个副作用吗?

这对数字很有效:

ExpressionCell[InputField[Dynamic[x], Number], Evaluatable -> False, 
 Background -> White]

对于其他输入类型,shift Enter会创建换行符。

我想这里已经回答了这个问题:@Sjoerd-不太正确。至少在上面提到的文章中,我找不到如何隔离ENTER而不是RETURN,或者将其转换为RETURN,或者使其为Null操作。有趣的是,面板和操纵都不会受到这种行为的影响。我认为原因是因为它们的格式完全相同,无论是在输入单元格中,还是在输出单元格中(当按Enter键时,它们会转换为输入单元格->可以通过单元格括号看到这一点)。所以问题是:我怎样才能使所有的输入单元格看起来像输出单元格;或者,当用户输入输出单元格时,如何阻止自动创建新的输入单元格;或者我如何阻止在笔记本中创建简单的输入单元格?这对每个单元格都适用。非常感谢。你知道另一种方法可以让所有笔记本都有相同的行为吗?我发现
ExpressionCell
的文档页面有点混乱。他们从未真正解释过为什么以及何时使用此功能。当
ExpressionCell
被删除时,我尝试的几乎每个示例都产生了相同的(视觉)结果。@Fonseca。不容易。NotebookEventActions不注册Return+Shift,尽管UpArrow+Shift有效。示例:x=0;SetOptions[InputNotebook[],NotebookEventActions->{“UpArrowKeyDown”:>如果[CurrentValue[“ShiftKey”],x++,x--],“ReturnKeyDown”:>如果[CurrentValue[“ShiftKey”],x++,x--];Dynamic[x]@Fonseca文档中说:“
可评估的
通常是针对单元格样式而不是单个单元格设置的”。因此,您可以使用至少修改当前笔记本的
“输出”
样式,并在其中包含选项
可评估->假,可编辑->假。您还可以为笔记本本身设置
Editable->False
SetOptions[EvaluationNotebook[],Editable->False]
。现在,您可以计算此笔记本中的输入单元格,但不能修改它们。@Fonseca另请参阅文档中的选项
CellEditDuplicate
CellEditDuplicate
CellEvaluationDuplicate