Kivy ScreenManager:尝试添加第二个窗口后,应用程序停止运行

问题描述

我正在为自己的论文构建一个应用程序,到目前为止,它仅使用一个窗口就可以很好地运行。现在我正在尝试添加其他窗口,例如说明。我一直在关注Screen Manager的文档和一些应用示例,并尝试添加第二个窗口。但是以某种方式无法识别我的kv.file中的ScreenManager类。也许你可以帮忙,我不确定我缺少什么。

主要py: Peenomat.py

import kivy
# -*- coding: iso-8859-1 -*-
from kivy.app import App

from kivy.uix.button import Label
from kivy.uix.widget import Widget
from kivy.uix.textinput import TextInput
from kivy.lang import Builder
from kivy.uix.anchorlayout import AnchorLayout
from kivy.core.text import LabelBase
from kivy.uix.screenmanager import ScreenManager,Screen
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import BooleanProperty
from kivy.properties import ObjectProperty

#additional .kv files used to speciffy layout and functions of peenomat.kv

Builder.load_file('Header.kv')
Builder.load_file('Statusbar.kv')
Builder.load_file('Inputparameters.kv')
Builder.load_file('Outputparameters.kv')

pm = Builder.load_file('peenomat.kv')


#Layout
"""
class Peenomat(AnchorLayout):
    pass
"""
class Peenomat(Screen):
    pass

class Instruction(Screen):
    pass

class WindowManager(ScreenManager):
    pass

#App
class PeenomatApp(App):

    def build(self):
        return pm

if __name__=="__main__":

    PeenomatApp().run()

和最小化的.kv文件 peenomat.kv

WindowManager:
    Peenomat:
    Instruction:

<Peenomat>
    name: "peenomat"

    AnchorLayout:
        anchor_x: 'left'
        anchor_y: 'bottom'
        GridLayout:
            cols: 1
                           
            Header:
                id: 
                size_hint: 


            InputParameters:
                id:
                size_hint: 

            StatusBar:
                id:
                size_hint: 
              
            OutputParameters:
                id:_
                size_hint: 

<Instruction>:
    name: "instruction"

    Button:
        text: "Verstanden!"
        on_release:
            app.root.current = "main"
            root.manager.transition.direction = "right"

因此,就像我说的那样,应用程序在添加Screen和ScreenManager类之前可以工作,并且出现错误:

 Traceback (most recent call last):
   File "C:/Users/schum/Dokumente/TUD/Masterthesis/Peenomat.py",line 21,in <module>
     pm = Builder.load_file('peenomat.kv')
   File "C:\Users\schum\Dokumente\TUD\Masterthesis\venv\lib\site-packages\kivy\lang\builder.py",line 301,in load_file
     return self.load_string(data,**kwargs)
   File "C:\Users\schum\Dokumente\TUD\Masterthesis\venv\lib\site-packages\kivy\lang\builder.py",line 399,in load_string
     widget = Factory.get(parser.root.name)(__no_builder=True)
   File "C:\Users\schum\Dokumente\TUD\Masterthesis\venv\lib\site-packages\kivy\factory.py",line 131,in __getattr__
     raise FactoryException('Unknown class <%s>' % name)
 kivy.factory.FactoryException: Unknown class <WindowManager>

尽管他们有相同的名字。希望你能帮助我!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)