如何让 Kivy 文件选择器在 python 中自动刷新
How to Make Kivy File Chooser auto refresh in python
所以我一直在编写这个文件浏览器程序。到目前为止,我已经编写了复制功能,我 运行 遇到的问题是,在我将文件复制到它的新目录(即我当前在文件选择器中的目录)后,文件没有显示在实际的文件选择器中。我正在使用图标视图,我在这里只看到一个在线提及: 我尝试了这个方法并且喜欢实际的 _update_files() 函数正在执行。(用几个检查它打印语句)但我注意到实际 filechooser.What 没有任何变化我在这里做错了吗?谢谢!
This is the python code that is executed when ever the file is copied. I assigned the actual screen that contains the file chooser to a variable named 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()
This is part of the kivy file:
<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()
正在为 FileChooserIconView
调用 _update_files()
,但您的 GUI 中没有显示。解决方案是使用对 GUI 中实际 FileChooserIconView
的引用。可能是这样的:
MainScreenvar = self.manager.get_screen('main')
但是,这只是一个猜测,因为您没有提供太多代码。这假设您发布的代码来自 Screen
,并且您为 MainScreen
提供的 name
是 main
.
所以我一直在编写这个文件浏览器程序。到目前为止,我已经编写了复制功能,我 运行 遇到的问题是,在我将文件复制到它的新目录(即我当前在文件选择器中的目录)后,文件没有显示在实际的文件选择器中。我正在使用图标视图,我在这里只看到一个在线提及:
This is the python code that is executed when ever the file is copied. I assigned the actual screen that contains the file chooser to a variable named 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()
This is part of the kivy file:
<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()
正在为 FileChooserIconView
调用 _update_files()
,但您的 GUI 中没有显示。解决方案是使用对 GUI 中实际 FileChooserIconView
的引用。可能是这样的:
MainScreenvar = self.manager.get_screen('main')
但是,这只是一个猜测,因为您没有提供太多代码。这假设您发布的代码来自 Screen
,并且您为 MainScreen
提供的 name
是 main
.