【发布时间】:2016-10-07 23:42:35
【问题描述】:
在使用 Pharo 的 Smalltalk 中,我正在创建一个读取用户输入并执行 X 的应用程序。
到目前为止,我已经设法制作了一个用户可以输入值的 TextMorph, 但我不确定如何从 TextMorphs 中读取,然后使用该值做一些事情。
有什么想法吗?
谢谢
【问题讨论】:
标签: windows smalltalk pharo squeak
在使用 Pharo 的 Smalltalk 中,我正在创建一个读取用户输入并执行 X 的应用程序。
到目前为止,我已经设法制作了一个用户可以输入值的 TextMorph, 但我不确定如何从 TextMorphs 中读取,然后使用该值做一些事情。
有什么想法吗?
谢谢
【问题讨论】:
标签: windows smalltalk pharo squeak
好吧,您可以简单地将text 发送到您的变形并获取它的内容。所以你可以有一个按钮,当按下按钮时,你可以对内容做一些事情:
input := TextMorph new.
button :=
SimpleButtonMorph new
target: self
actionSelector: #processTextMorph:;
arguments: {input};
yourself.
processTextMorph: aTextMorph
| contents |
contents := aTextMorph text.
"do something with contents"
但是,也许您想使用对话框?因为你可以这样做:
response := UIManager default request: 'What do you want to do?'.
response ifNotNil: [ "do something with the response" ]
然后UIManager default request: '…'的执行将打开一个带有文本输入的对话框
【讨论】:
contents 的实例变量吗?
processTextMorph: Name already defined ->TextMorph | contents | contents := TextMorph text. "do something"
TextMorph,它已经是指向同名类的全局变量。如果您按照我的示例并将参数命名为aTextMorph,那么一切都应该没问题。另请注意:根据 smalltalk 编码约定,您应该以小写开头命名实例和临时变量,以大写开头的名称用于全局变量