【问题标题】:KivyMD FileManager abilitiesKivyMD 文件管理器功能
【发布时间】:2021-11-19 01:40:56
【问题描述】:

我希望有一个按钮,允许用户(Ios 或 android)在他们的库中选择一张照片并将其保存以供以后发送。我正在使用文件管理器打开管理器。我如何具体使用文件管理器来完成此操作?:(下面的代码,请注意第二个屏幕是更大概念的一部分,而不是整个应用程序):

.py

类Sec​​ondScreen(屏幕):

 def select_path(self, path):


  self.exit_manager()
  toast(path)


  def exit_manager(self, *args):

  self.manager.dismiss()
  self.manager_open = False




  def file(self):
      path = '/'  
      file_manager = MDFileManager(
      exit_manager=self.exit_manager,  
      select_path=self.select_path, 
     )
      file_manager.show(path)
 

.kv #在标有类的屏幕下

           MDFillRoundFlatButton:
                text: 'Click here'

                font_size: 20
                on_press: root.file()

所有的格式都正确,但它所做的只是在电脑上打开文件管理器,让我浏览我的所有文件。当点击“X”退出时,会弹出一个错误,说“经理没有属性 .dismiss()”。非常感谢任何帮助:)

【问题讨论】:

    标签: python android ios kivy kivymd


    【解决方案1】:

    虽然 Kivy(MD) 的 FileManager 很好,但实际上还有一个更好的替代方案,它来自 plyer module,特别是 filechooser API。它的作用是打开设备的默认文件管理器应用程序以选择文件夹、文件或保存文件。这是一个例子:

    .py

    def open_file(self):
        path = filechooser.open_file()[0] 
        # this method returns a list with the first index
        # being the path of the file selected
        print(path)
    
    def open_file(self):
        path = filechooser.choose_dir()[0] 
        print(path)
    
    

    .kv

    MDFillRoundFlatButton:
        text: 'Open an image:'
    
        font_size: 20
        on_press: root.open_file()
    
    MDFillRoundFlatButton:
        text: 'Choose a directory:'
    
        font_size: 20
        on_press: root.choose_folder()
    
    

    有关此库的 API 的更多信息here

    注意事项:

    1. 此文件选择器在 Windows 平台上非常弱,所以如果需要,我建议使用tkinterfiledialog

    2.不是很明显它不能在 iOS 上运行吗? 它可能适用于 iOS,但只会打开一个图像选择器

    【讨论】:

    • 感谢您的帮助!我从没想过 tkinter 方法。你说的“不会在 ios 上工作”是什么意思?
    • 有两个原因: 1. Plyer 不支持 iOS 的原生文件选择器; 2. iOS 默认情况下完全禁用存储访问,只能访问图像和视频(至少我是这样认为的,我不使用 iPhone),所以很明显文件选择器不会很快进入 iOS。希望这会有所帮助!
    • 它确实有帮助,谢谢 :) 所以只是为了澄清如果我使用文件选择器,用户只能选择视频或照片?
    • 关于那个......不......,我相信plyer目前不支持这一点。我以后可能会搜索类似的东西
    • 经过一番搜索,我发现filechooser的方法确实需要*args和**kwargs,其中一个实际上是文件过滤器。所以,如果你想让你的文件选择器只查找视频和图像,你可以这样做:path = filechooser.open_file(filters=[["Music", "*mp3", "*ogg", "*aac"], ["Image", "*png", "*jpg"]])[0]。另一个注意事项是,虽然 iOS 不支持文件选择,但我阅读了 plyer 的源代码并发现它可能能够打开图像选择器,尽管我不确定并且我没有能力对其进行测试.
    猜你喜欢
    • 1970-01-01
    • 2021-02-27
    • 1970-01-01
    • 2020-08-22
    • 1970-01-01
    • 1970-01-01
    • 2021-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多