在 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_color
。 background_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,
我正在尝试为 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_color
。 background_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,