【问题标题】:Kivy layout background issues with self.posself.pos 的 Kivy 布局背景问题
【发布时间】:2020-09-07 22:51:45
【问题描述】:

我有一个 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)

这导致 canvas.before 中的 self.pos 在初始化时没有更新,self.pos 等于 0 . 当我调整窗口大小时,图像的位置不会改变。 如何在python中声明背景图片,而不是.kv语言?

It's happens now

self.pos isn't updated when I resize the window

What I need to get

如何在python中正确使用kivylayuot背景图片?

【问题讨论】:

  • 参见this question,这也适用于pos
  • 非常感谢!)它对我有用

标签: python kivy kivy-language


【解决方案1】:
    def on_size(self, *args):
        self.bg.size = self.size
        self.bg.pos = self.pos

【讨论】:

  • 欢迎您,我看到您找到了解决方案。您似乎从 John 在评论中发布的链接中找到了解决方案。如果是这样,请关闭此问题或标记为与其他问题重复...网站上有数百万个帖子,我们需要帮助策划内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-02
  • 2016-04-05
  • 1970-01-01
  • 1970-01-01
  • 2019-12-21
  • 2020-03-18
相关资源
最近更新 更多