[英]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'對象沒有屬性'elogging'
我猜代碼行elogging = BooleanProperty()
應該從QManager
更改為QmHome
類。 但是后來我得到其他錯誤。 所以我完全迷路了。 非常感謝您的幫助和指導。 提前致謝。
很少修復。 QManager應該是根窗口小部件,並且您錯過了kv文件中的<>
def build(self):
Window.clearcolor = (1,1,1,1)
Window.size = (500, 500)
#homeWin = qmHome()
return QManager() # <---- :)
在kv文件中:
<QManager>:
qmHome:
EditImage:
將所有出現的類qmHome
重命名為QmHome
。 按照許多不同語言的約定,課程開始時應始終以大寫字母開頭。
Kivy無法識別以小寫字母命名的屏幕似乎是一個錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.