[英]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.