[英]My RootWidget(ScreenManager) isn't initializing my program with kivy/python
我正在編寫一個帶有 kv 腳本的 python 腳本,用於格式化。
到目前為止,我有 2 個基本屏幕。 我可以將 1 個屏幕加載到預覽中,但是當我嘗試 2 個屏幕時,事情會崩潰。
我收到此錯誤:
kivy.uix.screenmanager.ScreenManagerException: ScreenManager accepts only Screen widget.
這是我的python代碼:
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import Screen, ScreenManager
Builder.load_file("design.kv")
class Intro(Screen):
def go_settings(self):
self.manager.current = "settings"
pass
class Settings(Screen):
print("In settings")
pass
class RootWidget(ScreenManager):
pass
class MainApp(App):
def build(self):
return RootWidget()
if __name__ == "__main__":
MainApp().run()
我的 kv 代碼,標題為“design.kv”:
<Intro>:
GridLayout:
cols: 1
Label:
text: "Intro"
Button:
text: "Settings"
on_press: root.go_settings()
<Settings>:
GridLayout:
cols: 1
Label:
text: "Settings"
<RootWidget>:
Intro:
name: "intro"
Settings: #will work if I comment this line and below
name: "settings"
不知道發生了什么。 謝謝您的幫助!
好吧,我想我明白了。
我需要更改名稱
Intro
和
Settings
到
IntroScreen
和
SettingsScreen
它似乎對我有用。 從來沒有想過我給的名字會很重要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.