Невозможно сделать простой макет сетки с 4 кнопками в kivy

from kivy.app import App  
from kivy.uix.label import Label  
from kivy.uix.floatlayout import FloatLayout  
from kivy.uix.gridlayout import GridLayout    
class Grid(GridLayout):
    pass
class UcoeApp(App):
    def build(self):
        return Grid()
UcoeApp().run()

ucoe.KV файл выглядит следующим образом:

<Grid>:
GridLayout:
    cols:2
    row_force_default:True
    row_default_height:40

Button:
    text:"hello1"
    size_hint_x:None
    width=100
Button:
    text:"world1"


Button:
    text:"hello2"
    size_hint_x:None
    width:100
Button:
    text:"world2"

но я получаю ошибку следующим образом:
Файл «/usr/lib/python3/dist-packages/kivy/lang.py», строка 1440, в parse_level
«Недопустимые данные после объявления»)
киви.ленг.ParserException: Parser: File » / home/dimple / ucoe.кв», линия 4:

2: GridLayout:
3: cols:2

4: row_force_default:True
5: row_default_height:40
6:

Недопустимые данные после объявления
Пожалуйста, помогите, я новичок в kivy.

2 ответа

  1. Есть много ошибок в коде yr.

    • кнопка импорт
    • в.kv при ширине кнопки=100 (неправильно)
    • удалить GridLayout in .КВ не требуется.

    Ниже приведен обновленный и работающий код.

    from kivy.uix.button import Button
    from kivy.app import App  
    from kivy.uix.label import Label  
    from kivy.uix.floatlayout import FloatLayout  
    from kivy.uix.gridlayout import GridLayout    
    class Grid(GridLayout):
        pass
    class UcoeApp(App):
        def build(self):
            return Grid()
    UcoeApp().run()
    

    ucoe.KV file =>

    <Grid>:
        cols:2
        row_force_default:True
        row_default_height:40
        Button:
            text:"hello1"
            size_hint_x:None
            width:100
        Button:
            text:"world1"
        Button:
            text:"hello2"
            size_hint_x:None
            width:100
        Button:
            text:"world2"
    
  2. Редактировать, как вы считаете нужным.

    main.py

    from kivy.uix.button import Button
    from kivy.app import App  
    from kivy.uix.gridlayout import GridLayout    
    from kivy.lang import Builder
    
    
    class Grid(GridLayout):
        pass
    
    
    presentation = Builder.load_file("main.kv")
    
    class UcoeApp(App):
        def build(self):
            return Grid()
    
    
    UcoeApp().run()
    

    главный.киловольт

    <Grid@GridLayout>:
        cols:2
        Button:
            text:"hello1"
            size: self.size
        Button:
            text:"world1"
            size: self.size
        Button:
            text:"hello2"
            size: self.size
        Button:
            text:"world2"
            size: self.size