按下按钮时将项目添加到回收视图

问题描述

好的,所以我正在尝试制作一个带有名称和间隔的间隔计时器,然后当您单击“添加间隔”时,它会在“工具栏”下方添加一个带有名称和间隔的标签。我尝试了几件事,但不太了解 recycleview,所以如果有人能解释一下我将如何进行编程,因为我不太了解 kivy。

Python 代码

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.graphics import Rectangle
from kivy.graphics import Color
from kivy.uix.button import Button
from kivy.properties import ObjectProperty
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.screenmanager import ScreenManager,Screen
from kivy.uix.gridlayout import GridLayout
from kivy.uix.popup import Popup
from kivy.config import Config
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.behaviors import FocusBehavior
from kivy.uix.recycleview.layout import LayoutSelectionBehavior


class IntervalClass(FloatLayout,RecycleDataViewBehavior,Label):
    interval_name = ObjectProperty()
    interval_time = ObjectProperty()

    def __init__(self,**kwargs):
        super(IntervalClass,self).__init__(**kwargs)

    def submit_interval(self):
        # This makes a new label with name and time
    
    def edit_interval(self):
        pass

    def del_inteval(self):
        pass

class IntervalApp(App):
    def build(self):
        return IntervalClass()

app = IntervalApp()
app.run()

KV

<IntervalClass>:
    name: name
    time: time
    interval_data: interval_data
    viewclass: "Button"

    FloatLayout:
        canvas.before:
            Color:
                rgba: 1,1,.75
            Rectangle:
                pos: self.pos
                size: self.size
        Label:
            pos_hint: {"center_x": .5,"y": .45}
            text: "Interval Timer"
            font_size: 40
            color: 0,1
        
        FloatLayout:
            size_hint: 1,.125
            pos_hint: {"x": 0,"top": .85}

            canvas.before:
                Color:
                    rgba: 1,.2
                Rectangle:
                    pos: self.pos
                    size: self.size

            
            Button:
                text: "Add Interval"
                pos_hint: {"x": .025,"top": 1}
                size_hint: .25,1
                font_size: 30
                color: 0,1
                background_color: 0,.15
                on_press: self.background_color = 0,.30
                on_press: root.submit_interval()
                on_release: self.background_color = 0,.15



            Label:
                text: "Name:"
                pos_hint: {"x": .295,"top": 1}
                size_hint: .13,.20
            
            TextInput:
                id: name
                pos_hint: {"x": .45,"top": 1}
                size_hint: .17,1
                font_size: 40
                color: 0,1
                background_color: 1,.45
                multiline: True



            Label:
                text: "Interval:"
                pos_hint: {"x": .65,.20

            
            TextInput:
                id: time
                text: ":"
                font_size: 40
                pos_hint: {"x": .8,1
                color: 0,.45
                multiline: False
                halign: "center"

        RecycleView:
            id: interval_data
            viewclass: "Label"

            RecycleBoxLayout:
                size_hint_y: None
                height: self.minimum_height
                orientation: 'vertical'

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)