[英]Python kivy: how to use filechooser access files outside C drive
我是Kivy的初學者。
當我嘗試在kivy.uix.filechooser模塊上重新實現教程時,我只能訪問C:驅動器上的文件,而不能訪問其他驅動器。 我試圖尋找filechoser的根源,但無濟於事。
有什么方法可以訪問其他驅動器?
您需要更改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()
從此處獲取可用驅動器號的食譜。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.