0

BoxLayout (ファイル名 qmscreens.py) に 1 画面のアプリケーションがあります。

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()に変更する必要があると思います。しかし、その後、他のエラーが発生します。だから私は完全に迷っています。あなたの助けと指示は非常に高く評価されています。前もって感謝します。QManagerQmHome

4

2 に答える 2

0

クラスのすべての出現箇所の名前を に変更qmHomeQmHomeます。多くの異なる言語の慣例により、クラスの先頭は常に大文字で始める必要があります。

小文字で名前が付けられた画面をKivyが認識しないのはバグのようです。

于 2016-02-25T11:43:31.907 に答える
0

いくつかの修正。QManager はルート ウィジェットである必要がありますが、kv ファイルに <> がありませんでした

def build(self):
    Window.clearcolor = (1,1,1,1)
    Window.size = (500, 500)
    #homeWin = qmHome()
    return QManager() # <---- :)

kv ファイルで:

<QManager>:
    qmHome:
    EditImage:
于 2016-02-25T06:01:06.727 に答える