kivy - 概括 KivyMD 图像列表示例
问题描述
https://kivymd.readthedocs.io/en/latest/components/image-list/#smarttilewithstar
您如何概括 kiymd doc image-list 示例,以便图像显示逻辑在 kv 文件之外?
这是我的尝试,但它仅在第一行显示所有图像(并且将左侧的第一张图像留空)。谢谢。
from kivymd.app import MDApp
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivymd.uix.imagelist import SmartTile
from kivymd.uix.gridlayout import MDGridLayout
img = ["00.jpg", "03.jpg", "13.jpg", "15.jpg", "24.jpg", "28.jpg", "29.jpg", "33.jpg", "34.jpg"]
Builder.load_string('''
<MyTile@SmartTile>
size_hint_y: None
height: "240dp"
<CatScreen>:
ScrollView:
id: scroll
MDGridLayout:
id: grid
cols: 3
adaptive_height: True
padding: dp(4), dp(4)
spacing: dp(4)
MyTile:
''')
class CatScreen(Screen):
def __init__(self, **kwargs):
super().__init__(**kwargs)
def display_image(self):
for im in img:
self.ids.grid.add_widget(SmartTile(source = im))
return self
class CatApp(MDApp):
def __init__(self, **kwargs):
super().__init__(**kwargs)
def build(self):
self.cs = CatScreen()
return self.cs.display_image()
CatApp().run()
解决方案
import os
from kivy.factory import Factory as F
from kivy.lang import Builder
from kivymd.app import MDApp
from kivy.uix.screenmanager import Screen
from kivymd.uix.imagelist import SmartTile
######################################
# this part of the code is to take images from my folder
img = []
PATH = "/root/Pictures" # source folder
for i in os.listdir(PATH):
if ".png" in i:
img.append(PATH + "/" + i)
######################################
Builder.load_string('''
<MyTile@SmartTile>:
size_hint_y: None
height: "240dp"
<CatScreen>:
ScrollView:
id: scroll
MDGridLayout:
id: grid
cols: 3
adaptive_height: True
padding: dp(4), dp(4)
spacing: dp(4)
MyTile:
''')
class CatScreen(Screen):
def __init__(self, **kwargs):
super().__init__(**kwargs)
def display_image(self):
for im in img:
self.ids.grid.add_widget(F.MyTile(source=im))
return self
class CatApp(MDApp):
def __init__(self, **kwargs):
super().__init__(**kwargs)
def build(self):
self.cs = CatScreen()
return self.cs.display_image()
CatApp().run()
推荐阅读
- three.js - 如何在 Three.js 中为对象渲染淡入淡出的动画?
- c# - 避免在 ASP.NET Core Program.cs 中使用静态值
- php - AJAX 使用 PHP 自动填充
- flutter - 颤振滞后导航
- react-native - 怎么做
使用 HERE API 跟随 react-native-maps 中的道路 - mysql - SQL 中 Python 中的舍入时间
- performance - 以下哪一项更好?
- java - Android - 存储对象的最佳存储方法(数据库或 json/内部存储)
- javascript - 无法使用 node.js Vue 客户端将数据发布到我的 postgresql 数据库
- java - 试图将 solr 服务器包含到我的 java 项目中并启动它