Kivy AnchorLayout が効かない時はサイズを指定すると良い

今回も Kivy ネタです。

下記のようなコードで(コメントアウトは除き) で右寄せが効かずちょいハマりました。

Stack Overflow にスレがあり、CSS のブロックエレメント/インラインエレメント のような感じでMDLabel の幅が max に設定されてしまうようです。

コメントアウトを解除すると無事に右寄せが機能しました。

Label を MDLabel にすると別のスタイルが有効になるようで文字が見切れてしまいます。その場合は size を texture_size から変更する必要があるようです。ここは追求していません。

from kivy.lang import Builder
from kivymd.app import MDApp

KV = '''
MDScreen:
    MDBoxLayout:
        orientation: 'vertical'
        
        AnchorLayout:
            # size_hint_x: 1
            anchor_x: 'right'
            anchor_y: 'center'
    
            Label:
                text: 'menu-'

                # この2行を追加すれば OK
                # size_hint: (None, None)
                # size: self.texture_size
                max_lines: 1                    
                padding: (dp(16), dp(0))
'''

class MainApp(MDApp):
    def build(self):
        self.theme_cls.theme_style = 'Dark'  # or 'Light'
        return Builder.load_string(KV)
    

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

参考

python – Kivy AnchorLayout .Kv file – Stack Overflow