【发布时间】:2016-12-11 12:54:47
【问题描述】:
如何从 Python 代码翻转(自定义)kivy 小部件?我尝试将它的高度或宽度设置为负值,但它实际上会旋转小部件,ie 会翻转两个轴。 Rotate 指令显然也是如此。我知道有一个纹理的flip_horizontal() 方法,但我一点也不知道如何实际导致它影响现有的小部件,而不是 eg Atlas 的内存中纹理.
如果有帮助,我将 kivy 1.9.2 与 Python 3.4.3 一起使用。
UPD 我试过 Scale() 没有效果。
event.actor.widget.img.canvas.before.add(PushMatrix())
event.actor.widget.canvas.before.add(Scale(x=2.0, origin=event.actor.widget.center))
event.actor.widget.img.canvas.after.add(PopMatrix())
event.actor.widget.canvas.ask_update()
无论有无 PushMatrix/PopMatrix,它都不起作用。有问题的小部件是一个简单的小部件子类,具有可拉伸的图像和几个大小和位置的回调。
【问题讨论】:
-
我很好奇你为什么需要这样做?为什么不能旋转 180 度?什么样的小部件?您需要内部文本或图像来翻转吗?例如,您可以在其容器中重新绘制翻转的图像 - 可能比翻转 Widget 更容易。
-
因为如果我将例如字母
d旋转180 度,我会得到字母p,但如果我翻转它,我会得到b或q,具体取决于翻转方向。小部件代码可在下面的要点中找到。是的,我可以这样做,但我希望有一个解决方案不涉及为每个图像制作两个副本,因为这应该是一个微不足道的操作。如果要在运行时构建一个小部件,那将是一个痛苦的世界。
标签: python python-3.x widget kivy