我可以在Kivy中将属性从一个小部件复制到另一个小部件吗?

时间:2014-08-02 00:59:16

标签: python widget kivy python-3.4

我有2个小部件,我需要以某种方式将所有属性(位置,大小,画布等)从一个小部件复制到另一个小部件(然后将最后一个移动到新的位置)。可能我可以逐个复制属性,但是有一些内置函数吗? 似乎Python的副本只做了shell拷贝(我不能移动重复等),而深度拷贝也失败了。

2 个答案:

答案 0 :(得分:2)

你可以做的一件事就是在python中使用copy函数。 这不会复制所有的pos / size值,但您将拥有所有属性。

例如:

来自复制导入副本

new_box = copy(self.current_box)

希望这有帮助。

答案 1 :(得分:1)

我一般都不知道预先存在的方法,但你可能很容易就能做到这一点。您可以通过properties()的{​​{1}}方法获取窗口小部件属性的列表,但您还需要手动跟踪要复制的任何非kivy属性,以及可能需要检查以确保将它们全部复制是安全的。

根据具体情况,可能还有其他可能性。例如,如果窗口小部件首先从一组参数中实例化,并且从未真正修改过多,那么您可以保存参数列表并使用它来构造新的窗口小部件。可能还有更有效的替代方案 - 如果您不需要与“副本”进行互动,您根本不需要制作新的小部件,但可以绘制原始的小部件到Fbo并简单地重复使用它的纹理。这将是对kivy更高级的使用,但并不难,如果您对此感兴趣但不知道该怎么做,请告诉我。