【Kivy】子ウィジェットの並び

  • main.py
from kivy.app import App
from kivy.uix.button import Button
from kivy.clock import Clock

class MainApp(App):
    def on_start(self):
        # ウィジェット出力
        self.__print_widgets()

        # 指定時間後実行
        Clock.schedule_once(self.on_callback, 5.0)
    def on_callback(self, delta: float):
        # ウィジェット追加
        button = Button()
        button.text = 'New Button'
        self.root.add_widget(button)
        
        # ウィジェット出力
        self.__print_widgets()
    def __print_widgets(self):
        for widget in self.root.children:
            if isinstance(widget, Button):
                print('button = {}'.format(widget.text))

if __name__ == '__main__':
    MainApp().run()
  • main.kv
#:kivy 1.0
MainWidget:
<MainWidget@BoxLayout>
    Button:
        text: 'Button 1'
    Button:
        text: 'Button 2'
    Button:
        text: 'Button 3'
    Button:
        text: 'Button 4'
  • 結果
【1 回目の出力】
button = Button 4
button = Button 3
button = Button 2
button = Button 1

【2 回目の出力】
button = New Button
button = Button 4
button = Button 3
button = Button 2
button = Button 1

後から追加したウィジェットが先に追加される

youtu.be