
まくまく
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 使い方まとめ