Изменение иконки Kivy FileChooserIconView - PullRequest
0 голосов
/ 26 сентября 2019

Я ищу способ изменить значок файла FileChooserIconView и установить его программно.Я просматриваю исходный код Kivy filechooser.py, но не могу найти, где находится значок.

В настоящее время цвет фона по умолчанию для FileChooserIconView черный, а текущий значок хорошо работает с этим фоном.Мне нужно изменить фон моего приложения на белый, и текущий значок не выглядит хорошо с белым фоном, а также у меня есть значок определенного файла, который нужно использовать для белого фона.

1 Ответ

1 голос
/ 28 сентября 2019

Значок файла определен в файле style.kv вашей установки Kivy.И на него ссылаются классы FileChooserIconView и FileChooserIconLayout как:

_ENTRY_TEMPLATE = 'FileIconEntry'

. Вы можете переопределить этот шаблон, используя что-то вроде:

Builder.load_string('''
[FileIconEntry@Widget]:
    locked: False
    path: ctx.path
    selected: self.path in ctx.controller().selection
    size_hint: None, None

    on_touch_down: self.collide_point(*args[1].pos) and ctx.controller().entry_touched(self, args[1])
    on_touch_up: self.collide_point(*args[1].pos) and ctx.controller().entry_released(self, args[1])
    size: '100dp', '100dp'

    canvas:
        Color:
            rgba: 1, 1, 1, 1 if self.selected else 0
        BorderImage:
            border: 8, 8, 8, 8
            pos: root.pos
            size: root.size
            source: 'atlas://data/images/defaulttheme/filechooser_selected'

    Image:
        size: '48dp', '48dp'
        source: 'atlas://data/images/defaulttheme/filechooser_%s' % ('folder' if ctx.isdir else 'file')
        pos: root.x + dp(24), root.y + dp(40)
    Label:
        text: ctx.name
        text_size: (root.width, self.height)
        halign: 'center'
        shorten: True
        size: '100dp', '16dp'
        pos: root.x, root.y + dp(16)

    Label:
        text: '{}'.format(ctx.get_nice_size())
        font_size: '11sp'
        color: .8, .8, .8, 1
        size: '100dp', '16sp'
        pos: root.pos
        halign: 'center'
''')

Приведенный выше код просто дублируетопределение шаблона из style.kv, но вы можете внести любые изменения в вышеупомянутый шаблон, и эти изменения будут влиять на FileChooserIconView.Image является действительным значком.

...