在 Kivy v2.0.0 中为按钮制作圆角时出错

Error when making rounded corners for buttons in Kivy v2.0.0

我正在尝试为 kv 文件中的按钮制作圆角,如下所示:

test.kv

#:kivy 2.0
<CustomGridLayout>
    GridLayout:
        cols: 1

        RoundedButton:
            text: 'Button #1'

<RoundedButton@Button>
    background_color: (51/255.0, 51/255.0, 51/255.0, 1)
    background_normal: ''
    background_down: ''
    size_hint: None, None
    size: 300, 50
    canvas.before:
        Color:
            rgba: self.background_color
        RoundedRectangle:
            size: self.size
            pos: self.pos
            radius: 10,

test.py

import kivy
kivy.require('2.0.0')

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.core.window import Window

class CustomGridLayout(Widget):
    pass

class TestApp(App):
    def build(self):
        Window.size = (360,640)
        Window.clearcolor = (238/255.0, 238/255.0, 238/255.0, 1)
        return CustomGridLayout()

if __name__ == '__main__':
    TestApp().run()

这对我来说不会产生圆角。

然而,当我像这样在 RoundedButton 中添加 border: 0, 时: test.kv

<RoundedButton@Button>
    ...
    border: 0,
    canvas.before:
        ...
        RoundedRectangle:
            radius: 10,

然后按钮变圆了。但是在启动应用程序时,以及每次单击按钮时,我都会收到以下错误:

ValueError: need more than 1 value to unpack Exception ignored in: 'kivy.graphics.vertex_instructions.BorderImage.bui ld'

这是指它们在 border 中只有一个值,所以我将其更改为 4 个值(即 0、0、0、0),错误消失了,但角不再是圆的。

我也试过 border: 10, 10, 10, 10 但还是没有四舍五入。

最后我也试过使用 border 属性 没有 canvas.before 但无济于事。

您需要通过使其透明来消除 background_colorbackground_color 就是您所看到的。通过使其透明,您可以看到圆角矩形:

<RoundedButton@Button>
    background_color: (0, 0, 0, 0)
    background_normal: ''
    background_down: ''
    size_hint: None, None
    size: 300, 50
    canvas.before:
        Color:
            rgba: 51/255.0, 51/255.0, 51/255.0, 1
        RoundedRectangle:
            size: self.size
            pos: self.pos
            radius: 10,