Как удалить виджет с экрана и обновить просмотр ресайклера?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как удалить виджет с экрана и обновить просмотр ресайклера?

Сообщение Anonymous »

Это мой первый вопрос, я новичок в kivy...
Я хочу добавить или удалить карту из списка карт в представлении переработки.
Итак, у меня есть экран с текстовым полем и кнопкой, которую я использую, чтобы добавить карточку в RV, и на каждой карточке в списке у меня есть кнопка корзины, чтобы удалить карточку из списка. .
Теперь я могу добавить карту в список, но не знаю, как удалить карту из списка.
вот код:
.Py

Код: Выделить всё

from kivymd.app import MDApp
from kivy.lang import Builder
from kivy.uix.recycleview import RecycleView
from kivy.uix.recycleview.views import RecycleDataViewBehavior
from kivy.uix.recycleboxlayout import RecycleBoxLayout
from kivy.uix.behaviors import FocusBehavior
from kivy.uix.recycleview.layout import LayoutSelectionBehavior
from kivymd.uix.card import MDCard
from kivy.properties import StringProperty, BooleanProperty, ObjectProperty
from kivy.uix.screenmanager import Screen, ScreenManager
import Class
import pickle

try:
with open("list1.pickle","rb") as f:
list1 = pickle.load(f)
except:
list1 = []

class ScreenManager(ScreenManager):
pass

class Screen1(Screen):

def add_card(self):
text = self.ids.text_field.text
obj = Class.Reparto(text)
self.ids.text_field.text = ""
list1.append(obj)
with open('list1.pickle',"wb") as f:
pickle.dump(list1,f)
self.ids.RV_List.refreshview(list1)
return list1

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

def refreshview(self, lista):
self.data = [{'text': str(reparto.nome)} for reparto in lista]

class RVBoxLayout(FocusBehavior, LayoutSelectionBehavior, RecycleBoxLayout):
pass

class CardView(MDCard, RecycleDataViewBehavior):

text= StringProperty()

def remove_card(self):
for item in list1:
if item.nome == self.ids.Label.text:
list1.remove(item)
MDApp.get_running_app().root.ids.RV.refreshview(list1)

class CreaIntervento(MDApp):

def build(self):
self.theme_cls.theme_style = "Light"
return Builder.load_file("KV.kv")

if __name__ == "__main__":
CreaIntervento().run()
.Кв

Код: Выделить всё

MDBoxLayout:
orientation:'vertical'
md_bg_color: app.theme_cls.primaryColor

ScreenManager:
id:screen_manager
Screen1:


viewclass:'CardView'
RVBoxLayout:
orientation: 'vertical'
default_size_hint: 1, None
size_hint_y: None
height: self.minimum_height


style:'elevated'
size_hint_y:None
height: dp(80)
MDRelativeLayout:

MDIconButton:
id:func_icon
icon: "trash-can"
pos_hint:{'center_x':0.9,'center_y':0.5}
on_release:root.remove_card()
MDLabel:
id:Label
text: root.text
adaptive_size: True
color: "grey"
pos_hint:{'center_x':0.1,'center_y':0.5}
bold: True


name:"Aggiungi_Reparto"
text_field:text_field
rvNome:RV_List
MDBoxLayout:
orientation: 'vertical'

MDFloatLayout:
size_hint_y: None
height:dp(100)
MDTextField:
id: text_field
mode: "outlined"
pos_hint: {"center_x": .4, "center_y":.5}
size_hint_x: None
width: dp(400)

MDTextFieldHintText:
text: "Nome nuovo reparto"

MDTextFieldHelperText:

MDTextFieldMaxLengthText:
max_text_length: 30

MDButton:
style: "filled"
on_release: root.add_card()
pos_hint: {"center_x": .8, "center_y":.5}
size_hint_x: None
width: dp(100)

MDButtonText:
text: "Aggiungi"

RV:
id:RV_List

Я пытался вызвать метод из RV, но безрезультатно.

Подробнее здесь: https://stackoverflow.com/questions/787 ... ecycleview
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как удалить виджет с экрана и обновить просмотр ресайклера?
    Anonymous » » в форуме Python
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Как прокручивать экран с просмотром ресайклера без использования вложенного прокрутки?
    Anonymous » » в форуме Android
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Как добавить собственный виджет в QT Designer (не продвигать виджет)?
    Anonymous » » в форуме C++
    0 Ответы
    83 Просмотры
    Последнее сообщение Anonymous
  • Сделал виджет с GUI API в Jetpack Compose. Кнопка, заполняющая весь виджет
    Anonymous » » в форуме Android
    0 Ответы
    44 Просмотры
    Последнее сообщение Anonymous
  • Необходимо обновить предыдущее значение экрана при переходе с нового экрана – WIPER
    Anonymous » » в форуме IOS
    0 Ответы
    31 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»