Pharo Smalltalk:从TextMorph中读取

3
在使用Pharo的Smalltalk中,我正在创建一个应用程序,它可以读取用户输入并执行X操作。
到目前为止,我已经成功创建了一个TextMorph,让用户可以输入值,但我不确定如何从TextMorphs中读取值,然后对该值执行某些操作。
有什么想法吗?
谢谢。
1个回答

6

你可以简单地向你的morph发送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: '...'将会打开一个带有文本输入框的对话框。


谢谢,我目前已经有了。 - Gdohfg
这个在你的初始化类里吗?当我尝试创建方法 processTextMorph: TextMorph 时,我得到了“名称已定义”的错误。 - Gdohfg
`processTextMorph: Name already defined ->TextMorph | contents | contents := TextMorph text. "do something"` - Gdohfg
InputField := TextMorph new. InputField contents: '请输入温度'. InputField color: Color white. InputField bounds: (350@320 corner: 150@150). self addMorph: InputField. 这是我的文本形态代码。 - Gdohfg
1
因为您将方法的参数命名为TextMorph,而该名称已经是指向具有相同名称的类的全局变量。如果您按照我的示例并将参数命名为aTextMorph,则一切都应该没问题。还要注意:根据Smalltalk编码约定,您应该以小写字母开头命名实例和临时变量,以大写字母开头的名称用于全局变量。 - Uko
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接