簡體   English   中英

Kivy kv 文件不起作用

[英]Kivy kv file is not working

我有與此主題kv 不正確中描述的相同的問題。 當我使用 Builder 並加載 kv 文件時,我有正常工作的應用程序。 但是當我嘗試使用自動加載 kv 文件時,我只有黑屏。 有人可以解釋我為什么嗎? 感謝您的幫助。

我的代碼。 主文件

import kivy
kivy.require('1.9.1') # replace with your current kivy version !

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition


class MainScreen(Screen):
    pass


class AnotherScreen(Screen):
    pass


class ScreenManagement(ScreenManager):
    pass


class Test(App):

    def build(self):
        return ScreenManagement()

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

.kv 文件。 測試.kv

#:kivy 1.9.1

#: import FadeTransition kivy.uix.screenmanager.FadeTransition

ScreenManagement:
    transition: FadeTransition()
    MainScreen:
    AnotherScreen:

<MainScreen>:
    name: "main"
    Button:
        on_release: app.root.current = "other"
        text: "Next Screen"
        font_size: 50

<AnotherScreen>:
    name: "other"
    Button:
        on_release: app.root.current = "main"
        text: "Prev Screen"
        font_size: 50

在您的kv文件中,您將ScreenManagement定義為具有關聯屏幕的根元素。 但是在build ,您返回一個新創建的ScreenManagement對象,該對象不會定義任何子項。

解決方案:將build定義為

def build(self):
    pass

或者將kv文件中ScreenManagement的定義改為

<ScreenManagement>:
    transition: FadeTransition()
    MainScreen:
    AnotherScreen:

所以這將適用於所有新的ScreenManagement對象。

您還可以添加:

from kivy.properties import ObjectProperty

然后改變:

class ScreenManagement(ScreenManager):
    pass

對此:

class ScreenManagement(screenManager):
    mainscreen = ObjectProperty(None)
    anotherscreen = ObjectProperty(None)

然后在你的 .kv 文件中你想改變這個:

ScreenManagement:
    transition: FadeTransition()
    MainScreen:
    AnotherScreen:

對此:

<ScreenManagement>:
    transition: FadeTransition()
    mainscreen: mainscreen
    anotherscreen: anotherscreen

然后為您的 MainScreen 添加和 id,如下所示:

<MainScreen>:
    id: mainscreen

並為你做同樣的另一個屏幕。

檢查您的 Python 版本和您使用的 Pygame 版本。 我遇到了這個問題,我的問題來自 Pygame 的版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM