Python kivy ラベルの表示比率を変更する方法

まくまく
まくまく
PythonのGUIアプリ作成ライブラリ kivyで作成したラベルの表示比率(大きさ)を変更してみようと思います。

まずはpyファイルとkvファイルから。

サンプルプログラム

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("size.kv")

class MyLayout(Widget):
    pass

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

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

kvファイル

#ファイル名: size.kv
<MyLayout>
    canvas.before:
        Color:
            rgba: 57/255, 147/255, 221/255, 1
        Rectangle:
            pos: self.pos
            size: self.size

    BoxLayout:
        orientation: "vertical"
        size: root.width, root.height
        padding: 20
        spacing: 20

        Label:
            id: name_label1
            text: "Python"
            font_size: 32
            pos_hint: {"center_x": 0.5}
            size_hint_y: 1
            
        TextInput:
            id: input
            multiline: False
            size_hint_y: 1

        Label:
            id: name_label3
            text: "Kivy"
            font_size: 32
            pos_hint: {"center_x": 0.5}
            size_hint_y: 1



出力


上のプログラムを実行すると、Kivyでウインドウを作成され、そこに以下のウィジェットが表示されます。

上段:ラベル(Python)
中段:テキストインプット
下段:ラベル (Kivy)

それぞれのウィジェットが均等に配置されている状態です。

size_hint_yを変更

kvファイル33行目の「size_hint_y」を1から2へ変更します。

size_hint_y: 2


y軸方向の比率が先ほどと変わったのが分かると思います。「kivy」と書かれたラベルがウインドウの半分を占めています。残りの半分のエリアに他の2つのウィジェットが配置されています。

この時のsize_hint_yは、
ラベル(Python): 1
テキストインプット: 1
ラベル(Kivy): 2
です。

この比率でウィジェットが配置されます。

X軸、Y軸両方のsize_hintを変更

kvファイル26行目の「size_hint_y」を変更します。

size_hint: (0.5, 1)

「size_hint: (0.5, 1)」のように記載することで、X軸、Y軸の両方の比率を設定することができます。


テキストインプットのX軸方向が半分になりました。

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

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