Kivyアプリのテキスト関連のコードの書き方などをまとめています。文字の追記、文字の連結、f文字、コピーペースト機能、入力された文字列の種類を判別する方法など。
ウィジェットのtextに文字列を追記する
代入演算子「+=」を使って追記します。
# pyファイル
self.ids.mylabel.text += 'add text'
# kvファイル
Label:
id: mylabel
text: 'original text'
この結果は「original text add text」になります。
kvファイルで文字列を連結する
Pythonと同じように+演算子が使えます。
# kvファイル
Label:
text: "連結演算子が使えるよ" + root.variable_value
そのまま文字列を並べても連結されます。
# kvファイル
Label:
text: "1,""2,""3"
kvファイルでf文字を使う
Pythonと同じようにf文字が使えます。f文字は文字列の中に変数を埋め込む書き方になります。
# kvファイル
Label:
text: f"f文字だよ:{root.variable_value}"
コピー機能を実装する
コピー機能を実装するにはClipboardクラスのcopyメソッドを使います。
from kivy.core.clipboard import Clipboard
def copy_text(self, text):
Clipboard.copy(text)
Button:
text: "copy text"
on_release: root.copy_text()
ペースト機能を実装する
ペースト機能を実装するにはClipboardクラスのpastメソッドを使います。
from kivy.core.clipboard import Clipboard
def paste_text(self, text):
self.ids.label.text += Clipboard.past(text)
Label:
id: label
text: ""
Button:
text: "copy text"
on_release: root.paste_text()
入力された文字列を判別する
TextInputで入力されたテキストをひらがな、カタカナ、英数字、その他(漢字など)を判別する
from kivy.app import App
from kivy.uix.textinput import TextInput
class MyApp(App):
def build(self):
self.text_input = TextInput()
self.text_input.bind(text=self.on_text)
return self.text_input
def on_text(self, instance, value):
if all('\u3040' <= char <= '\u309F' for char in value): # ひらがな
print("入力モード: ひらがな")
elif all('\u30A0' <= char <= '\u30FF' for char in value): # カタカナ
print("入力モード: カタカナ")
elif all('0' <= char <= '9' or 'A' <= char <= 'Z' or 'a' <= char <= 'z' for char in value): # 英数字
print("入力モード: 英数字")
else:
print("入力モード: その他")
MyApp().run()
Comment