Valores de entrada Kivy para cálculos simples.

Soy bastante nuevo en Kivy (comenzó ayer) y estoy tratando de crear una aplicación lo suficientemente simple que tenga cuadros de entrada para varios valores de altura y área para calcular volúmenes. No puedo encontrar ningún método de trabajo para hacer esto. Hasta ahora todo lo que tengo es esto:

from kivy.app import App from kivy.lang import Builder from kivy.uix.screenmanager import ScreenManager, Screen Builder.load_string(""" : FloatLayout: Label: text: 'Please Select an Area to Work With:' pos: 230, 490 size_hint: .15, .05 font_size: 23 Button: text: "A" pos: 230, 100 size_hint: .4,.1 font_size: 23 on_press: root.manager.current = 'settings' Button: text: "B" pos: 230, 210 size_hint: .4,.1 font_size: 23 on_press: root.manager.current = 'settings' Button: text: "C" pos: 230, 320 size_hint: .4,.1 font_size: 23 on_press: root.manager.current = 'settings' Button: text: "D" pos: 230, 420 size_hint: .4,.1 font_size: 23 on_press: root.manager.current = 'settings' : GridLayout: Label: text: 'Room 1' pos: 6, 460 size_hint: .15, .05 font_size: 23 Label: text: 'Room 2' pos: 6, 420 size_hint: .15, .05 font_size: 23 Label: text: 'Room 3' pos: 6, 380 size_hint: .15, .05 font_size: 23 Label: text: 'Room 4' pos: 6, 340 size_hint: .15, .05 font_size: 23 Label: text: 'Room 5' pos: 6, 300 size_hint: .15, .05 font_size: 23 Label: text: 'Room 6' pos: 6, 260 size_hint: .15, .05 font_size: 23 TextInput: text1: "0" multiline: False pos: 200,420 font_size: 23 on_text: viewer.text = self.text1 size_hint: .001, .001 TextInput: text2: "0" multiline: False pos: 200, 420 font_size: 23 on_text: viewer.text = self.text2 size_hint: .001, .001 TextInput: text3: "0" multiline: False pos: 200,380 font_size: 23 on_text: viewer.text = self.text3 size_hint: .001, .001 TextInput: text4: "0" multiline: False pos: 200,340 font_size: 23 on_text: viewer.text = self.text4 size_hint: .001, .001 TextInput: text5: "0" multiline: False pos: 200,300 font_size: 23 on_text: viewer.text = self.text5 size_hint: .001, .001 TextInput: text6: "0" multiline: False pos: 200,240 font_size: 23 on_text: viewer.text = self.text6 size_hint: .001, .001 """) # Declare both screen class MenuScreen(Screen): pass class SettingsScreen(Screen): pass # Create the screen manager sm = ScreenManager() sm.add_widget(MenuScreen(name='menu')) sm.add_widget(SettingsScreen(name='settings')) class TestApp(App): def build(self): return sm if __name__ == '__main__': TestApp().run() 

Estoy planeando tener la segunda página única para cada botón presionado, pero quiero que se aprecie cualquier ayuda.

Espero haber entendido tu pregunta. Estás pidiendo métodos para hacer esto. La respuesta simple es que tienes todo el Python para hacer todas las operaciones que deseas. Kivy es una biblioteca que proporciona una gran cantidad de componentes para diseñar GUI. También le proporciona un idioma analizado por Builder.load_string() . Aquí hay un ejemplo que puede ser más o menos lo que estás buscando. Es una especie de calculadora en la primera pantalla. La segunda pantalla está vacía y puede moverse entre ellas con los botones de la parte inferior.

La calculadora en la primera pantalla tiene dos InputTexts y dos botones ( Sum y Product ). El botón de sum tiene la implementación de una sum directamente en el lenguaje kivy. El botón Producto llama a un método en la raíz (una instancia de Calc). El método no existe por sí mismo. Creé en el código python debajo de la sección kivy. Hay algunos comentarios sobre el código de lo que estoy diciendo.

 from kivy.app import App from kivy.lang import Builder from kivy.uix.floatlayout import FloatLayout Builder.load_string(""" : # This are attributes of the class Calc now a: _a b: _b result: _result AnchorLayout: anchor_x: 'center' anchor_y: 'top' ScreenManager: size_hint: 1, .9 id: _screen_manager Screen: name: 'screen1' GridLayout: cols:1 TextInput: id: _a text: '3' TextInput: id: _b text: '5' Label: id: _result Button: text: 'sum' # You can do the opertion directly on_press: _result.text = str(int(_a.text) + int(_b.text)) Button: text: 'product' # Or you can call a method from the root class (instance of calc) on_press: root.product(*args) Screen: name: 'screen2' Label: text: 'The second screen' AnchorLayout: anchor_x: 'center' anchor_y: 'bottom' BoxLayout: orientation: 'horizontal' size_hint: 1, .1 Button: text: 'Go to Screen 1' on_press: _screen_manager.current = 'screen1' Button: text: 'Go to Screen 2' on_press: _screen_manager.current = 'screen2'""") class Calc(FloatLayout): # define the multiplication of a function def product(self, instance): # self.result, self.a and self.b where defined explicitely in the kv self.result.text = str(int(self.a.text) * int(self.b.text)) class TestApp(App): def build(self): return Calc() if __name__ == '__main__': TestApp().run()