Ошибка при создании закругленных углов для кнопок в Kivy v2.0.0

#kivy

#киви

Вопрос:

Я пытаюсь сделать закругленные углы для кнопки в файле kv примерно так:

тест.кв

 #:kivy 2.0 lt;CustomGridLayoutgt;  GridLayout:  cols: 1   RoundedButton:  text: 'Button #1'  lt;RoundedButton@Buttongt;  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()   

Это не приводит к закруглению углов для меня.

Однако, когда я добавляю border: 0, RoundedButton вот так: test.kv

 lt;RoundedButton@Buttongt;  ...  border: 0,  canvas.before:  ...  RoundedRectangle:  radius: 10,  

Затем кнопка округляется. Но затем при запуске приложения, а также каждый раз, когда я нажимаю кнопку, я получаю следующую ошибку:

Ошибка значения: требуется более 1 значения, чтобы распаковать исключение, игнорируемое в: ‘kivy.graphics.vertex_instructions.borderImage.bui ld’

Это относится к тому, что они имеют только одно значение, border поэтому я изменил его на 4 значения (т. Е. 0, 0, 0, 0), и ошибка исчезла, но углы больше не закругляются.

Я также попытался border: 10, 10, 10, 10 , но снова без округления.

И, наконец, я также пытался использовать это border свойство безрезультатно canvas.before , но безрезультатно.

Ответ №1:

Вам нужно устранить background_color это, сделав его прозрачным. Это то background_color , что вы видите. Сделав его прозрачным, он позволяет видеть закругленный прямоугольник:

 lt;RoundedButton@Buttongt;  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,  

Комментарии:

1. Это сработало! Большое спасибо.