コード例 #1
0
class TodoApp():
    def __init__(self):
        self.tasks = []
        self.new_task = Textbox(placeholder='Whats needs to be done?',
                                width='100%')
        self.tasks_view = Stack()

        # application's root control (i.e. "view") containing all other controls
        self.view = Stack(width='70%',
                          controls=[
                              Stack(horizontal=True,
                                    on_submit=self.add_clicked,
                                    controls=[
                                        self.new_task,
                                        Button('Add',
                                               on_click=self.add_clicked)
                                    ]), self.tasks_view
                          ])

    def add_clicked(self, e):
        task = Task(self, self.new_task.value)
        self.tasks.append(task)
        self.tasks_view.controls.append(task.view)
        self.new_task.value = ''
        self.view.update()

    def delete_task(self, task):
        self.tasks.remove(task)
        self.tasks_view.controls.remove(task.view)
        self.view.update()
コード例 #2
0
class Task:
    def __init__(self, app, name):
        self.app = app
        self.display_task = Checkbox(
            value=False, label=name, on_change=self.status_changed
        )
        self.edit_name = Textbox(width="100%")
        self.display_view = Stack(
            horizontal=True,
            horizontal_align="space-between",
            vertical_align="center",
            controls=[
                self.display_task,
                Stack(
                    horizontal=True,
                    gap="0",
                    controls=[
                        Button(
                            icon="Edit", title="Edit todo", on_click=self.edit_clicked
                        ),
                        Button(
                            icon="Delete",
                            title="Delete todo",
                            on_click=self.delete_clicked,
                        ),
                    ],
                ),
            ],
        )
        self.edit_view = Stack(
            visible=False,
            horizontal=True,
            horizontal_align="space-between",
            vertical_align="center",
            controls=[self.edit_name, Button(text="Save", on_click=self.save_clicked)],
        )
        self.view = Stack(controls=[self.display_view, self.edit_view])

    def edit_clicked(self, e):
        self.edit_name.value = self.display_task.label
        self.display_view.visible = False
        self.edit_view.visible = True
        self.view.update()

    def save_clicked(self, e):
        self.display_task.label = self.edit_name.value
        self.display_view.visible = True
        self.edit_view.visible = False
        self.view.update()

    def delete_clicked(self, e):
        self.app.delete_task(self)

    def status_changed(self, e):
        self.app.update()
コード例 #3
0
class Task():
    def __init__(self, app, name):
        self.app = app
        self.display_task = Checkbox(value=False,
                                     label=name,
                                     on_change=self.status_changed)
        self.edit_name = Textbox(width='100%')
        self.display_view = Stack(
            horizontal=True,
            horizontal_align='space-between',
            vertical_align='center',
            controls=[
                self.display_task,
                Stack(horizontal=True,
                      gap='0',
                      controls=[
                          Button(icon='Edit',
                                 title='Edit todo',
                                 on_click=self.edit_clicked),
                          Button(icon='Delete',
                                 title='Delete todo',
                                 on_click=self.delete_clicked)
                      ]),
            ])
        self.edit_view = Stack(visible=False,
                               horizontal=True,
                               horizontal_align='space-between',
                               vertical_align='center',
                               controls=[
                                   self.edit_name,
                                   Button(text='Save',
                                          on_click=self.save_clicked)
                               ])
        self.view = Stack(controls=[self.display_view, self.edit_view])

    def edit_clicked(self, e):
        self.edit_name.value = self.display_task.label
        self.display_view.visible = False
        self.edit_view.visible = True
        self.view.update()

    def save_clicked(self, e):
        self.display_task.label = self.edit_name.value
        self.display_view.visible = True
        self.edit_view.visible = False
        self.view.update()

    def delete_clicked(self, e):
        self.app.delete_task(self)

    def status_changed(self, e):
        self.app.update()
コード例 #4
0
class TodoApp():
    def __init__(self):
        self.tasks = []
        self.new_task = Textbox(placeholder='Whats needs to be done?', width='100%')
        self.tasks_view = Stack()

        self.filter = Tabs(value='all', on_change=self.tabs_changed, tabs=[
                Tab(text='all'),
                Tab(text='active'),
                Tab(text='completed')])

        self.view = Stack(width='70%', controls=[
            Text(value='Todos', size='large', align='center'),
            Stack(horizontal=True, on_submit=self.add_clicked, controls=[
                self.new_task,
                Button(primary=True, text='Add', on_click=self.add_clicked)]),
            Stack(gap=25, controls=[
                self.filter,
                self.tasks_view
            ])
        ])

    def update(self):
        status = self.filter.value
        for task in self.tasks:
            task.view.visible = (status == 'all'
                or (status == 'active' and task.display_task.value == False)
                or (status == 'completed' and task.display_task.value))
        self.view.update()

    def add_clicked(self, e):
        task = Task(self, self.new_task.value)
        self.tasks.append(task)
        self.tasks_view.controls.append(task.view)
        self.new_task.value = ''
        self.update()

    def delete_task(self, task):
        self.tasks.remove(task)
        self.tasks_view.controls.remove(task.view)
        self.update()

    def tabs_changed(self, e):
        self.update()        
コード例 #5
0
class TodoApp():
    def __init__(self):
        self.tasks = []
        self.new_task = Textbox(placeholder='Whats needs to be done?',
                                width='100%')
        self.tasks_view = Stack()
        self.filter = Tabs(
            value='all',
            on_change=self.tabs_changed,
            tabs=[Tab(text='all'),
                  Tab(text='active'),
                  Tab(text='completed')])
        self.items_left = Text('0 items left')
        self.view = Stack(
            width='70%',
            controls=[
                Text(value='Todos', size='large', align='center'),
                Stack(horizontal=True,
                      on_submit=self.add_clicked,
                      controls=[
                          self.new_task,
                          Button(primary=True,
                                 text='Add',
                                 on_click=self.add_clicked)
                      ]),
                Stack(gap=25,
                      controls=[
                          self.filter, self.tasks_view,
                          Stack(horizontal=True,
                                horizontal_align='space-between',
                                vertical_align='center',
                                controls=[
                                    self.items_left,
                                    Button(text='Clear completed',
                                           on_click=self.clear_clicked)
                                ])
                      ])
            ])

    def update(self):
        status = self.filter.value
        count = 0
        for task in self.tasks:
            task.view.visible = (
                status == 'all'
                or (status == 'active' and task.display_task.value == False)
                or (status == 'completed' and task.display_task.value))
            if task.display_task.value == False:
                count += 1
        self.items_left.value = f"{count} active item(s) left"
        self.view.update()

    def add_clicked(self, e):
        task = Task(self, self.new_task.value)
        self.tasks.append(task)
        self.tasks_view.controls.append(task.view)
        self.new_task.value = ''
        self.update()

    def delete_task(self, task):
        self.tasks.remove(task)
        self.tasks_view.controls.remove(task.view)
        self.update()

    def tabs_changed(self, e):
        self.update()

    def clear_clicked(self, e):
        for task in self.tasks[:]:
            if task.display_task.value == True:
                self.delete_task(task)
コード例 #6
0
ファイル: autoscroll.py プロジェクト: pglet/pglet-python
    page.i += 1
    st.controls.append(
        Stack(
            horizontal=True,
            vertical_align="center",
            controls=[
                Image(
                    src=
                    "https://avatars.githubusercontent.com/u/5041459?s=88&v=4",
                    width=30,
                    height=30,
                    border_radius=15,
                    fit="contain",
                ),
                Text(f"Line {page.i}"),
            ],
        ))
    st.update()


page.add(scroll_box,
         Button("Add line", primary=True, focused=True, on_click=add_click))

for i in range(0, 10):
    st.controls.append(Text(f"Line {i}"))
    st.update()

page.i = i

input()
コード例 #7
0
class TodoApp:
    def __init__(self):
        self.tasks = []
        self.new_task = Textbox(placeholder="Whats needs to be done?", width="100%")
        self.tasks_view = Stack()
        self.filter = Tabs(
            value="all",
            on_change=self.tabs_changed,
            tabs=[Tab(text="all"), Tab(text="active"), Tab(text="completed")],
        )
        self.items_left = Text("0 items left")
        self.view = Stack(
            width="70%",
            controls=[
                Text(value="Todos", size="large", align="center"),
                Stack(
                    horizontal=True,
                    on_submit=self.add_clicked,
                    controls=[
                        self.new_task,
                        Button(primary=True, text="Add", on_click=self.add_clicked),
                    ],
                ),
                Stack(
                    gap=25,
                    controls=[
                        self.filter,
                        self.tasks_view,
                        Stack(
                            horizontal=True,
                            horizontal_align="space-between",
                            vertical_align="center",
                            controls=[
                                self.items_left,
                                Button(
                                    text="Clear completed", on_click=self.clear_clicked
                                ),
                            ],
                        ),
                    ],
                ),
            ],
        )

    def update(self):
        status = self.filter.value
        count = 0
        for task in self.tasks:
            task.view.visible = (
                status == "all"
                or (status == "active" and task.display_task.value == False)
                or (status == "completed" and task.display_task.value)
            )
            if task.display_task.value == False:
                count += 1
        self.items_left.value = f"{count} active item(s) left"
        self.view.update()

    def add_clicked(self, e):
        task = Task(self, self.new_task.value)
        self.tasks.append(task)
        self.tasks_view.controls.append(task.view)
        self.new_task.value = ""
        self.update()

    def delete_task(self, task):
        self.tasks.remove(task)
        self.tasks_view.controls.remove(task.view)
        self.update()

    def tabs_changed(self, e):
        self.update()

    def clear_clicked(self, e):
        for task in self.tasks[:]:
            if task.display_task.value == True:
                self.delete_task(task)