簡體   English   中英

使用.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'對象沒有屬性'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.

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