【问题标题】:Rotate a vertical rectangle to an horizontal one with Python Kivy - How?使用 Python Kivy 将垂直矩形旋转到水平矩形 - 如何?
【发布时间】:2021-03-19 15:03:02
【问题描述】:

我正在尝试使用 Python Kivy 编写游戏,只卡在一件事情上,这将是一个简单的问题,但我在任何地方都没有找到解决方案。

我希望屏幕中间的线(见附图)是水平的而不是垂直的,即从左到右。有什么方法可以旋转这个吗?或者我必须在脚本中更改什么?

Change vertical line to horizontal

这是我创建图形的脚本:

<PongGame>:
    canvas:
       Rectangle:
          pos:    self.center_x - 5, 0
          size: 10, self.height

如果有任何帮助,我将不胜感激。请记住,我还是个初学者。

最好的问候,

Py初学者

【问题讨论】:

    标签: python graphics kivy widget kivy-language


    【解决方案1】:

    一个很好的方法是使用kv,像这样:

    <PongGame>:
        rotate: False  # property to control rotation
        canvas:
            Rectangle:
                pos:  (0, self.center_y - 5) if self.rotate else (self.center_x - 5, 0)
                size: (self.width, 10) if self.rotate else (10, self.height)
    

    这段代码定义了PongGame 的一个属性(rotate)来控制旋转。如果rotateFalse,那么你的原始Rectangle 被绘制,但如果rotateTrue,那么一个旋转的Rectangle 被绘制。使用 python 代码可以获得类似的结果,但是您必须编写更多代码(绑定)来处理用户更改PongGame 大小的情况。在kv 中完成这一切让 kivy 处理这些绑定。

    一旦你有了这段代码,你就可以使用如下方法旋转PongGame

    def rotate(self, dt):
        self.root.rotate = not self.root.rotate
    

    在你的PongApp

    【讨论】:

    • 完美,谢谢。正是我想要的。效果很好!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    • 2018-09-27
    相关资源
    最近更新 更多