Skip to content
Advertisement

KivyMD widgets displaying at the bottom of page in MDBoxLayout

KivyMD widgets are displayed at the bottom when using MDBoxLayout. I remember two MDTextField widgets and one MDRaisedButton, but they are located at the bottom. When using Kivy without KivyMD, there is no such problem. Here is my code:

from kivymd.app import MDApp
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager

KV = """
ScreenManager:
    MDScreen:
        name: "main"
        MDBoxLayout:
            orientation: "vertical"
            MDTextField:
                hint_text: "User ID"
                hint_size: 36
                font_size: 36
            MDTextField:
                hint_text: "Message"
                hint_size: 36
                font_size: 36
            MDRaisedButton:
                text: "START"
                font_size: 36
                increment_width: 100
"""

class MainApp(MDApp):
    def build(self):
        return Builder.load_string(KV)
        
    def on_start(self):
        self.root.current = "main"

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

Result: Result of run this code

I tried to replace MDBoxLayout to BoxLayout and MDScreen to Screen, but this not helped.

Advertisement

Answer

I solved a problem. I was need to add this to MDBoxLayout:

pos_hint: {"top": 1}
adaptive_height: True

And result code is:

from kivymd.app import MDApp
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager

KV = """
ScreenManager:
    MDScreen:
        name: "main"
        MDBoxLayout:
            orientation: "vertical"
            pos_hint: {"top": 1}
            adaptive_height: True
            MDTextField:
                hint_text: "User ID"
                hint_size: 36
                font_size: 36
            MDTextField:
                hint_text: "Message"
                hint_size: 36
                font_size: 36
            MDRaisedButton:
                text: "START"
                font_size: 36
                increment_width: 100
"""

class MainApp(MDApp):
    def build(self):
        return Builder.load_string(KV)
        
    def on_start(self):
        self.root.current = "main"

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

Thanks KivyMD community in KivyMD’s Discord!

User contributions licensed under: CC BY-SA
4 People found this is helpful
Advertisement