deep1.pyΒΆ

open in new tab
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
"""
Example that shows deep nesting of layouts. This also functions as a
test that such deep layouts actually work.
"""

from flexx import app, ui

class Red(ui.Widget):
    CSS = '.flx-Red { background: #ff0000;}'


class Deep1(ui.Widget):
    # This was broken on Chrome earlier

    def init(self):

        with ui.VBox():

            ui.Label(text='Widget in a vbox in a widget in a vbox')

            with ui.VBox(flex=1):
                with ui.Widget(flex=1):
                    with ui.VBox():
                        ui.Label(text='---')
                        Red(flex=1)


class Deep2(ui.Widget):

    def init(self):

        with ui.VBox():

            ui.Label(text='Widget in a vbox in a vbox in a vbox')

            with ui.VBox(flex=1):

                with ui.VBox(flex=1):
                    ui.Label(text='---')
                    Red(flex=1)


class Deep3(ui.Widget):

    def init(self):

        with ui.VBox():

            ui.Label(text='Widget in a vbox in a hbox in a vbox')

            with ui.HBox(flex=1):
                ui.Label(text='|||')

                with ui.VBox(flex=1):
                    ui.Label(text='---')
                    Red(flex=1)


class Deep4(ui.Widget):

    def init(self):

        with ui.HBox():

            ui.Label(text='Widget in a hbox in a widget in a hbox')

            with ui.HBox(flex=1):
                with ui.Widget(flex=1):
                    with ui.HBox():
                        ui.Label(text='|||')
                        Red(flex=1)


class Deep5(ui.Widget):

    def init(self):

        with ui.HBox():

            ui.Label(text='Widget in a hbox in a hbox in a hbox')

            with ui.HBox(flex=1):

                with ui.HBox(flex=1):
                    ui.Label(text='|||')
                    Red(flex=1)


class Deep6(ui.Widget):

    def init(self):

        with ui.HBox():

            ui.Label(text='Widget in a hbox in a vbox in a hbox')

            with ui.VBox(flex=1):
                ui.Label(text='---')

                with ui.HBox(flex=1):
                    ui.Label(text='|||')
                    Red(flex=1)


class Deep(ui.Widget):
    def init(self):

        with ui.HFix():

            with ui.HFix():
                Deep1()
                Deep2()
                Deep3()

            with ui.VFix():
                Deep4()
                Deep5()
                Deep6()


if __name__ == '__main__':
    app.launch(Deep, 'app')
    app.run()