Связывание экранов с классами GridLayout в kivy

Я создал ScreenManager и создал несколько экземпляров Screen для этого ScreenManager.

Я бы хотел, чтобы на каждом экране отображался класс GridLayout. Например, скажем, у вас есть:

class MainScreen(Screen):
   ...

class MainLayout(GridLayout):
   ...

Когда MainScreen является активным экраном, я бы хотел, чтобы отображался MainLayout.

Есть ли способ сделать это чисто в Python (т.е. без разметки)? Спасибо.

1 ответ

Решение

Есть ли способ сделать это чисто в Python (т.е. без разметки)? Спасибо.

Вам никогда не нужно использовать kivy язык (я полагаю, это то, что вы подразумеваете под разметкой), хотя настоятельно рекомендуется, где это возможно, потому что это облегчает многие вещи.

Тем не менее, чтобы действительно ответить на ваш вопрос, все, что вам нужно сделать, это добавить свой виджет сетки сетки к виджету экрана, что-то вроде

mainscreen = MainScreen()
mainlayout = MainLayout()
mainscreen.add_widget(mainlayout)

Затем, когда вы установите текущий экран в вашем диспетчере экрана как главный экран, вы должны увидеть GridLayout.

Изменить: В случае, если неясно, как правило, вы добавляете виджеты в другие виджеты. Когда вы видите пример на языке kv, как

<MyScreen>:
     GridLayout:
         ...

... в конечном итоге это переводится в нечто похожее на приведенный выше пример кода - создается экземпляр MyScreen и к нему добавляется GridLayout с помощью add_widget.

Другие вопросы по тегам