Button Border .kv in .py Kivy&Python
Есть кнопка с border по бокам кнопки.
Но проблема в том, что я знаю как сделать в .kv файле такую кнопку, а вот как такую же сделать только в .py файле, я не знаю.
Кнопка:
Button:
text: 'test'
canvas.before:
Color:
rgba: .5, .5, .5, 1
Line:
width: 2
rectangle: self.x, self.y, self.width, self.height
Ответы (1 шт):
Автор решения: Алексей Осинный
→ Ссылка
Что-то вроде этого, хотя можно лучше, мне кажется.
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.widget import Widget
from kivy.uix.boxlayout import BoxLayout
from kivy.graphics import Line, Color
from kivy.clock import Clock
class MyButton(Button):
def __init__(self,**kw):
super().__init__(**kw)
self.text = 'test'
Clock.schedule_once(self.update_border,1)
def update_border(self,dt):
with self.canvas.before:
Color(rgba = (1,1,1,1))
Line(width = 2,rectangle = (self.x,self.y,self.width,self.height))
class Main(BoxLayout):
def __init__(self,**kw):
super().__init__(**kw)
self.orientation = 'vertical'
self.add_widget(Widget())
self.add_widget(MyButton())
self.add_widget(Widget())
class MyApp(App):
def build(self):
return Main()
if __name__ == "__main__":
MyApp().run()