MatrixInstruction 在 kivy 中不起作用

我想将转换矩阵应用于小部件。在本例中,我预计它向右移动 100。

然而它却一动不动,而是

Transformation:
    x: 100

效果很好。

我已经简化了问题,我实际上想从这里应用一些矩阵。此外,我从那里测试了一些矩阵,它的工作方式不同或者只是没有显示任何内容。

from kivy.graphics.transformation import Matrix

from kivy.lang import Builder

from kivy.uix.anchorlayout import AnchorLayout

from kivy.app import App


Builder.load_string("""

<MainScreen>:

    anchor_x: "center"

    anchor_y: "center"

    canvas.before:

        Color:

            rgba: (0, 0, 0, 1)

        Rectangle:

            pos: self.pos

            size: self.size

    Button:

        id: widg

        size_hint: (0.3, 0.6)

        canvas.before:

            PushMatrix

            # Translate:

            #     x: 100

            MatrixInstruction:

                matrix: root.matrix

        canvas.after:

            PopMatrix

        text: "hello"

""")



class MainScreen(AnchorLayout):

    matrix = Matrix()

    matrix.set(array=[[1.0, 0.0, 0.0, 100.0],

                      [0.0, 1.0, 0.0, 0.0],

                      [0.0, 0.0, 1.0, 0.0],

                      [0.0, 0.0, 0.0, 1.0]])


    def __init__(self, **kwargs):

        super(MainScreen, self).__init__(**kwargs)

        print(self.ids.widg.canvas.before.children[1].matrix)



class Application(App):

    def __init__(self, **kwargs):

        super(Application, self).__init__(**kwargs)


    def build(self):

        return MainScreen()



if __name__ == "__main__":

    Application().run()


HUH函数
浏览 98回答 1
1回答

汪汪一只猫

你的矩阵不正确。尝试:matrix.set(array=[[1.0,&nbsp;0.0,&nbsp;0.0,&nbsp;0.0], &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[0.0,&nbsp;1.0,&nbsp;0.0,&nbsp;0.0], &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[0.0,&nbsp;0.0,&nbsp;1.0,&nbsp;0.0], &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[100.0,&nbsp;0.0,&nbsp;0.0,&nbsp;1.0]])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python