Kivy не меняются экраны с кнопкой на панели действий - PullRequest
0 голосов
/ 27 августа 2018

Код, на который я ссылался, взят из ответа Иколима: Почему моя панель действий Kivy пропала?

Это мой код Python:

from kivy.app import App
from kivy.uix.screenmanager import ScreenManager,Screen
from kivy.properties import ObjectProperty
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
from kivy.core.window import Window

Window.clearcolor = (1,1,1,1)

Builder.load_file("designdawkalamomarunong.kv")


class Menu(BoxLayout):
    manager = ObjectProperty(None)

class Add(Screen):
    pass

class Help(Screen):
    pass

class Credits(Screen):
    pass

class Manager(ScreenManager):
    addScreen = ObjectProperty(None)
    helpScreen = ObjectProperty(None)
    creditsScreen = ObjectProperty(None)

class AntsApp(App):

    def build(self):
        return Menu()


if __name__ == '__main__':
    AntsApp().run()

А это код KIVY:

<Menu>:
    manager: screen_manager
    orientation: "vertical"
    ActionBar:
        size_hint_y: 0.1
        ActionView:
            ActionPrevious:
            ActionButton:
                text: "Add"
                on_release: app.root.current = "add"
            ActionButton:
                text:"Help"
                on_release: app.root.current = "help"
            ActionButton:
                text: "Credits"
                on_release: app.root.current = "credits"
    Manager:
        id: screen_manager

<Add>:
    text: "hello boi"

<Help>:
    text: "hello world"

<Credits>:
    text: "goodbye world lol"

<Manager>:
    id: screen_manager
    addScreen: addScreen
    helpScreen: helpScreen
     creditsScreen: creditsScreen

    Add:
        id: addScreen
        name: 'add'
        manager: screen_manager

    Help:
        id: helpScreen
        name: 'help'
        manager: screen_manager

    Credits:
        id: creditsScreen
        name: 'credits'
        manager: screen_manager

Когда я запускаю его, это вывод: Program output

Когда я нажимаю кнопки на панели действий, она ничего не возвращает. Должен ли я добавить что-нибудь еще? Заранее спасибо:)

Edit: Попробовал сделать это:

<Add>:
    Button:
        text: "hello boi"

и это сработало, но когда я попробовал это:

<Add>:
    Label:
        text: "hello boi"

это не сработало. Что мне здесь не хватает?

1 Ответ

0 голосов
/ 27 августа 2018

Проблемы

файл кв

  1. Заменить все вхождения app.root.current на root.manager.current, потому что root является виджетом BoxLayout, а не ScreenManager.
  2. На каждом экране отсутствует Label виджет до text.
  3. Когда вы создаете экземпляр виджета Button как дочерний элемент в каждом правиле класса для экрана, текст становится видимым. Но при замене виджета «Кнопка» на «Метка» текст не отображается. Причина в том, что цвет текста по умолчанию для Label - белый (rgba=1, 1, 1, 1), а цвет BoxLayout - белый. Поэтому вы не можете видеть текст. При использовании виджета «Метка» добавьте color: (0, 0, 0, 1) # black color text.
* * Пример тысяча двадцать-одина * * тысяча двадцать-дв

файл kv

#:kivy 1.11.0

<Menu>:
    manager: screen_manager
    orientation: "vertical"
    ActionBar:
        size_hint_y: 0.1
        ActionView:
            ActionPrevious:
            ActionButton:
                text: "Add"
                on_release: root.manager.current = "add"
            ActionButton:
                text:"Help"
                on_release: root.manager.current = "help"
            ActionButton:
                text: "Credits"
                on_release: root.manager.current = "credits"
    Manager:
        id: screen_manager

<Add>:
    Label:
        text: "hello boi"
        color: 0, 0, 0, 1   # black color text

<Help>:
    Label:
        text: "hello world"
        color: 0, 0, 0, 1   # black color text

<Credits>:
    Label:
        text: "goodbye world lol"
        color: 0, 0, 0, 1   # black color text

<Manager>:
    addScreen: addScreen
    helpScreen: helpScreen
    creditsScreen: creditsScreen

    Add:
        id: addScreen
        name: 'add'

    Help:
        id: helpScreen
        name: 'help'

    Credits:
        id: creditsScreen
        name: 'credits'

выход

Img01

...