0

我目前正在用 kivy 构建一个移动应用程序。在我的一个屏幕中,我试图包含一个 MDExpansionPanel,尽管我尝试了很多不同的代码,并在网上搜索了解决方案,但要么我收到错误,要么只是扩展面板没有在我的屏幕中呈现。我正在使用 ScreenManager,因为我有 5 个屏幕,并且有可能增加这样的数量。

相关的 Python 代码如下:

from kivy.app import App
from kivy.properties import ObjectProperty
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.screenmanager import ScreenManager, Screen
from kivymd.app import MDApp
from kivymd.theming import ThemeManager
from kivymd.toast import toast
from kivymd.uix.picker import MDDatePicker, MDTimePicker
from kivymd.uix.expansionpanel import MDExpansionPanel 
from kivymd.uix.boxlayout import MDBoxLayout

class LoginWindow(Screen):
    pass

class CreateAccountWindow(Screen):
    pass

class MainWindow(Screen):
    pass

class TravelManagerWindow(Screen):
    pass


class IngActivWindow(Screen):
    panel_container = ObjectProperty(None)


    def on_pre_enter(self, *args):
        self.add_panels()

    def show_timepicker(self):
        picker = MDTimePicker()
        picker.bind(time=self.got_time)
        picker.open()

    def got_time(self, picker_widget, time):
        self.text = str(time.hour) + ":" + str(time.minute)
        self.focus = False
        # selectedTime= self.text
        print(self.text)
        self.ids.tiempoActiv.text = self.text

    def add_panels(self):
        for i in range(5):
            IngActivWindow.ids.panel_container.add_widget(
                MDExpansionPanel(
                    icon="actividades.png",
                    content=MyContent(),
                    panel_cls=MDExpansionPanelOneLine(
                        text="Text",
                    )
                )
            )

class MyContent(MDBoxLayout):
    pass


class WindowManager(ScreenManager):

    ScreenManager().add_widget(LoginWindow(name='login'))
    ScreenManager().add_widget(CreateAccountWindow(name='create'))
    ScreenManager().add_widget(MainWindow(name='main'))
    ScreenManager().add_widget(IngActivWindow(name='ingActiv'))
    ScreenManager().add_widget(TravelManagerWindow(name='travelManager'))


class powerApp1(MDApp):

    def build(self):
        self.theme_cls.primary_palette = "Teal"
        return WindowManager()

if __name__ == "__main__":
    powerApp1().run()

相关的 kv 代码如下:(我在背景上有一个图像,在 MDBoxLayout 之前有一个操作栏,我试图在其中添加扩展面板)

<WindowManager>:
    LoginWindow:
    CreateAccountWindow:
    MainWindow:
    IngActivWindow:
    TravelManagerWindow:


<IngActivWindow>:
name: 'ingActiv'
panel_container: panel_container

FloatLayout:
    cols:1

    canvas.before:
        Rectangle:
            pos: self.pos
            size: self.size
            source: 'ingActiv_background.png'

    ActionBar:
        pos_hint: {'top':1}
        ActionView:
            use_separator: True
            ActionPrevious:
                title: '---------'
                with_previous: False

            ActionButton:

                icon: 'homeIcon.png'
                on_press:
                    root.manager.current = 'main'
                    root.manager.transition.direction =  'right'

            ActionGroup:
                text: 'Gastos de Viaje'
                mode: 'spinner'
                size_hint:(None,None)
                size: root.width/5,root.height/12

                ActionButton:
                    text: 'Solicitar'
                    on_release:
                        root.manager.current = 'solicitud'
                        root.manager.transition.direction =  'left'

                ActionButton:
                    text: 'Comprobar'
                    on_release:
                        root.manager.current = 'comprobar'
                        root.manager.transition.direction =  'left'

            ActionGroup:
                text: 'Opciones'
                mode: 'spinner'
                size_hint:(None,None)
                size: root.width/5,root.height/12

                ActionButton:
                    text: 'Ingresar Actividad'
                    on_release:
                        root.manager.current = 'ingActiv'
                        root.manager.transition.direction =  'left'

                ActionButton:
                    text: 'Enviar Reporte'

                ActionButton:
                    text: 'Cerrar Sesion'
                    on_release:
                        root.manager.current = 'login'
                        root.manager.transition.direction = 'down'

    MDBoxLayout:
        cols:1
        size_hint: 1,0.6
        pos_hint: {"center_x": 0.5, "center_y": 0.5}

        ScrollView:
            GridLayout:
                id: panel_container
                cols: 1
                pos_hint: {"center_x": 0.5, "center_y": 0.5}

<MyContent>:
    size_hint: 1, None
    height: self.minimum_height
    orientation: 'horizontal'
    Button:
        size_hint: None, None

非常感谢您的支持,祝您有美好的一天。

4

0 回答 0