2017-02-13 4 views
0

ich den Pfad der Datei in Eingabefeld des Root-Widget versuchen hier zu bekommen, ist mein CodeKivy Eingabetext aus dem Datei-Browser zu aktualisieren

from kivy.app import App 
from kivy.uix.floatlayout import FloatLayout 
from os.path import sep, expanduser, isdir, dirname 
from kivy.garden.filebrowser import FileBrowser 
from kivy.utils import platform 
from kivy.uix.popup import Popup 
class RootWidget(FloatLayout): 
    file = 'enter zip path or select it' 
    def open(self): 
     print("doing") 
     self.popup = Popup(title='Test popup', 
        content=self.explorer(), 
        size_hint=(None, None), size=(600, 600)) 
     self.popup.open() 
    def explorer(self): 
     if platform == 'win': 
      user_path = dirname(expanduser('~')) + sep + 'Documents' 
     else: 
      user_path = expanduser('~') + sep + 'Documents' 
     browser = FileBrowser(select_string='Select', 
          favorites=[(user_path, 'Documents')]) 
     browser.bind(
       on_success=self._fbrowser_success, 
       on_canceled=self._fbrowser_canceled) 
     return browser 

    def _fbrowser_canceled(self, instance): 
     print ('cancelled, Close self.') 
     self.popup.dismiss() 

    def _fbrowser_success(self, instance): 
     print(instance.selection[0]) 
     self.file = instance.selection[0] 
     self.popup.dismiss() 

class MainApp(App): 
    def build(self): 
     return RootWidget() 

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

und hier ist Kivy Datei Code

<RootWidget>: 
    TextInput: 
     text: root.file 
     multiline: False 
    Button: 
     text: 'Load' 
     on_press: root.open() 

Es öffnen Datei-Browser und funktioniert gut, schließen Sie es schließen und bei der Auswahl den Dateipfad in der Konsole. aber es aktualisiert den Text nicht, der in Eingabefeld platziert wird.

Dank für Ihre Antwort :)

Antwort

1

Verwendung id anstelle von Text wie diese

def _fbrowser_success(self, instance): 
    print(instance.selection[0]) 
    self.file = instance.selection[0] 
    self.ids.change.text = self.file 
    self.popup.dismiss() 

<RootWidget>: 
    TextInput: 
     text: root.file 
     multiline: False 
     id:change 
    Button: 
     text: 'Load' 
     on_press: root.open() 
Verwandte Themen