gpt4 book ai didi

python - 在 Clutter 中使用 BindConstraint 来约束 actor 的大小

转载 作者:太空宇宙 更新时间:2023-11-04 04:47:57 24 4
gpt4 key购买 nike

我最近发现了constraints然而,在 Clutter 中,我找不到有关如何按比例限制 actor 大小的信息。例如,我希望一个 Actor 保持另一个 Actor 宽度的 1/2,比如说它的父级。看起来它只能强制宽度随源缩放 100%。

最佳答案

Clutter.BindConstraint 匹配源 actor 的位置和/或维度属性。对于分数定位,您可以使用 Clutter.AlignConstraint,但是没有 Clutter.Constraint 类允许您设置分数维属性。您可以通过继承 Clutter.Constraint 并覆盖 Clutter.Constraint.do_update_allocation() 虚函数来实现您自己的 ClutterConstraint通过了应由约束修改的参与者的分配。类似于此(未经测试的)代码的东西应该可以工作:

class MyConstraint (Clutter.Constraint):
def __init__(self, source, width_fraction=1.0, height_fraction=1.0):
Clutter.Constraint.__init__(self)
self._source = source
self._widthf = width_fraction
self._heightf = height_fraction
def do_update_allocation(self, actor, allocation):
source_alloc = self._source.get_allocation()
width = source_alloc.get_width() * self._widthf
height = source_alloc.get_height() * self._heightf
allocation.x2 = allocation.x1 + width
allocation.y2 = allocation.y1 + height

这应该说明 Clutter.Constraint 用来修改 actor 分配的机制。

关于python - 在 Clutter 中使用 BindConstraint 来约束 actor 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19071810/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com