如何更改已创建的小部件的绘制顺序?

时间:2014-12-02 23:06:50

标签: python kivy

使用kivy,我无法弄清楚如何更改已创建的窗口小部件的绘制顺序。这个简单的应用程序在屏幕上绘制两个图像,我想要它做的是每次鼠标点击交换绘制顺序(移动它们“totop”)。我一直在和InstructionGroup一起玩,但它并没有把我带到任何地方。

from kivy.app import App
from kivy.uix.image import Image
from kivy.uix.widget import Widget

class MainWidget(Widget):
    def __init__(self, **kwargs):
        super(MainWidget, self).__init__(**kwargs)

        self.img1 = Image(source="./images/img1.png", x=200, y=200)
        self.img2 = Image(source="./images/img2.png", x=200, y=200)

        self.add_widget(self.img1)
        self.add_widget(self.img2)

    def on_touch_down(self, touch):
        print 'here I want to swap which image is drawn on top'

class TheApp(App):

    def build(self):
        parent = Widget()
        parent.add_widget(MainWidget())
        return parent    

if __name__ == '__main__':
    TheApp().run()

1 个答案:

答案 0 :(得分:3)

您可以删除并阅读小部件,它将被绘制在顶部。

def on_touch_down(self, touch):
    if self.children[0] is self.img2:
        self.remove_widget(self.img1)
        self.add_widget(self.img1)
    else:
        self.remove_widget(self.img2)
        self.add_widget(self.img2)

此外,您应该查看Layouts,因为它们比在Widget内手动定位所有内容更容易使用。