2017-10-19 141 views
2

我对Pharo,Smalltalk是全新的。我正在开发一个小型应用程序,将温度从华氏温度转换为摄氏温度。任何人都可以给我任何想法,如何使用TextMorph创建一个输入字段,并显示在窗口中,如屏幕截图所示。另外,当按钮被点击时能够从输入字段获取数据。下面的代码是我迄今为止所做的。 ScreenshotPharo Smalltalk:如何使用TextMorph创建输入字段,然后从输入字段获取数据?

类TemperatureMorph

BorderedMorph subclass: #TemperatureMorph 
     instanceVariableNames: 'tempInputField counter' 
     classVariableNames: '' 
     package: 'Assignment' 

initialize方法:包含一个标签,文本框和按钮。

initialize 
    | headingLabel converterButton| 
    super initialize. 
    self bounds: ([email protected] corner:[email protected]). 
    self color: Color gray. 

    headingLabel := StringMorph contents: 'Converter'. 
    headingLabel position: [email protected] 
    self addMorph: headingLabel. 

    tempInputField := TextMorph new.  
    tempInputField position: [email protected] 
    self addMorph: tempInputField. 

感谢

+1

,解决办法在于权在截图你面前的事实让我不知道你们是否已经尝试自己的东西,并张贴了这个问题之前已经做了一些研究。 – JayK

+0

@Jayk是的。我做了研究,并尝试了自己给你的解决方案,但不幸的是由于我选择的背景,我看不到文本框。 :( –

+0

哦,好吧,那是不好的运气 – JayK

回答

2

你已经可以看到在你的屏幕截图必要的代码,你只能有一个TextMorph的更换StringMorph的建设。我建议你看一下Pharo by Example这本书。它有关于Morphic的一章,这是Pharo中的UI框架。

yourTextMorph := TextMorph new. 
yourTextMorph contents: 'initial text'. 
ownerMorph addMorph: yourTextMorph. 

我想你还会想要读取TextMorph中的内容。您可以使用yourTextMorph contents来实现。另请参阅Pharo Smalltalk: Reading from TextMorph

+0

非常感谢。但是,即使在检查了您提供的链接后,我仍然无法从输入字段中获取数据,我甚至自己厌倦了这个解决方案,但似乎无法工作对我来说, –

+0

可以请你给我一些指导,告诉我如何从输入字段获取数据。谢谢 –

+0

@BigSmile就像我写的:你可以得到TextMorph中的文本'tempInputField内容'。这会给你一个Text类的实例(它是一个格式化的字符串)。你需要将它转换为一个数字,以便像这样进行温度转换:'inputTemperature:= tempInputField contents asNumber.'但我只是在猜测你需要什么。什么不工作?调试器是否因为错误而弹出?如果是这样,那么错误信息是什么? – JayK

2

另一方面,如果您在Pharo中进行除了学习以外的其他任何UI工作(看起来像OP/is/learning,所以这可能不适用)。你应该看看魅力或规格。这两者都有非常简单的文本输入和控制系统。

Spec Glamour

+0

谢谢你的建议。但是,我只是在学习基础知识。 –

+0

学习基础知识是很好的,但不要过分介入它们。它的所有内容都被撕掉了,并被一个叫做Bloc的东西所取代(但我相信这个API将会保留)。你应该看看Bloc和Bric,看看未来所有这些UI的内容。 – Dusty

相关问题