gpt4 book ai didi

python 基维 : how to use filechooser access files outside C drive

转载 作者:行者123 更新时间:2023-11-28 21:18:44 25 4
gpt4 key购买 nike

我完全是 Kivy 的初学者。

当我尝试在 kivy.uix.filechooser 上重新实现教程时模块,我只能访问我的 C: 驱动器上的文件,而不能访问其他驱动器。我试图寻找文件选择器的根位置,但无济于事。

有什么方法可以访问其他驱动器吗?

最佳答案

您需要更改 filechooser.path 值:

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder

Builder.load_string('''
<MyWidget>:
file_chooser: file_chooser
FileChooserListView:
id: file_chooser
''')

class MyWidget(BoxLayout):
def __init__(self, **kwargs):
super(MyWidget, self).__init__(**kwargs)
self.file_chooser.path = "D:\\"

class MyApp(App):
def build(self):
return MyWidget()

if __name__ == '__main__':
MyApp().run()

更高级的例子:

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
from kivy.utils import platform

Builder.load_string('''
#:import lv kivy.uix.listview
#:import la kivy.adapters.listadapter

<MyWidget>:
drives_list: drives_list
file_chooser: file_chooser
ListView:
id: drives_list
adapter:
la.ListAdapter(data=root.get_win_drives(), selection_mode='single', allow_empty_selection=False, cls=lv.ListItemButton)
FileChooserListView:
id: file_chooser
''')

class MyWidget(BoxLayout):
def __init__(self, **kwargs):
super(MyWidget, self).__init__(**kwargs)
self.drives_list.adapter.bind(on_selection_change=self.drive_selection_changed)

def get_win_drives(self):
if platform == 'win':
import win32api

drives = win32api.GetLogicalDriveStrings()
drives = drives.split('\000')[:-1]

return drives
else:
return []

def drive_selection_changed(self, *args):
selected_item = args[0].selection[0].text
self.file_chooser.path = selected_item

class MyApp(App):
def build(self):
return MyWidget()

if __name__ == '__main__':
MyApp().run()

here 中获取可用驱动器号的方法.

关于 python 基维 : how to use filechooser access files outside C drive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26028235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com