Как использовать класс виджета с классом экрана - PullRequest
0 голосов
/ 14 июля 2020

Я сделал kivy-приложение, в котором все делается внутри этого класса:

class MyGame (Widget):

Следовательно, мой kv-файл выглядит так

<MyGame>:
    GridLayout:
        rows: 1
        size: root.width, root.height
        canvas.before:
            Color:
                rgba: 1, 1, 1, 1
            Rectangle:
                size: self.size
        FloatLayout:
            Button:
                id: question
                font_size: 20
                size_hint: 0.77, 0.1
                pos_hint: {"x": 0.09, "y":0.85}
                on_press: root.start_round()
            SmoothButton:

Но теперь, когда моя игра почти завершена, я чувствую необходимость включить 2 экрана:

One is for the game menu (to let the user select a game mode)
The other one is for the game itself

Я попытался включить это в свой main.py

from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.lang import Builder

class MenuScreen(Screen):
    pass

class GameScreen(Screen):
    pass

class WindowManager(ScreenManager):
    pass
kv = Builder.load_file('my.kv')

class MyGame(Widget):
   ...

и мой класс наследуемый от App возвращает kv в сборке

Вот мой файл kv: WindowManager: MenuScreen: GameScreen:

<MenuScreen>:
    name: 'Menu'
    Button:
<GameScreen>:
    name: 'Game'
    <MyGame>:

Как видите, я попытался вложить MyGame (Widget) в GameScreen (Nest), но когда я запускаю свой код, открывается экран, но экран черный

Кто-нибудь знает, как я могу решить свою проблему? Это практически мой первый проект в kivy, так что мне еще предстоит изучить много основ. Спасибо

1 Ответ

0 голосов
/ 14 июля 2020
<MenuScreen>:
    name: 'Menu'
    Button:
<GameScreen>:
    name: 'Game'
    <MyGame>:

Этот синтаксис неверен, вам не нужно <> около MyGame. Я не знаю, является ли это причиной вашей проблемы.

...