【发布时间】:2019-01-09 06:17:35
【问题描述】:
我想在他们的父母“兄弟姐妹”之上绘制一个 kivy 小部件的孩子。兄弟姐妹是指与其父类相同类但实例不同的小部件。 Kivy 默认按照与它们各自的父母相同的顺序绘制这些:第一父母,它的所有孩子,然后是第二父母,它的所有孩子等等。因此,有时一个孩子在它的“叔叔”之上,有时它在下面,取决于先画的是他们的父母还是他们的“叔叔”。
我了解 kivy 小部件树的基础知识(或者至少我希望我了解),但不知道如何影响孩子的绘制顺序。我想一定有什么我错过了。 附带说明:我想在运行时创建(和删除)子小部件。
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.button import Button
class ParentButton(Button):
def __init__(self, pos, **kwargs):
super().__init__(**kwargs)
self.size_hint = None, None
self.pos = pos
def on_release(self):
self.add_widget(ChildButton())
class ChildButton(Button):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.size_hint = None, None
self.pos = (0, 0)
def on_release(self):
if self.parent.pos[0] < 150:
self.pos = (150, 50)
else:
self.pos = (150, 150)
class Layout(FloatLayout):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.add_widget(ParentButton((100, 100)))
self.add_widget(ParentButton((200, 100)))
class TestApp(App):
def build(self):
return Layout()
if __name__ == '__main__':
TestApp().run()
在我的代码示例中,我有两个按钮,每个按钮都创建一个子按钮。当按下子按钮时,它会移动,使其与自己的父按钮和另一个按钮重叠,后者不是它的父按钮,而是同一个类。由左按钮创建的按钮将绘制在左按钮的上方,但在右按钮的下方。由右键创建的按钮将绘制在两者之上。这实际上是预期的行为,但我想改变它,以便所有孩子都高于(或低于)他们所有的父类。有人可以帮忙吗?
【问题讨论】: