Python kivy ボタンを押してラベルを書き換える方法

まくまく
まくまく
PythonのGUIアプリ作成ライブラリ kivyで作成したラベルの更新を行ってみようと思います。ボタンをクリックしてイベント処理を実行する方法です。

出力


プログラムを実行するとこのようなウインドウが立ち上がります。
1行目:ラベル「Please write your name here」
2行目:テキストインプット
3行目:ラベル「空白」
4行目:ボタン「Enter」




2行目に配置したテキストインプットに名前を入力して、一番下のボタンを押します。


ボタンを押すことで、テキストインプットに入力された名前が3行目に表示されました。


この状態で別の名前を入力して、Enterボタンを押してみます。


ラベルを書き換えることができました。



サンプルプログラム

pyファイル

#ライブラリのインポート
from kivy.app import App
from kivy.config import Config
from kivy.uix.widget import Widget
from kivy.properties import ObjectProperty
from kivy.lang import Builder

#ウインドウの幅と高さの設定
Config.set('graphics', 'width', 700)
Config.set('graphics', 'height', 400)
#1でサイズ変更可、0はサイズ変更不可
Config.set('graphics', 'resizable', 1)
#kvファイルの読み込み
Builder.load_file("update_label.kv")

class MyLayout(Widget):
    def press(self):
        name = self.ids.input.text
        self.ids.name_label2.text = f"Hello {name}!!"
        self.ids.input.text = ""

class DispimageApp(App):
    def build(self):
        self.title = "window"
        return MyLayout()

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

kvファイル

#ファイル名: update_label.kv
<MyLayout>
    BoxLayout:
        orientation: "vertical"
        size: root.width, root.height
        padding: 20
        spacing: 20
        
        Label:
            id: name_label1
            text: "Please Write Your Name Here"
            font_size: 32
            size_hint_y: 0.5
            
        TextInput:
            id: input
            multiline: False
            pos_hint: {"center_x": 0.5}
            size_hint: (None, None)
            width: 400
            height: 50

        Label:
            id: name_label2
            text: ""
            font_size: 32
            pos_hint: {"center_x": 0.5}
            size_hint_y: 0.5
            
            
        Button:
            size_hint: (1, .5)
            font_size: 32
            text: "Enter"
            pos_hint: {"center_x": 0.5}
            size_hint: (None, None)
            width: 200
            height: 50
            on_press: root.press()

ボタンイベントの処理の流れ

ボタンを押すこと関数「def press」(pyファイル17行目)を呼び出し、ラベルの更新とテキストインプットに入力された文字をクリアしています。kvファイル側のボタンには「on_press: root.press()」(39行目)を記載しておく必要があります。

kivy関連の記事はこちらにまとめています。>>>Python kivy 使い方まとめ

タイトルとURLをコピーしました