python - 带有预览的 MDFileManager 的错误消息
问题描述
我尝试在 Kivy 中运行准备好的代码引用 MDFileManager 组件: https ://kivymd.readthedocs.io/en/latest/components/file-manager/index.html
但是,由于此行“preview=True”,我收到一条错误消息
line 36, in __init__preview=True,
因为当我删除它时,我可以运行代码而不会出现任何错误。但这个结果对我来说还不够。我需要将路径中的所有图像显示为列表。
from kivy.core.window import Window
from kivy.lang import Builder
from kivymd.app import MDApp
from kivymd.uix.filemanager import MDFileManager
from kivymd.toast import toast
KV = '''
BoxLayout:
orientation: 'vertical'
MDToolbar:
title: "MDFileManager"
left_action_items: [['menu', lambda x: None]]
elevation: 10
FloatLayout:
MDRoundFlatIconButton:
text: "Open manager"
icon: "folder"
pos_hint: {'center_x': .5, 'center_y': .6}
on_release: app.file_manager_open()
'''
class Example(MDApp):
def __init__(self, **kwargs):
super().__init__(**kwargs)
Window.bind(on_keyboard=self.events)
self.manager_open = False
self.file_manager = MDFileManager(
exit_manager=self.exit_manager,
select_path=self.select_path,
preview=True,
)
def build(self):
return Builder.load_string(KV)
def file_manager_open(self):
self.file_manager.show('/') # output manager to the screen
self.manager_open = True
def select_path(self, path):
'''It will be called when you click on the file name
or the catalog selection button.
:type path: str;
:param path: path to the selected directory or file;
'''
self.exit_manager()
toast(path)
def exit_manager(self, *args):
'''Called when the user reaches the root of the directory tree.'''
self.manager_open = False
self.file_manager.close()
def events(self, instance, keyboard, keycode, text, modifiers):
'''Called when buttons are pressed on the mobile device.'''
if keyboard in (1001, 27):
if self.manager_open:
self.file_manager.back()
return True
Example().run()
解决方案
消除此错误的一种方法是更新到 kivy 2.0。另一种方法是将preview
移入kv
:
BoxLayout:
orientation: 'vertical'
MDToolbar:
title: "MDFileManager"
left_action_items: [['menu', lambda x: None]]
elevation: 10
FloatLayout:
MDRoundFlatIconButton:
text: "Open manager"
icon: "folder"
pos_hint: {'center_x': .5, 'center_y': .6}
on_release: app.file_manager_open()
<MDFileManager>:
preview: True
并将其从 python 中删除:
class Example(MDApp):
def __init__(self, **kwargs):
super().__init__(**kwargs)
Window.bind(on_keyboard=self.events)
self.manager_open = False
self.file_manager = MDFileManager(
exit_manager=self.exit_manager,
select_path=self.select_path
)
推荐阅读
- android - Android 密码接收器停止工作?
- python - plt.pcolormesh() 函数如何在 python 中工作
- robotframework - Robot Framework ImapLibrary 删除所有电子邮件不工作
- c# - 工厂模式的含义
- ios - 活动指示器动态改变颜色ios swift
- android - webview 视频事件“onShowCustomView”正在全屏触发,但是当我返回小屏幕时,没有监听器工作
- rsync - Rsync 排除正确的语法
- laravel - Eloquent 的 "with" 不会为一种关系返回任何东西,但会为另一种关系返回任何东西
- python - 需要从python中的大型数据集中排除特定记录
- apache-kafka - Kafka ACL:通配符(*)后缀主题名支持