2 votes

Comment puis-je activer la fonctionnalité de défilement lorsque cela est nécessaire ?

Je suis en train de construire une application avec Kivy qui aura un certain nombre d'éléments déroulants. Lorsque je fais un accordéon plus grand que l'écran, je reçois le message "Pas assez d'espace pour afficher tous les enfants". Puisque j'ai trop d'enfants à afficher sur une page et que je ne veux pas les afficher tous en même temps, comment puis-je dire au programme de ne pas s'en préoccuper et d'activer simplement une fonctionnalité de défilement ? Je n'arrive pas à trouver sur Internet d'exemples de grands accordéons dotés d'une fonction de défilement. Toutes les solutions que j'ai trouvées sur Internet disent simplement "Faites plus d'espace".

Le code ci-dessous crée 30 éléments en accordéon qui ne tiennent pas sur l'écran et produit l'erreur. Merci d'avance et si vous avez besoin de plus de précisions, je me ferai un plaisir de vous les fournir.

from kivy.uix.accordion import Accordion, AccordionItem
from kivy.uix.label import Label
from kivy.app import App

class AccordionApp(App):
    def build(self):
        root = Accordion(orientation='vertical')
        for x in range(30):
            item = AccordionItem(title='Title %d' % x)
            item.add_widget(Label(text='Very big content\n' * 10))
            root.add_widget(item)
        return root

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

3voto

John Anderson Points 5621

Vous pouvez ajuster la taille de la Accordion si vous pouvez calculer la taille nécessaire, et mettre le montant de l'aide financière à disposition. Accordion dans un ScrollView . Par exemple :

from kivy.core.window import Window
from kivy.uix.accordion import Accordion, AccordionItem
from kivy.uix.label import Label
from kivy.app import App
from kivy.uix.scrollview import ScrollView

class AccordionApp(App):
    def build(self):
        root = ScrollView(size_hint=(None, 1), size=(Window.width, Window.height))
        acc = Accordion(size_hint_x=None)
        width_calc = 200     # guess at width needed for one open item content
        root.add_widget(acc)
        for x in range(30):
            item = AccordionItem(title='Title %d' % x)
            item.add_widget(Label(text='Very big content\n' * 10))
            acc.add_widget(item)
            width_calc += item.min_space    # add minimum width for an item
        acc.width = width_calc              # set Accordion width
        return root

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X