我从 kivy 开始,尝试编写一些简单的小代码来跟随视频,但我已经遇到了他没有的错误。我有以下代码...
my_tours.kv
<MyTours>:
Button:
text:
"Planned trips"
on_release:
app.change_screen("settings")
设置.kv
<Settings>:
Button:
text:
"Settings"
main.kv
#:include kv/my_tours.kv
#:include kv/settings.kv
GridLayout:
cols: 1
ScreenManager:
id: screen_manager
MyTours:
name: "my_tours"
id: my_tours
Settings:
name: "settings"
id: settings
main.py
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import Screen
class MyTours(Screen):
pass
class Settings(Screen):
pass
gui = Builder.load_file("main.kv")
class MainApp(App):
def build(self):
return gui
def change_screen(self, screen_name):
# Get the screen manager from the kv file
screen_manager = self.root.ids["screen_manager"]
screen_manager.current = screen_name
MainApp().run()
如果我仅将 MyTours 屏幕包含在 main.kv 文件中,则一切正常。由于某些原因,“设置”屏幕无法单独使用或与 MyTours 一起使用。也许我忽略了一些东西,但我找不到两个屏幕的文件或代码之间的差异。错误是
kivy.uix.screenmanager.ScreenManagerException: ScreenManager accepts only Screen widget.
我在这里做错了什么?
问题是
Settings
是kivy.uix.settings
中定义的众所周知的类。这就是您的 kv
中使用的类。尝试将班级名称更改为 Settings
以外的名称。