Ответ 1
Это сложно. Насколько я обеспокоен Widgets
всегда прямоугольники. Но мы можем изменить фон и поместить пару изображений для нормального и нижнего состояний, используя свойства background_normal
и background_down
соответственно. Также вам нужно понять свойство border
.
С этими двумя изображениями, называемыми normal.png
и down.png
, вы можете начать добавлять свои круглые границы.
Вот фрагмент кода, который очень прямолинейный (я пытаюсь объяснить border
ниже):
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.button import Button
from kivy.lang import Builder
Builder.load_string("""
<Base>:
Button:
background_normal: 'normal.png'
background_down: 'down.png'
border: 30,30,30,30
""")
class Base(FloatLayout):
pass
class ButtonsApp(App):
def build(self):
return Base()
if __name__ == "__main__":
ButtonsApp().run()
То, как я это понимаю (и, может быть, я ошибаюсь), это. Значения в border: 30,30,30,30
показывают, сколько пикселей в верхней, правой, нижней и левой частях будет использоваться для границы кнопки фона. Остальное будет заполнено средней частью. Я не уверен здесь. Кстати, если вы хотите увидеть что-то классное, см., Например, border: 150,150,150,150
. Причина в том, что мы поднимаем границу, большую, чем фактическое изображение.
Оговорка: Виджеты по-прежнему являются прямоугольниками. Это означает, что даже если вы нажмете на закругленные углы, кнопка все равно получит событие. Я думаю, это справедливая цена. Если вы хотите сделать что-то лучше, возможно, я могу вам помочь, но нам нужно будет использовать некоторые математики, чтобы столкнуться с очками. Один из трюков с Pong Game tutorial в документации состоит в том, что на самом деле мяч является квадратом. Я разместил связанный с ним вопрос здесь, но вам нужно будет использовать Canvas