python - 如何将 on_release 操作添加到 kivy 或 kivymd、python 中的列表项?
问题描述
我想使用 kivy 制作一个音乐播放器应用程序,它是 python 中的材料设计我成功地找到了 .mp3 文件并播放它们但问题是我无法找到将 OneLineListItem 绑定到任何函数的方法(例如,如果我们单击并释放列表项,我想让 python 播放那首歌)我的代码是-:
from kivy.lang import Builder
from kivymd.uix.list import OneLineListItem
from kivymd.app import MDApp
import os
helper_string = """
Screen:
BoxLayout:
orientation: "vertical"
ScrollView:
MDList:
id: scroll
"""
class MainApp(MDApp):
def build(self):
screen = Builder.load_string(helper_string)
return screen
def on_start(self):
for root, dirs, files in os.walk('C:/'):
for file in files:
if file.endswith('.mp3'):
required_file = file
the_location = os.path.abspath(required_file)
location_list = list(the_location)
song_name = list(required_file)
self.root.ids.scroll.add_widget(OneLineListItem(text=required_file))
# print(required_file)
MainApp().run()
您可以看到,在这段代码中,for 循环遍历所有文件并将它们添加到滚动视图中物品)。每个列表项都应该有它自己的歌曲名称作为文本,当我们点击标签时,它将播放名称在标签上的歌曲
如果 OneLineListItem 无法执行此 on_release 操作,那么我应该在那个地方使用什么(例如 MDFlatRectangleButton 或其他任何东西)以及我应该如何使用它来使我的音乐播放器正常工作(我的意思是功能将添加播放歌曲)
解决方案
该on_release
操作是可能的,因为OneLineListItem
继承ButtonBehavior
. 所以你只需要指定它,像这样:
self.root.ids.scroll.add_widget(OneLineListItem(text=required_file, on_release=self.play_song))
然后在你的App
,添加play_song()
方法:
def play_song(self, onelinelistitem):
print('play:', onelinelistitem.text)
当然,您将需要添加如何播放mp3
文件的逻辑,以及它在哪里。
推荐阅读
- wpf - 在 WPF 应用程序中获取 Autofac 最内部范围
- javascript - 如何动态传递道具?
- c# - 从 LiteDB 执行 LINQ 时转换为 .ToList() 时的性能问题大约。100 万条记录
- sql - 加入前与加入后选择列
- angular - Angular中的渐进式上传文件
- python - 如何在开发过程中重命名 Flask WSGI App?
- laravel - 如何在 Laravel eloquent 中使用 via 对象获取数据?
- c++ - 尝试绘制存储在数组中的矩形,但只出现一个矩形?
- jenkins-pipeline - 在 Jenkins 中使用 kubectl 应用“deployment.yaml”时出错
- swift - 当我启动我的仅 xib 项目时,会出现两个窗口