所以我一直在编码该文件浏览器程序。到目前为止,我已经对复制函数进行了编码,而我遇到的问题是,在将文件复制到新目录(即我当前在filechooser中所在的目录)后,该文件未显示在实际目录中。文件选择器。我正在使用图标视图,但在这里只看到网上有一个提及:Refresh / Reload FileChooser,我尝试了此方法,就像正在执行实际的_update_files()函数。(通过几个打印语句进行了检查)但是我在注意到实际的文件选择器没有任何变化。我在这里做错什么?谢谢!!!
这是复制文件后执行的python代码。我将包含文件选择器的实际屏幕分配给名为MainScreenVar
的变量
for i in range(0, self.execute_data_length):
if self.execute_data[i][2] == "File" :
shutil.copy2(self.execute_data[i][1], current_path)
MainScreenvar = MainScreen()
return MainScreenvar.ids.filechooser._update_files()
mycursor.execute("DELETE FROM selection")
mydb.commit()
这是kivy文件的一部分:
<MainScreen>:
FileChooserIconView:
id:filechooser
size_hint:1,.9
pos_hint:{"top": .9}
color: 0,0,0,0
以及kivy文件选择器的源代码在这里:https://kivy.org/doc/stable/_modules/kivy/uix/filechooser.html
您的代码中的错误是该行:
MainScreenvar = MainScreen()
正在创建MainScreen
的新实例。这将不是您的GUI中显示的实例,因此该行:
return MainScreenvar.ids.filechooser._update_files()
正在为您的GUI中未显示的_update_files()
调用FileChooserIconView
。解决方案是使用对GUI中实际FileChooserIconView
的引用。大概是这样的:
MainScreenvar = self.manager.get_screen('main')
但是,这只是一个猜测,因为您没有提供太多代码。这假定您发布的代码来自Screen
,并且您为name
提供的MainScreen
为main
。