Start_python’s diary

ふたり暮らし

アラフィフ夫婦のフリーランスプラン

Kivy ラベルとボタンの境界線を手動で移動させる(Python Kivyの取説・使い方 第15回)

ラベルとボタンの境界線を手動で移動させる方法

Splitter(スプリッター)ウィジェットを使います。境界をドラッグすることでサイズが変更できます。

f:id:Start_python:20191225161814g:plain

プログラムのコード

# フル画面を解除して画面の幅と高さを設定
from kivy.config import Config
Config.set('graphics', 'fullscreen', 0)
Config.set('graphics', 'width', 320)
Config.set('graphics', 'height', 568)
Config.set('graphics', 'resizable', 0)

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout


class MainScreen(BoxLayout):
    pass


class TestApp(App):
    def build(self):
        self.title = 'テスト'
        return MainScreen()

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

kvファイル(test.kv)

<MainScreen>:
    BoxLayout:
        orientation: 'vertical'

        Splitter:
            strip_size: 5
            min_size: self.parent.height * 0.05
            max_size: self.parent.height * 0.95
            sizable_from: 'bottom'

            Label:
                text: 'Label'

        Button:
            text: 'Botton'

解説

Splitterウィジェットは真ん中の細い境界線です。このウィジェットの子として新しいウィジェットを追加します。今回はラベルを作ります。スプリッターを移動することでラベルのサイズが変更されます。

strip_size: 5

境界線のサイズ(太さ)です。

sizable_from: 'bottom'

子のウィジェット(ラベル)のどちら側に境界線を置くか指定します。今回は下です。

 

Splitter(スプリッター)を使わずにボタンを押すとサイズが変更するバージョンも作ってみました。

f:id:Start_python:20191225163803g:plain

プログラムのコード

# フル画面を解除して画面の幅と高さを設定
from kivy.config import Config
Config.set('graphics', 'fullscreen', 0)
Config.set('graphics', 'width', 320)
Config.set('graphics', 'height', 568)
Config.set('graphics', 'resizable', 0)

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout


class MainScreen(BoxLayout):

    def on_label(self, **kwargs):
        self.ids.button2.size_hint_y = 0.1

    def on_button(self, **kwargs):
        self.ids.button2.size_hint_y = 10


class TestApp(App):
    def build(self):
        self.title = 'テスト'
        return MainScreen()

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

kvファイル(test.kv)

<MainScreen>:
    BoxLayout:
        orientation: 'vertical'

        Button:
            id: button1
            background_color: 0,0,0,1
            text: 'Label'
            on_release: root.on_label()

        Button:
            id: button2
            size_hint_y: 0.1
            text: 'Botton'
            on_release: root.on_button()

解説

上の部分は「ラベル」に見せかけていますが「ボタン」です。(バックを黒色にして「Label」と表示しているボタンです)

ボタンを押したときに下のボタンをサイズを変更しています。ボタン1とボタン2の比率が「1:0.1」と「1:10」です。(「1:0.1」は「10:1」と同じです)

こちらは今後も使い道がなさそうな気もします。

 

まとめ

最近ずっとKivyを扱ってきましたが今回でとりあえず終了にします。基本的なことはできたと思いますので、これでwindows用にアプリが作れそうです。新しいことがやりたくなったらそのときに続きを書くかもしれません。

 

次回からはgifファイルについて詳しく勉強していきたいと思います。

 

 

保存ファイル

lesson72.py

lesson73.py

lesson74.py

test.kv

 

 

文責:Luke