Python:Kivy:从单个TextInput中除去两个数字

时间:2018-03-31 00:26:04

标签: python python-3.x kivy

简单的问题,如何从一个InputBox中划分两个数字?我不知道,例如,我只有一个输入框,我写了两个数字" 40 10"我怎么能自动分开呢?代码如下:

import kivy
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
from kivy.uix.popup import Popup
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.listview import ListView

class Widget(GridLayout):
    def __init__(self, **kwargs):
        super(Widget, self) .__init__(**kwargs)
        self.cols = 2

        self.add_widget(Label(text="RPM"))
        self.rpm = TextInput(multiline=False)
        self.add_widget(self.rpm)

        btn1 = Button(text="Division:")
        btn1.bind(on_press=self.buttonClicked)
        self.add_widget(btn1)

我需要的例子:

    def buttonClicked(self, btn):
        self.rpm.text(first input / second input)
        x = self.rpm.text
        popup = Popup(title='Result', content=x, size_hint=(None, 
        None), size=(500, 90))
        popup.open()

1 个答案:

答案 0 :(得分:2)

程序是下一步:

  • TextInput
  • 获取文字
  • 用空格分隔
  • 验证只存在2个术语
  • 将其转换为float,因此可能会出现错误,必须使用例外。
  • 对于最后一个,我们使用包含文本的Label建立弹出窗口。
import kivy
kivy.require("1.0.6")

from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
from kivy.uix.popup import Popup

class Widget(GridLayout):
    def __init__(self, **kwargs):
        super(Widget, self) .__init__(**kwargs)
        self.cols = 2

        self.add_widget(Label(text="RPM"))
        self.rpm = TextInput(multiline=False)
        self.add_widget(self.rpm)

        btn1 = Button(text="Division:")
        btn1.bind(on_press=self.buttonClicked)
        self.add_widget(btn1)

    def buttonClicked(self, btn):
        texts = self.rpm.text.split()
        if len(texts) == 2:
            try:
                x, y = map(float, texts)
                res = x/y
                popup = Popup(title='Result', content=Label(text=str(res)), size_hint=(None, None), size=(500, 90))
                popup.open()
            except (ValueError, ZeroDivisionError):
                print("error")

class TestApp(App):
    def build(self):
        return Widget()

if __name__ == '__main__':
    TestApp().run()

这种类型的接口很少用,因为用户可以放置任何东西,适当的是在写入文本时验证文本,例如接受某组字符。

另一项改进是将其分为2 TextInput s。