为了账号安全,请及时绑定邮箱和手机立即绑定

MatrixInstruction 在 kivy 中不起作用

MatrixInstruction 在 kivy 中不起作用

HUH函数 2024-01-04 17:19:47
我想将转换矩阵应用于小部件。在本例中,我预计它向右移动 100。然而它却一动不动,而是Transformation:     x: 100效果很好。我已经简化了问题,我实际上想从这里应用一些矩阵。此外,我从那里测试了一些矩阵,它的工作方式不同或者只是没有显示任何内容。from kivy.graphics.transformation import Matrixfrom kivy.lang import Builderfrom kivy.uix.anchorlayout import AnchorLayoutfrom kivy.app import AppBuilder.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()
查看完整描述

1 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

你的矩阵不正确。尝试:

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


查看完整回答
反对 回复 2024-01-04
  • 1 回答
  • 0 关注
  • 96 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信