Я очень новичок в Киви, и даже python, поэтому у меня нет лучших навыков. У меня есть файл .py, чтобы запустить все из моего файла .kv. Я хочу добавить эффект, когда виджет выделяется при наведении на него курсора. Я нашел кое-что на github, изменил его до того, что я хочу, но я не могу понять, как поместить его в свой оригинал и заставить его работать на то, что у меня уже было. В общем, мне нужна помощь, чтобы поместить материал для наведения в мой файл python Это, вероятно, простой ответ, но опять же, я новичок в этом ...
Материал, который мне нужно поместить в файл ...
class HoverBehavior(object):
hovered = BooleanProperty(False)
border_point = ObjectProperty(None)
def __init__(self, **kwargs):
self.register_event_type('on_enter')
self.register_event_type('on_leave')
Window.bind(mouse_pos=self.on_mouse_pos)
super(HoverBehavior, self).__init__(**kwargs)
def on_mouse_pos(self, *args):
if not self.get_root_window():
return # do proceed if I'm not displayed <=> If have no parent
pos = args[1]
#Next line to_widget allow to compensate for relative layout
inside = self.collide_point(*self.to_widget(*pos))
if self.hovered == inside:
#We have already done what was needed
return
self.border_point = pos
self.hovered = inside
Factory.register('HoverBehavior', HoverBehavior)
class HoverLabel(Label, HoverBehavior):
def on_enter(self, *args):
pass
def on_leave(self, *args):
pass
Builder.load_string('''
<HoverLabel>:
text: "inside"
pos: 200,200
size_hint: None, None
size: 100, 30
canvas.before:
Color:
rgb: 1,0,1 if self.hovered else 0,0,0
Rectangle:
size: self.size
pos: self.pos
''')
if __name__ == '__main__':
fl = FloatLayout()
fl.add_widget(HoverLabel())
runTouchApp(fl)
И мой файл python :
class VgxMainScreen(Widget):
pass
class VgxUI(Widget):
pass
class CanvasWidget(ButtonBehavior, Label):
pass
class KivyGuiApp(App):
def build(self):
return VgxUI()
if __name__ == '__main__':
KivyGuiApp().run()