我试图在Root小部件的输入框中获取文件的路径,这是我的代码
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()
这里是kivy文件代码
<RootWidget>:
TextInput:
text: root.file
multiline: False
Button:
text: 'Load'
on_press: root.open()
它打开文件浏览器并在关闭时正常工作,并选择将文件路径放在控制台中。但它没有更新输入框中的文字。
感谢您的回答:)
答案 0 :(得分:1)
使用id而不是像这样的文本
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()