python - 如何删除已删除的小部件的空白空间?
问题描述
我有一个工作正常的代码,但有一个问题。用户单击“删除”图标后,小部件正在删除,并且该小部件之后有空白空间。如何删除空白空间?我真的无法理解如何解决它。
from kivy.lang import Builder
from kivymd.app import MDApp
from kivymd.uix.list import OneLineIconListItem
from kivy.properties import StringProperty
KV = '''
<RVItem>
IconLeftWidget:
icon: 'delete'
del_id: root.del_id
on_release: app.delete(self)
Screen:
rv: rv
RecycleView:
id: rv
viewclass: 'RVItem'
do_scroll_x: False
RecycleBoxLayout:
orientation: 'vertical'
size_hint_y: None
size: self.minimum_size
default_size: None, dp(56)
default_size_hint: 1, None
'''
class RVItem(OneLineIconListItem):
del_id = StringProperty()
class MainApp(MDApp):
def build(self):
return Builder.load_string(KV)
def on_start(self):
self.root.rv.data = [{'text': str(x), 'del_id': str(x)} for x in range(10)]
def delete(self, instance):
for item in self.root.children[0].children[0].children:
if item.text == instance.del_id:
self.root.children[0].children[0].remove_widget(item)
MainApp().run()
解决方案
RecycleView
是基于它的,data
因此删除它的一个子小部件实际上不会影响该小部件的暂时消失(它会在您滚动时重新出现)。要真正从 a 中删除一个项目RecycleView
,您必须将其从data
Try modifying your delete()
method 中删除以执行此操作:
def delete(self, instance):
for item in self.root.rv.data:
if item['del_id'] == instance.del_id:
self.root.rv.data.remove(item)
return
推荐阅读
- openstack - 启动 magnum 集群时出错
- javascript - 如何在ionic3中切换div
- r - 来自数据框的加权图
- iis - ZendFramework 安全公告 ZF2018-01 是否只是 IIS 服务器的问题
- android - 无法在android中解析符号TestUtil
- angular - 在 Nrwl Nx 库中导入 Angular Material 主题
- charts - 有没有这样的图表...Q
- java - SpringBoot 将数据存储在 h2 中,但无法检索数据并在浏览器或邮递员中以 JSON 格式显示
- android - 我想对 ImageView 进行编程,使其首先缓慢旋转,然后逐渐增加旋转速度
- c# - 表达
> 谓词=空;在 where 条件(query.Where(谓词))中引发错误