Kivy: Назначение TaggedPanel для Screenmanager получило ошибку исключения - PullRequest
0 голосов
/ 01 мая 2020

Я создал экранный менеджер на своем python для хранения 2 экранов. 1-й экран - это обычная коробка с лейблом, с которой у меня нет проблем. Второй экран, который я создаю, представляет собой панель со вкладками, в которой есть ошибка исключения.

Вот main.py:

from kivy.app import App`
from kivy.uix.gridlayout import GridLayout
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.uix.widget import Widget
from kivy.properties import ObjectProperty
from kivy.core.window import Window
from kivy.uix.popup import Popup
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager,Screen
from kivy.uix.tabbedpanel import TabbedPanel,TabbedPanelItem


class ScreenOne(Screen):
    pass

class ScreenTwo(Screen):
    pass

class Manager(ScreenManager):
    screen_one = ObjectProperty(None)
    screen_two = ObjectProperty(None)


class MainPartListApp(App):
    def build(self):
        Window.clearcolor = (1,0,0,0.8)
        return Manager()

PartList = MainPartListApp()
PartList.run()

Вот my MainPartList.kv

<ScreenOne>:
    GridLayout:
        cols: 1
        spacing: 10
        padding: 20
        BoxLayout:
            canvas:
                Color:
                    rgba: 1,1,1,1
                Rectangle:
                    size: self.size
                    pos: self.pos
            padding: 20
            Label:
                font_size: 15
                text_size: self.size
                halign: 'left'
                valign: 'middle'
                text: "Hello World"
                color: 0,0,0,1
        BoxLayout:
            size_hint_y: .10
            GridLayout:
                orientation: 'Vertical'
                rows: 2
                BoxLayout:
                    size_hint_x: .3
                    CheckBox:
                        on_active:
                            root.manager.transition.duration= 2
                            root.manager.current= 'screen2'
                BoxLayout:
                    Label:
                        size_hint_x: .7
                        halign: 'right'
                        font_size: 12
                        text: "I accept the agreement."

<ScreenTwo>:
    Tabbedpanel:
        size: self.size
        do_default_tab: False
        #Create 1st tab
        TabbedPanelItem:
            text: 'Tab 1'
            Label:
                text: "First tab"
        #Create 2nd tab
        TabbedPanelItem:
            text: 'Tab 2'
            BoxLayout:
                Label:
                    text: 'Press button'
                Button:
                    text: 'Click it'

<Manager>:
    id: screen_manager
    screen_one: screen_one
    screen_two: screen_two

    ScreenOne:
        id: screen_one
        name: 'screen1'
        manager: screen_manager

    ScreenTwo:
        id: screen_two
        name: 'screen2'
        manager: screen_manager

Выполнение этого вызовет FactoryException ('неизвестный класс <% s>'% name) kivy.factory.FactoryException: неизвестный класс.

Ваша помощь действительно очень ценится.

...