user15352018
user15352018

Reputation:

How to make gallery in kivy?

I want to this gallery in kivy how to make gallery view How to add this kivy then is showing many display and carousel in gallery? How to make an image and display it on the next page Anyone can help this?

class Gallery(Screen):
        pass 

.kv

<MyTile@SmartTile>:
        size_hint_y: None
        height: "240dp"
    
<Gallery>
    ScrollView:
        MDGridLayout:
            cols: 3
            row_default_height: (self.width - self.cols*self.spacing[0]) / self.cols
            row_force_default: True
            adaptive_height: True
            padding: dp(4), dp(4)
            spacing: dp(4)
            MyTile:
                source:'*.jpg'

https://i.sstatic.net/loupw.png

Here's got problem..

[ WARN:1] global C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-vi271kac\opencv\modules\videoio\src\cap_msmf.cpp (376) `anonymous-namespace'::SourceReaderCB::OnReadSample videoio(MSMF): OnReadSample() is called with error status: -1072873821
[ WARN:1] global C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-vi271kac\opencv\modules\videoio\src\cap_msmf.cpp (388) `anonymous-namespace'::SourceReaderCB::OnReadSample videoio(MSMF): async ReadSample() call is failed with error status: -1072873821
[INFO   ] [Loader      ] using a thread pool of 2 workers
[ERROR  ] [AsyncImage  ] Not found <*.jpg>
[INFO   ] [Base        ] Start application main loop
[ WARN:0] global C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-vi271kac\opencv\modules\videoio\src\cap_msmf.cpp (438) `anonymous-namespace'::SourceReaderCB::~SourceReaderCB terminating async callback

Here's gallery but is not showing any picture in here.. Anyone can tell this code what is problem in codes?

Upvotes: 0

Views: 1057

Answers (1)

Ne1zvestnyj
Ne1zvestnyj

Reputation: 1397

I sketched an example of a gallery, I think this is what you want.

from kivymd.app import MDApp

from kivy.metrics import dp
from kivy.lang.builder import Builder
from kivy.uix.boxlayout import BoxLayout

import os

KV = """
<ImageButton@ButtonBehavior+FitImage>

<ImageManager>
    path: ""
    orientation: "vertical"
    size_hint_y: None
    height: root.height
    padding: dp(10)

    ImageButton:
        source: root.path
        
BoxLayout:
    RecycleView:
        id: rv
        key_viewclass: "viewclass"
        RecycleGridLayout:
            padding: dp(2)
            cols: 3
            default_size: None, dp(48)
            default_size_hint: 1, None
            size_hint_y: None
            height: self.minimum_height
"""


class ImageManager(BoxLayout):
    pass


class GalleryApp(MDApp):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)

        self.manager_list = []
        self.dir = os.getcwd()
        self.available_image_format = ['.png', '.jpg', '.jpeg', '.bmp']  # etc

    def build(self):
        return Builder.load_string(KV)

    def on_start(self):
        self.load_images()

    def load_images(self):
        if not self.manager_list:
            for image in os.listdir(self.dir):
                target_filename, target_file_extension = os.path.splitext(image)
                if target_file_extension in self.available_image_format:
                    path_to_image = os.path.join(self.dir, image)
                    self.manager_list.append(
                        {
                            "viewclass": "ImageManager",
                            "path": path_to_image,
                            "height": dp(200),
                        }
                    )
            self.root.ids.rv.data = self.manager_list


GalleryApp().run()

Upvotes: 0

Related Questions