self.pos 的 Kivy 布局背景问题
Kivy layout background issues with self.pos
我有一个 kv 语言的标签背景图片,但在 python 中重新编辑它以添加 HoverBehavior 属性 我的标签。
是:
<RockLayout>
canvas:
Rectangle:
pos: self.pos
size: self.size
source: 'data/images/gui_elements/rock_label.png'
变成:
class RockLayout(FloatLayout, HoverBehavior): # BoxLayout
def __init__(self, widget, **kwargs):
super().__init__(**kwargs)
widget.size_hint = (.8, .8)
widget.pos_hint = ({'center_x': .5, 'center_y': .52})
self.add_widget(widget)
with self.canvas.before:
Rectangle(source='data/images/gui_elements/rock_label.png', pos=self.pos, size=self.size)
def on_enter(self, *args):
self.canvas.before.clear()
with self.canvas.before:
Rectangle(source='data/images/gui_elements/rock_label_hover.png', pos=self.pos, size=self.size)
def on_leave(self, *args):
self.canvas.before.clear()
with self.canvas.before:
Rectangle(source='data/images/gui_elements/rock_label.png', pos=self.pos, size=self.size)
这导致 self.pos 在 canvas.before 初始化时不更新 self.pos 等于 0。当我调整 window 的大小时,图像的位置不会改变。
如何在 python 而非 .kv 语言中声明背景图像?
It's happens now
self.pos isn't updated when I resize the window
What I need to get
如何在python中正确使用kivy layuot背景图?
def on_size(self, *args):
self.bg.size = self.size
self.bg.pos = self.pos
我有一个 kv 语言的标签背景图片,但在 python 中重新编辑它以添加 HoverBehavior 属性 我的标签。
是:
<RockLayout>
canvas:
Rectangle:
pos: self.pos
size: self.size
source: 'data/images/gui_elements/rock_label.png'
变成:
class RockLayout(FloatLayout, HoverBehavior): # BoxLayout
def __init__(self, widget, **kwargs):
super().__init__(**kwargs)
widget.size_hint = (.8, .8)
widget.pos_hint = ({'center_x': .5, 'center_y': .52})
self.add_widget(widget)
with self.canvas.before:
Rectangle(source='data/images/gui_elements/rock_label.png', pos=self.pos, size=self.size)
def on_enter(self, *args):
self.canvas.before.clear()
with self.canvas.before:
Rectangle(source='data/images/gui_elements/rock_label_hover.png', pos=self.pos, size=self.size)
def on_leave(self, *args):
self.canvas.before.clear()
with self.canvas.before:
Rectangle(source='data/images/gui_elements/rock_label.png', pos=self.pos, size=self.size)
这导致 self.pos 在 canvas.before 初始化时不更新 self.pos 等于 0。当我调整 window 的大小时,图像的位置不会改变。 如何在 python 而非 .kv 语言中声明背景图像?
It's happens now
self.pos isn't updated when I resize the window
What I need to get
如何在python中正确使用kivy layuot背景图?
def on_size(self, *args):
self.bg.size = self.size
self.bg.pos = self.pos