使用 .kv 文件从 kivy BoxLayout 到 ScreenManager
from kivy BoxLayout to ScreenManager using .kv file
我有一个在 BoxLayout 中有 1 个屏幕的应用程序(文件名 qmscreens.py)。
from kivy.app import App
from kivy.core.window import Window
class qmHome(BoxLayout):
pass
class qmscreensApp(App):
def build(self):
Window.clearcolor = (1,1,1,1)
Window.size = (500, 500)
homeWin = qmHome()
return homeWin
qmscreensApp().run()
下面的示例按照建议实施了更改。
from kivy.app import App
from kivy.core.window import Window
from kivy.uix.screenmanager import ScreenManager, Screen
class EditImage(Screen):
pass
class QmHome(Screen):
pass
class QManager(ScreenManager):
elogging = BooleanProperty()
elogging = True
# and a lot of other python code here below
class qmscreensApp(App):
def build(self):
Window.clearcolor = (1,1,1,1)
Window.size = (500, 500)
homeWin = QManager()
return homeWin
qmscreensApp().run()
和以下 qmscreens.kv 文件:
QManager:
QmHome:
EditImage:
<QmHome>:
name: 'home'
Button:
on_press: app.root.current = 'edit'
text: 'to edit screen'
font_size: 50
<EditImage>:
name: 'edit'
Button:
on_release: app.root.current = 'home'
text: 'back to the home screen'
font_size: 50
CheckBox:
id: _evlogg_cb
active: root.elogging
上面的例子给出了错误信息:
AttributeError: 'QmHome' object has no attribute 'elogging'
我想代码行 elogging = BooleanProperty()
应该从 QManager
更改为 QmHome
class。但后来我得到了其他错误。所以我完全迷路了。非常感谢您的帮助和指导。
提前致谢。
几乎没有修复。 QManager 应该是根小部件,您在 kv 文件中错过了一个 <>
def build(self):
Window.clearcolor = (1,1,1,1)
Window.size = (500, 500)
#homeWin = qmHome()
return QManager() # <---- :)
在kv文件中:
<QManager>:
qmHome:
EditImage:
将所有出现的 class qmHome
重命名为 QmHome
。根据许多不同语言的约定,class 的开头应始终以大写字母开头。
Kivy 无法识别以小写字母命名的屏幕似乎是一个错误。
我有一个在 BoxLayout 中有 1 个屏幕的应用程序(文件名 qmscreens.py)。
from kivy.app import App
from kivy.core.window import Window
class qmHome(BoxLayout):
pass
class qmscreensApp(App):
def build(self):
Window.clearcolor = (1,1,1,1)
Window.size = (500, 500)
homeWin = qmHome()
return homeWin
qmscreensApp().run()
下面的示例按照建议实施了更改。
from kivy.app import App
from kivy.core.window import Window
from kivy.uix.screenmanager import ScreenManager, Screen
class EditImage(Screen):
pass
class QmHome(Screen):
pass
class QManager(ScreenManager):
elogging = BooleanProperty()
elogging = True
# and a lot of other python code here below
class qmscreensApp(App):
def build(self):
Window.clearcolor = (1,1,1,1)
Window.size = (500, 500)
homeWin = QManager()
return homeWin
qmscreensApp().run()
和以下 qmscreens.kv 文件:
QManager:
QmHome:
EditImage:
<QmHome>:
name: 'home'
Button:
on_press: app.root.current = 'edit'
text: 'to edit screen'
font_size: 50
<EditImage>:
name: 'edit'
Button:
on_release: app.root.current = 'home'
text: 'back to the home screen'
font_size: 50
CheckBox:
id: _evlogg_cb
active: root.elogging
上面的例子给出了错误信息:
AttributeError: 'QmHome' object has no attribute 'elogging'
我想代码行 elogging = BooleanProperty()
应该从 QManager
更改为 QmHome
class。但后来我得到了其他错误。所以我完全迷路了。非常感谢您的帮助和指导。
提前致谢。
几乎没有修复。 QManager 应该是根小部件,您在 kv 文件中错过了一个 <>
def build(self):
Window.clearcolor = (1,1,1,1)
Window.size = (500, 500)
#homeWin = qmHome()
return QManager() # <---- :)
在kv文件中:
<QManager>:
qmHome:
EditImage:
将所有出现的 class qmHome
重命名为 QmHome
。根据许多不同语言的约定,class 的开头应始终以大写字母开头。
Kivy 无法识别以小写字母命名的屏幕似乎是一个错误。