我试图用kivy构建一个应用程序,询问一些数字,然后返回一个计算,但我需要在不同的小部件上提供输入数字。我一直在寻找一种方法来做到这一点,似乎可以用ObjectProperty()或NumericProperty()完成,但我无法找到正确的方法。对于准系统示例(显然不工作),下面是应用程序的代码,其中引入了两个数字并计算总和。 main.py是
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
class SumRoot(BoxLayout):
pass
class FirstInput(BoxLayout):
pass
class SecondInput(BoxLayout):
pass
class OutputSlide(BoxLayout):
def sum_of_inputs(self):
self.resultado.text = str(float(self.first_input.text)+float(self.second_input.text))
class SumApp(App):
pass
if __name__ == '__main__':
SumApp().run()
和sum.kv文件是
SumRoot:
<SumRoot>:
carousel: carousel
first_slide: first_slide
second_slide: second_slide
third_slide: third_slide
Carousel:
id: carousel
FirstInput:
id: first_slide
SecondInput:
id: second_slide
OutputSlide:
id: third_slide
<FirstInput>:
orientation: "vertical"
first: first_input
TextInput:
id: first_input
Button:
text: "Next"
on_release: app.root.carousel.load_slide(app.root.second_slide)
<SecondInput>:
orientation: "vertical"
second: second_input
TextInput:
id: second_input
Button:
text: "Sum"
on_press: root.sum_of_inputs()
on_release: app.root.carousel.load_slide(app.root.third_slide)
<OutputSlide>:
orientation: "vertical"
result: result_output
Label:
id: result_output
预期的行为是当一个人按下&#34; sum&#34;按钮它计算总和,转到下一张幻灯片并显示总和。欢迎所有建议。
答案 0 :(得分:0)
1)将输入的引用传递给进行计算的OutputSlide
:
OutputSlide:
id: third_slide
first_input: first_slide.first
second_input: second_slide.second
2)在 py 文件中添加对象属性,该文件将保存它们:
from kivy.properties import ObjectProperty
...
class OutputSlide(BoxLayout):
first_input = ObjectProperty()
second_input = ObjectProperty()
result = ObjectProperty() # this one aswell, don't leave bare ids
3)正确计算结果on_press
:
<SecondInput>:
....
on_press: app.root.third_slide.sum_of_inputs()
此外,修复OutputScreen
中的命名错误。