#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. Это сработало! Большое спасибо.