2017-02-28 18 views
5

अभी फ़ाइल चयनकर्ता डिफ़ॉल्ट स्थान के रूप में बहुत रूट खोलता है, लेकिन मैं इसे छोड़ना चाहता हूं और डिफ़ॉल्ट रूप से आंतरिक स्टोरेज (एसडीकार्ड) खोलता हूं और उपयोगकर्ता वहां से नीचे जा सकता है।Kivy - FileChooser defaul स्थान बदलें

इस

एक अब तक मेरी कोड के कतरना है वर्ग:

class LoadDialog(FloatLayout): 
    load = ObjectProperty(None) 
    cancel = ObjectProperty(None) 

केवी फ़ाइल

<LoadDialog>: 
    BoxLayout: 
     size: root.size 
     pos: root.pos 
     orientation: "vertical" 
     FileChooserListView: 
      id: filechooser 

     BoxLayout: 
      size_hint_y: None 
      height: 30 
      Button: 
       text: "Cancel" 
       on_release: root.cancel() 

      Button: 
       text: "Load" 
       on_release: root.load(filechooser.path, filechooser.selection) 

वास्तविक लोड कोड में परिभाषा:

def show_load(self): 
     content = LoadDialog(load=self.load, cancel=self.dismiss_popup) 
     self._popup = Popup(title="Load file", content=content, 
          size_hint=(0.9, 0.9)) 
     self._popup.open() 

def load(self, path, filename): 
     wimg = os.path.join(path, filename[0]) 
     self.image_source = wimg 
     self.dismiss_popup() 

तो मूल रूप से उपयोगकर्ता को एसडीकार्ड प्राप्त करने के लिए 1 निर्देशिका नहीं लेनी चाहिए, पहले से ही वहां होना चाहिए । सबसे खराब स्थिति परिदृश्य उन सभी को छोड़कर अन्य सभी फ़ोल्डरों को फ़िल्टर कर रहा है जिनमें एसडीकार्ड शब्द शामिल है।

+0

आजकल एसडी कार्ड के पथ एसडीकार्ड शब्द नहीं रखते हैं। और एसडी कार्ड आंतरिक भंडारण नहीं है। – greenapps

+0

मैंने जो देखा उससे अच्छी तरह से, एंड्रॉइड 4 में कम से कम आंतरिक स्टोरेज एसडीकार्ड है जो एक सिंबलंक है। मुझे जिस स्थान की आवश्यकता है वह मूल रूप से डीसीआईएम फ़ोल्डर – Nick

+0

का अभिभावक है जो तब एक्स्ट्रास्ट स्टोरेज डायरेक्टरी() प्राप्त होगा। – greenapps

उत्तर

6

पथ विशेषता सेट करें।

import os 

for root, dirs, files in os.walk("/"): 
    for name in dirs: 
     if name == "DCIM": 
      print(root, name) 

बस इतना याद रखें कि यह DCIM नामित दो या अधिक निर्देशिका मिल सकती हो अपने sdcard और आंतरिक पर:

FileChooserListView: 
    id: filechooser 
    path: "/your/path" 

अजगर के साथ अपने सिस्टम पर एक निर्देशिका खोजने के लिए, आप कुछ इस तरह कर सकते हैं भंडारण।

+0

बस एक सामान्य बात के रूप में, मुझे अपने एचटीसी फोन पर पता है कि डीसीआईएम फ़ोल्डर एसडीकार्ड नामक निर्देशिका में है। क्या डीसीआईएम फ़ोल्डर हमेशा खोजने का कोई तरीका है? या कम से कम आंतरिक भंडारण? – Nick

+0

@ निक आप कह रहे हैं कि एसडीकार्ड आंतरिक भंडारण पर एक फ़ोल्डर है? – EL3PHANTEN

+0

@ निक किसी भी तरह से उत्तर – EL3PHANTEN

संबंधित मुद्दे