【问题标题】:Pharo Smalltalk: Reading from TextMorphPharo Smalltalk:从 TextMorph 读取
【发布时间】:2016-10-07 23:42:35
【问题描述】:

在使用 Pharo 的 Smalltalk 中,我正在创建一个读取用户输入并执行 X 的应用程序。

到目前为止,我已经设法制作了一个用户可以输入值的 TextMorph, 但我不确定如何从 TextMorphs 中读取,然后使用该值做一些事情。

有什么想法吗?

谢谢

【问题讨论】:

    标签: windows smalltalk pharo squeak


    【解决方案1】:

    好吧,您可以简单地将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: '…'的执行将打开一个带有文本输入的对话框

    【讨论】:

    • 谢谢我目前有
    • 这是在你的初始化类中吗?当我尝试创建方法 processTextMorph: TextMorph 时,我收到错误“名称已定义”
    • @Gdohfg 这可能是因为您已经有一个名为 contents 的实例变量吗?
    • processTextMorph: Name already defined ->TextMorph | contents | contents := TextMorph text. "do something"
    • 对,因为您将方法的参数命名为TextMorph,它已经是指向同名类的全局变量。如果您按照我的示例并将参数命名为aTextMorph,那么一切都应该没问题。另请注意:根据 smalltalk 编码约定,您应该以小写开头命名实例和临时变量,以大写开头的名称用于全局变量
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多