【问题标题】:How to use Widget Class with Screen class如何将 Widget 类与 Screen 类一起使用
【发布时间】:2020-07-14 00:08:14
【问题描述】:

我制作了一个 kivy 应用程序,所有内容都在这个类中完成:

类 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 中的第一个项目,所以我还有很多基础知识要学。谢谢

【问题讨论】:

    标签: python kivy kivy-language


    【解决方案1】:
    <MenuScreen>:
        name: 'Menu'
        Button:
    <GameScreen>:
        name: 'Game'
        <MyGame>:
    

    这个语法是错误的,你不想在MyGame 周围出现&lt;&gt;。我不知道这是否是您的问题的原因。

    【讨论】:

      猜你喜欢
      • 2021-07-10
      • 2021-02-13
      • 2010-12-09
      • 2017-06-19
      • 1970-01-01
      • 1970-01-01
      • 2017-06-12
      • 2021-08-21
      相关资源
      最近更新 更多