Search
 
SCRIPT & CODE EXAMPLE
 

PYTHON

Kivy Python ListView Scrollview with Toggle on off

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.recycleview import RecycleView
from kivy.uix.recycleview.views import RecycleDataViewBehavior
from kivy.uix.label import Label
from kivy.properties import BooleanProperty
from kivy.uix.recycleboxlayout import RecycleBoxLayout
from kivy.uix.recyclegridlayout import RecycleGridLayout
from kivy.uix.behaviors import FocusBehavior
from kivy.uix.recycleview.layout import LayoutSelectionBehavior

Builder.load_string('''
<SelectableLabel>:
    # Draw a background to indicate selection
    canvas.before:
        Color:
            rgba: (.0, 0.9, .1, .3) if self.selected else (0, 0, 0, 1)
        Rectangle:
            pos: self.pos
            size: self.size
<RV>:
    viewclass: 'SelectableLabel'
    SelectableRecycleGridLayout:
        default_size: None, dp(56)
        default_size_hint: 1, None
        size_hint_y: None
        height: self.minimum_height
        orientation: 'vertical'
        multiselect: True
        touch_multiselect: True
        cols: 3
''')


items = [0, "apple", "dog", 1, "banana", "cat", 2, "pear", "rat", 3,  "pineapple", "bat"]

class SelectableRecycleGridLayout(FocusBehavior, LayoutSelectionBehavior,
                                RecycleGridLayout):
    ''' Adds selection and focus behaviour to the view. '''


class SelectableLabel(RecycleDataViewBehavior, Label):
    ''' Add selection support to the Label '''
    index = None
    selected = BooleanProperty(False)
    selectable = BooleanProperty(True)

    def refresh_view_attrs(self, rv, index, data):
        ''' Catch and handle the view changes '''
        self.index = index
        return super(SelectableLabel, self).refresh_view_attrs(
            rv, index, data)

    def on_touch_down(self, touch):
        ''' Add selection on touch down '''
        if super(SelectableLabel, self).on_touch_down(touch):
            return True
        if self.collide_point(*touch.pos) and self.selectable:
            return self.parent.select_with_touch(self.index, touch)

    def apply_selection(self, rv, index, is_selected):
        ''' Respond to the selection of items in the view. '''
        self.selected = is_selected
        if is_selected:
            print("selection changed to {0}".format(rv.data[index]))
        else:
            print("selection removed for {0}".format(rv.data[index]))


class RV(RecycleView):
    def __init__(self, **kwargs):
        super(RV, self).__init__(**kwargs)
        self.data = [{'text': str(x)} for x in items]


class TestApp(App):
    def build(self):
        return RV()

if __name__ == '__main__':
    TestApp().run()
Comment

PREVIOUS NEXT
Code Example
Python :: brute force string matching algorithm in python 
Python :: kdeplot python 
Python :: how to give float till 5 decimal places 
Python :: creating a python virtual environment 
Python :: python remove a character from a string 
Python :: continue in python 
Python :: how to serach for multiple attributes in xpath selenium python 
Python :: dockerfile to run python script 
Python :: from django.core.management import execute_from_command_line ImportError: No module named django.core.management 
Python :: list to dictionary 
Python :: recursive factorial python 
Python :: matrix rotation in python 
Python :: check space in string python 
Python :: move object towards coordinate slowly pygame 
Python :: add row to dataframe with index 
Python :: python split string with a seperator 
Python :: python how to convert a list of floats to a list of strings 
Python :: find the place of element in list python 
Python :: how to merge dictionaries in python 
Python :: test django migrations without applying them 
Python :: difference between set and list in python 
Python :: %s in python 
Python :: Add two numbers as a linked list 
Python :: Python 3 program to find factorial of given number 
Python :: merge two lists python 
Python :: python regex match until first occurrence 
Python :: import library to stop warnings in jupyter 
Python :: for char in string python 
Python :: kmp algorithm 
Python :: how to add one to a variable in python 
ADD CONTENT
Topic
Content
Source link
Name
2+3 =