Ошибка типа: объект 'kivy.weakproxy.WeakProxy' не вызывается Kivi - PullRequest
0 голосов
/ 04 ноября 2018

Я новичок в kivy, и я должен написать приложение viewer. В настоящее время я работаю только над дизайном, но получаю следующую ошибку: line 239, in create_view view_instance = cls(**item_args) TypeError: 'kivy.weakproxy.WeakProxy' object is not callable

Поделиться моим кодом:

bins_player.py:

import kivy
import glob
from os import path
import tkinter as tk
from kivy.app import App
from tkinter import filedialog
from kivy.core.window import Window
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import ObjectProperty
from kivy.uix.gridlayout import GridLayout

kivy.require('1.9.0')

class FilesPanel(GridLayout):
    frames_list = ObjectProperty()

    def open_files(self):
        root = tk.Tk()
        root.withdraw()

        self.load_files(filedialog.askdirectory(parent=root,initialdir="/", title='Please select a directory'))

    def load_files(self, selected_folder):
        all_bin_files = glob.glob(path.join(selected_folder, '*.bin'))

        for bin_file in all_bin_files:
            self.frames_list.adapter.data.extend([bin_file])
            self.frames_list._trigger_reset_populate()


class BinsPlayerMain(GridLayout):
    pass


class Bins_PlayerApp(App):
    def build(self):
        Window.clearcolor = (1, 1, 1, 1)
        self.title = 'Bins Player'
        self.icon = 'BinsPlayer.ico'
        return BinsPlayerMain()


if __name__ == "__main__":
    Bins_PlayerApp().run()

bins_player.kv:

#: include ui/filespanel.kv

<BinsPlayerMain>:
    rows: 2

    GridLayout:

filespanel.kv:

#: include force ui/sectiontitle.kv
#: import ListAdapter kivy.adapters.listadapter.ListAdapter

<FilesPanel>:
        id: filesPanel
        frames_list: frames_list_view
        rows: 2
        size_hint_x:  None
        width: 200

        ListView:
                id: frames_list_view
                rgba: .2, .2, .2, 1
                adapter:
                        ListAdapter(data=[], cls=filesPanel)

        Button:
                size_hint_y: None
                height: 30
                spacing: 10
                text: 'Open Folder'
                on_press: filesPanel.open_files()

Я получаю эту ошибку сразу после открытия папки - после обновления ListView.

В чем здесь проблема?

Я видел new макет с названием ResycleView - можно ли его использовать здесь вместо ListView?

...