在 kivy 弹出窗口中选择文件时出现索引错误 window
Index error when choosing file in a kivy popup window
def popping(self, button_instance):
self.small_page = Popup(title='Choose jpg or png file',size_hint=(.8,.8))
self.scroll = ScrollView()
self.small_page.add_widget(self.scroll)
file_choose = FileChooserListView()
self.scroll.add_widget(file_choose)
self.upload_pic = Button(text='Upload', size_hint=(1,.2), on_press= self.uploading(file_choose.selection))
self.small_page.add_widget(self.upload_pic)
self.small_page.open()
def uploading(self, filename):
profile_pic.source = filename[0]
我有一个 kivy 弹出窗口 window,它会转到文件选择器,每次我尝试访问文件时都会出现错误,如果可能的话可以用 python 语言而不是基维
IndexError: list index out of range
问题在于行:
self.upload_pic = Button(text='Upload', size_hint=(1,.2), on_press= self.uploading(file_choose.selection))
该行在 Button
定义时执行 self.uploading(file_choose.selection)
,远在您有机会 select FileChooser
中的任何内容之前。您可以使用 partial
来定义要调用的函数,如下所示:
self.upload_pic = Button(text='Upload', size_hint=(1, .2), on_press=partial(self.uploading, file_choose))
partial
定义了一个函数(及其参数),但不调用它。那么你的 self.uploading()
方法可以是这样的:
def uploading(self, file_chooser, button):
print(file_chooser.selection[0])
def popping(self, button_instance):
self.small_page = Popup(title='Choose jpg or png file',size_hint=(.8,.8))
self.scroll = ScrollView()
self.small_page.add_widget(self.scroll)
file_choose = FileChooserListView()
self.scroll.add_widget(file_choose)
self.upload_pic = Button(text='Upload', size_hint=(1,.2), on_press= self.uploading(file_choose.selection))
self.small_page.add_widget(self.upload_pic)
self.small_page.open()
def uploading(self, filename):
profile_pic.source = filename[0]
我有一个 kivy 弹出窗口 window,它会转到文件选择器,每次我尝试访问文件时都会出现错误,如果可能的话可以用 python 语言而不是基维
IndexError: list index out of range
问题在于行:
self.upload_pic = Button(text='Upload', size_hint=(1,.2), on_press= self.uploading(file_choose.selection))
该行在 Button
定义时执行 self.uploading(file_choose.selection)
,远在您有机会 select FileChooser
中的任何内容之前。您可以使用 partial
来定义要调用的函数,如下所示:
self.upload_pic = Button(text='Upload', size_hint=(1, .2), on_press=partial(self.uploading, file_choose))
partial
定义了一个函数(及其参数),但不调用它。那么你的 self.uploading()
方法可以是这样的:
def uploading(self, file_chooser, button):
print(file_chooser.selection[0])