旋转整个小部件,而不仅仅是它的画布

时间:2016-02-29 08:25:36

标签: kivy

在这个example中,我们可以看到画布的旋转。但是没有注册按钮的角落。如何旋转整个按钮?

2 个答案:

答案 0 :(得分:3)

您可以覆盖其collide_point方法,通过转换触摸坐标来解释旋转。

如果您使用小部件系统(例如将按钮放在散点图中),则会为您处理碰撞。

答案 1 :(得分:0)

根据inclement的答案,我在分散布局上创建了一个按钮,其 hitbox 设置正确。

from kivy.app import App
from kivy.lang import Builder

kv = '''
FloatLayout:

    ScatterLayout:
        size_hint: None, None
        size: 200, 200
        pos_hint: {'center_x': .5, 'center_y': .5}

        rotation: 45

        do_rotation: False
        do_scale: False
        do_translation: False

        Button:
            text: 'hello world'
'''


class RotationApp(App):
    def build(self):
        return Builder.load_string(kv)

RotationApp().run()

我使用了散布布局而不是散射,因为它将其大小传递给子窗口小部件。在此示例中不需要do_x: False,因为按钮会拦截触摸事件,但如果我放置了标签,则会触摸它。