簡體   English   中英

我的 RootWidget(ScreenManager) 沒有用 kivy/python 初始化我的程序

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

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