Kivyでテキストボックスを実装する方法

2019年12月28日

みなさまおはこんばんにちは、せなです

今回はKivyでテキストボックスを実装する方法について説明したいと思います

テキストボックスを実装するには「TextInput」を使用します
主要な引数は以下となります

  • allow_copy: コピーを許可するかどうか(デフォルトはTrue)
  • auto_indent: 複数行に自動インデントするかどうか(デフォルトはFalse)
  • background_active: 選択されている時の背景画像を設定
  • background_disabled_normal: 無効な時の背景画像を設定
  • background_normal: 選択されていない時の背景画像を設定
  • background_color: 背景色を設定(デフォルトは(1,1,1,1)で白)

textinput.py

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout


class TestWindow(BoxLayout):
    pass


class TextInputApp(App):

    def build(self):
        return TestWindow()


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

textinput.kv

<TestWindow>
    BoxLayout:
        TextInput:
            text: ''

上を実行するとこんな感じになります

以下はテキストボックスを使ったサンプルです
ボタンを押すと入力した文字がラベルに出力されるようになっています

textinput.py

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import ObjectProperty


class TestWindow(BoxLayout):
    input = None
    label = ObjectProperty(None)

    def text_add(self):
        self.label.text = self.input.text


class TextInputApp(App):

    def build(self):
        return TestWindow()


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

textinput.kv

<TestWindow>
    label: text_label
    input: text_input

    BoxLayout:
        TextInput:
            id: text_input
            text: ''
        Label:
            id: text_label
            text: ''
        Button:
            text: 'Execution'
            on_release: root.text_add()

こんな感じですね