python - self.pos 的 Kivy 布局背景问题
问题描述
我有一个 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语言?
如何在 python 中正确使用 kivy layuot 背景图像?
解决方案
def on_size(self, *args):
self.bg.size = self.size
self.bg.pos = self.pos
推荐阅读
- android - 导体:在 onActivityResult 中强制回调
- batch-file - 字符串存在检查并回显到文件
- javascript - JavaScript 中哪个对象没有“hasOwnProperty”?
- html - Outlook 中的 Thymeleaf 特殊字符转换
- c - 在 C 中的 fprintf 上保存多个具有不同名称的文件
- linux - 为什么 bash 不能运行 .out 文件?
- arrays - 在 swift 4 中从嵌套的 JSON 字符串构建数组
- jquery - 如何解决此 Jquery 页面刷新错误
- r - onehot 编码:保留列结构
- python - Python tkinter:在列表框中添加垂直和水平滚动条