如何使kivy文件选择器在python中自动刷新

问题描述 投票:0回答:1

所以我一直在编码该文件浏览器程序。到目前为止,我已经对复制函数进行了编码,而我遇到的问题是,在将文件复制到新目录(即我当前在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

python kivy kivy-language filechooser
1个回答
0
投票

您的代码中的错误是该行:

MainScreenvar = MainScreen()

正在创建MainScreen的新实例。这将不是您的GUI中显示的实例,因此该行:

return MainScreenvar.ids.filechooser._update_files()

正在为您的GUI中未显示的_update_files()调用FileChooserIconView。解决方案是使用对GUI中实际FileChooserIconView的引用。大概是这样的:

MainScreenvar = self.manager.get_screen('main')

但是,这只是一个猜测,因为您没有提供太多代码。这假定您发布的代码来自Screen,并且您为name提供的MainScreenmain

© www.soinside.com 2019 - 2024. All rights reserved.