Kivy - Почему исходное изображение искажается таким образом, если задано как Button background_normal image? - PullRequest
0 голосов
/ 04 августа 2020

У меня проблема при размещении icon.png в качестве background_normal кнопки в Kivy. Когда изображение отображается внутри кнопки, появляются черные области, тянущиеся по бокам от значка. Некоторые значки выглядят как вытянутые вперед от середины. Все используемые значки имеют прозрачный цвет фона.

Я убедился, что исходное изображение имеет такое же разрешение (80x80px), что и кнопка, внутри которой оно размещено. Также попробовал установить allow_stretch на False и kee_ration на True. Кажется, ничего не решает проблему.

Вот как должен отображаться значок normal

This is how it is being displayed within the button(ignore the brown canvas colour)

Скриншот

Ниже находится раздел .kv, который создает кнопку внутри BoxLayout, а затем применяет исходное изображение в качестве фона

<SettingsScreen>
name: "Settings"
size: self.width, self.height

BoxLayout:
    size: root.width, root.height
    cols:1
    orientation: 'vertical'
    spacing: 2
    canvas.before:
        Color:
            rgba: hex('#D29F7C')
        Rectangle:
            size: self.size

    BoxLayout:
        size_hint: (None, None)
        size: (1920, 80)
        orientation: 'horizontal'

        Button:
            background_colour: 0, 0, 0, 0
            background_normal: r'C:\Users\James\Documents\Coding\Python\Practice Projects\Gardening App\Icons\Home.png'
            allow_stretch: False
            keep_ratio: True
            size_hint: (None, None)
            size: (80, 80)
            canvas.before:
                Color:
                    rgba: hex('#AB9D92')
                Rectangle:
                    pos: self.pos
                    size: self.size
            bold: True
            color: 0.7, 0.7, 0.7, 1
            font_hinting: 'normal'
            font_size: 40
            font_name: 'calibril.ttf'
            text: 'Menu'
            on_release:
                app.root.current = "Menu"
                root.manager.transition.direction = 'right'

1 Ответ

0 голосов
/ 14 августа 2020

Проблема возникает, когда изображение, применяемое к фону кнопки, имеет то же разрешение, что и сама кнопка. Когда размер изображения был уменьшен до немного ниже размера кнопки, искажение исчезло.

...