はじめに
Python kivyについて前回までの内容では、ボタンを追加する方法まででした。
今回の内容では、Python kivyで「ボタン」を動作の実装まで解説します。そこで今回は、ボタンをクリックすると、「ハローワールド」と表示し、ボタンを離すと表示が消えるといったGUIを設計します。
実装するにあたり、今回から「Widget」クラスを活用するので、その解説から始めます。
「Widget」クラスとは?
そもそも、「Widget」とはなんでしょう?というところから解説します。
ウィジェット (Widget)
グラフィカルユーザインターフェースの構成要素、及びその集まりを指します。
つまり、Widgetの中に「Label」や「Buttom」などの部品が格納されているということです。
「Widget」クラスの使い方(pyファイル)
まずWidgetの全文を示します。そのあと一行一行解説します。
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.properties import StringProperty
from kivy.core.text import LabelBase, DEFAULT_FONT
from kivy.resources import resource_add_path
resource_add_path("文字ファイルのディレクトリを指定する")
LabelBase.register(DEFAULT_FONT, "文字ファイルを指定する")
class Widgets(Widget):
text = StringProperty() # プロパティの追加
def __init__(self, **kwargs):
super(Widgets, self).__init__(**kwargs)
self.text = ''
def buttonClicked(self): # ボタンをクリック時
self.text = 'ハローワールド'
def buttonReleased(self):
self.text= ''
class TestApp(App):
def __init__(self, **kwargs):
super(TestApp, self).__init__(**kwargs)
self.title = 'greeting'
def build(self):
return Widgets()
if __name__ == '__main__':
TestApp().run()
次にclass Widgetsのみ抜粋します。
from kivy.uix.widget import Widget
class Widgets(Widget):
text = StringProperty() # プロパティの追加
def __init__(self, **kwargs):
super(Widgets, self).__init__(**kwargs)
self.text = ''
def buttonClicked(self): # ボタンをクリック時
self.text = 'ハローワールド'
def buttonReleased(self): # ボタンをリリース時
self.text= ''
from kivy.uix.widget import Widget
Widgetを呼び出すコードになります。
class Widgets(Widget):
text = StringProperty() # プロパティの追加
「Widgets」という名前で新しくクラスを作成します。()の中のWidgetは、継承をしています。継承と継承元を親クラス、継承先を子クラスと呼び、子クラスは親クラスの性質(メソッド等)を引き継ぐことを指します。
textというプロパティを追加します。という意味です。
def __init__(self, **kwargs):
super(Widgets, self).__init__(**kwargs)
self.text = ''
selfは、インスタンス自身を示すものです。**kwargsは可変長引数です。superとは継承を示します。意味合いとしては「selfを自身の親クラスのオブジェクトとみなし、そのコンストラクタで初期化する」ということになります。
self.textに何も入れないという意味です。なので、初期状態では何のテキストも入っていない状態です。
def buttonClicked(self): # ボタンをクリック時
self.text = 'ハローワールド'
def buttonReleased(self): # ボタンをリリース時
self.text= ''
buttonClicked(self):でボタンを押したときの動作を定義します。
self.textにハローワールドと入れます。
buttonReleased(self):でボタンを話したときの動作を定義します。
self.textに何も入れないと指示します。
「Widget」クラスの使い方(kvファイル)
まずWidgetsの全文を示します。
<Widgets>:
BoxLayout:
orientation: 'vertical'
size: root.size
# ラベル
Label:
id: label1
font_size: 100
text: root.text
Button:
id: button1
text: "Push"
font_size: 150
on_press: root.buttonClicked()
on_release: root.buttonReleased()
on_pressでボタンを押したときの動作を定義します。root.buttonClicked()はpyファイル(<Widgets>クラスの)のbuttonClicked()を呼び出しています。
on_releaseボタンを離したときときの動作を定義します。root.buttonReleased()はpyファイル(<Widgets>クラスの)のbuttonReleased()を呼び出しています。
実行結果
立ち上げ初期状態
「Push」ボタンを押す。
ボタンを離す。
コメント