A slightly less toy exampleΒΆ
Most applications require a little more than a button on a page. Lets build a slightly more complex example - a Fahrenheit to Celcius converter.
from __future__ import print_function, unicode_literals, absolute_import
import toga
- def build(app):
container = toga.Container()
c_input = toga.TextInput(readonly=True) f_input = toga.TextInput()
c_label = toga.Label(‘Celcius’, alignment=toga.LEFT_ALIGNED) f_label = toga.Label(‘Fahrenheit’, alignment=toga.LEFT_ALIGNED) join_label = toga.Label(‘is equivalent to’, alignment=toga.RIGHT_ALIGNED)
- def calculate(widget):
- try:
- c_input.value = (float(f_input.value)- 32.0) * 5.0 / 9.0
- except:
- c_input.value = ‘???’
button = toga.Button(‘Calculate’, on_press=calculate)
container.add(c_input) container.add(f_input)
container.add(c_label) container.add(f_label) container.add(join_label)
container.add(button)
# container.constrain(f_input.WIDTH == 100) container.constrain(f_input.TRAILING + 20 == f_label.LEADING) container.constrain(f_label.TRAILING + 20 == container.TRAILING) container.constrain(f_input.TOP == container.TOP + 20) container.constrain(f_input.TOP == f_label.TOP)
container.constrain(c_input.WIDTH == f_input.WIDTH) container.constrain(c_label.WIDTH == f_label.WIDTH) container.constrain(c_input.TRAILING + 20 == c_label.LEADING) container.constrain(c_label.TRAILING + 20 == container.TRAILING) container.constrain(c_input.TOP == f_input.BOTTOM + 20) container.constrain(c_input.TOP == c_label.TOP)
container.constrain(c_input.LEADING == f_input.LEADING) container.constrain(join_label.TOP == c_label.TOP) container.constrain(join_label.LEADING == container.LEADING + 20) container.constrain(join_label.TRAILING + 20 == c_input.LEADING)
container.constrain(button.TOP == c_input.BOTTOM + 20) container.constrain(button.LEADING == c_input.LEADING) container.constrain(button.TRAILING == c_label.TRAILING) container.constrain(button.BOTTOM + 20 == container.BOTTOM)
return container
- if __name__ == ‘__main__’:
app = toga.App(‘Temperature Converter’, ‘org.pybee.f_to_c’, startup=build)
app.main_loop()