kivyを教えてくれるサイトを参考に、
ボタンを押したらラベルの文字が変わるというのを作ってみました。
でも、なぜラベルのボタンが変わるのかが理解できませんでした。
不明点としては、
kvファイルでlabelにtextで文字を指定した場合、
ボタンを押しても表記が変わりませんでしたが、
root.textにしたら変わりました。
まずこの差がよくわかりませんでした。
また、TextWidgetに対して、self,textで文字を指定したら、ラベルに文字が入り、
ボタンを押したら、ちゃんと動作します。
なぜ、ここのtextがラベルに該当するのでしょう??
ちなみにrootとはpyファイル中身ってことでいいのでしょうか?
root.textならpyファイルに記載の文字 みたいな。
pyファイル
from kivy.app import App from kivy.uix.label import Label from kivy.uix.widget import Widget from kivy.properties import StringProperty class TextWidget(Widget): text = StringProperty() def __init__(self, **kwargs): super(TextWidget, self).__init__(**kwargs) self.text = "kivy text change" def button1Clicked(self): self.text = "Button1 Push" def button2Clicked(self): self.text = "Button2 Push" class KivyChangeImg(App): def __init__(self, **kwargs): super(KivyChangeImg, self).__init__(**kwargs) self.title = "KIVY KIVY" def build(self): return TextWidget() if __name__ == "__main__": KivyChangeImg().run()
kvファイル
#-*- coding: utf-8 -*- TextWidget: <TextWidget>: BoxLayout: orientation: "vertical" size: root.size Label: id: label1 font_size: 48 text: root.text BoxLayout: size_hint_y: 0.3 Button: id: button1 font_size: 48 text: "Button1" on_press: root.button1Clicked() Button: id: button2 font_size: 48 text: "Button2" on_press: root.button2Clicked()
あなたの回答
tips
プレビュー