コード例 #1
0
def main(page):

    # simple donut-like pie chart
    chart1 = PieChart(width='50%',
                      inner_radius=40,
                      inner_value=42,
                      points=[
                          Point(color='yellow', value=10),
                          Point(color='green', value=32)
                      ])

    # pie chart with legent
    chart2 = PieChart(width='50%',
                      legend=True,
                      tooltips=True,
                      points=[
                          Point(legend='Free space', value=10, tooltip='10%'),
                          Point(legend='Total space', value=20, tooltip='20%'),
                          Point(legend='Reserved space',
                                value=30,
                                tooltip='30%'),
                          Point(legend='A:', value=20, tooltip='20%'),
                          Point(legend='B:', value=20, tooltip='20%'),
                          Point(legend='C:', value=20, tooltip='20%')
                      ])

    page.add(Text("Donut-like PieChart", size='xLarge'), chart1,
             Text("PieChart with legend and tooltips", size='xLarge'), chart2)
コード例 #2
0
ファイル: chat-ref.py プロジェクト: pglet/pglet-python
 def on_message(user, message):
     if user:
         messages.current.controls.append(Text(f"{user}: {message}"))
     else:
         messages.current.controls.append(
             Text(message, color="#888", size="small", italic=True))
     page.update()
コード例 #3
0
ファイル: test_link.py プロジェクト: pglet/pglet-python
def test_link_with_controls():
    l = Link(
        value="Visit google",
        url="https://google.com",
        pre=True,
        align="right",
        width="100",
        size="large1",
        title="Link title",
        controls=[Text(value="LinkText1"), Text(value="LinkText2")],
    )
    assert isinstance(l, pglet.Control)
    assert isinstance(l, pglet.Link)
    assert l.get_cmd_str() == [
        Command(
            indent=0,
            name=None,
            values=["link"],
            attrs={
                "align": "right",
                "pre": "true",
                "size": "large1",
                "title": "Link title",
                "url": "https://google.com",
                "value": "Visit google",
                "width": "100",
            },
            lines=[],
            commands=[],
        ),
        Command(indent=2, name=None, values=["text"], attrs={"value": "LinkText1"}, lines=[], commands=[]),
        Command(indent=2, name=None, values=["text"], attrs={"value": "LinkText2"}, lines=[], commands=[]),
    ], "Test failed"
コード例 #4
0
def main(page):

    # Fractions BarChart
    chart1 = BarChart(
        data_mode="fraction",
        width="50%",
        tooltips=True,
        points=[
            Point(
                legend="C:", x=20, y=250, x_tooltip="20%", y_tooltip="20 of 250 GB used"
            ),
            Point(legend="D:", x=50, y=250, x_tooltip="50%"),
            Point(legend="E:", x=30, y=250, x_tooltip="30%"),
        ],
    )

    # Percentage BarChart
    chart2 = BarChart(
        data_mode="percentage",
        width="30%",
        tooltips=True,
        points=[
            Point(legend="/disk1", x=20, y=100, color="green"),
            Point(legend="/disk2", x=50, y=100, color="yellow"),
            Point(legend="/disk3", x=90, y=100, color="red"),
        ],
    )

    page.add(
        Text("Fractions BarChart", size="xLarge"),
        chart1,
        Text("Percentage BarChart", size="xLarge"),
        chart2,
    )
コード例 #5
0
def main(page):

    # Vertical chart with textual x axis
    red_point = Point(x='Red', y=20, color='MediumOrchid', legend='Red', y_tooltip='20%')
    simple_chart = VerticalBarChart(tooltips=True, legend=True, width='50%', height=300,
        y_ticks=5, bar_width=20, y_format='{y}%', points=[
            red_point,
            Point(x='Green', y=50, color='LimeGreen', legend='Green', y_tooltip='50%'),
            Point(x='Blue', y=30, color='LightSkyBlue', legend='Blue', y_tooltip='30%')
        ]
    )

    # Vertical chart with numeric x axis
    num_chart = VerticalBarChart(y_ticks=5, y_min=0, y_max=100, y_format='{y}%', 
            width='100%', height=400, bar_width=10)

    page.add(
        Text("Vertical chart with textual x axis", size='xLarge'),
        simple_chart,

        Text("Vertical chart with numeric x axis", size='xLarge'),
        num_chart,
    )

    for v in range(21, 40):
        red_point.y = v
        page.update()
        time.sleep(0.01)

    for i in range(0, 100):
        num_chart.points.append(Point(x=i, y=round(random.random() * 100)))
        if len(num_chart.points) > 30:
            num_chart.points.pop(0)
        page.update()
        time.sleep(0.05)
コード例 #6
0
def test_show_hide(page):
    # open page
    page.add([
        Text(id="ctl1", value="Text1"),
        Text(id="ctl2", value="Text2"),
        Text(id="ctl3", value="Text3")
    ])
    page.hide("ctl1", "ctl2", "ctl3")
コード例 #7
0
def test_remove_list(page):
    # open page
    #page.remove(at=0)

    page.add([
        Text(id="ctl1", value="Text1"),
        Text(id="ctl2", value="Text2"),
        Text(id="ctl3", value="Text3")
    ])
    page.remove("ctl1", "ctl2", "ctl3")
コード例 #8
0
def links():
  return Stack(gap=20, controls=[
    Text("Links", size="xLarge"),
    Link(url='http://google.com', value='Visit Google', new_window=True),
    Link(value='Link without URL', size='large'),
    Link(url='http://google.com', value='Disabled link', disabled=True),
    Link(url='http://google.com', controls=[
        Icon('Globe'),
        Text(' Link with child controls')
    ]),
    link_with_on_click()
  ])
コード例 #9
0
def sliders():
    return Stack(
        width='50%',
        controls=[
            Stack(controls=[
                Text("Horizontal sliders", size="xLarge"),
                Slider(label='Default slider'),
                Slider(label='Default disabled slider', disabled=True),
                Slider(label='Slider with value', show_value=True, value=4),
                Slider(label='Slider with formatted value',
                       show_value=True,
                       min=0,
                       max=100,
                       value=40,
                       value_format='{value}%'),
                Slider(show_value=True,
                       label='Origin from zero',
                       min=-5,
                       max=15,
                       step=1,
                       value=-2),
                slider_with_on_change()
            ]),
            Text("Vertical sliders", size='xLarge'),
            Stack(horizontal=True,
                  height='200px',
                  controls=[
                      Slider(vertical=True, label='Default slider'),
                      Slider(vertical=True,
                             label='Default disabled slider',
                             disabled=True),
                      Slider(vertical=True,
                             label='Slider with value',
                             show_value=True,
                             value=4),
                      Slider(vertical=True,
                             label='Slider with formatted value',
                             show_value=True,
                             min=0,
                             max=100,
                             value=40,
                             value_format='{value}%'),
                      Slider(vertical=True,
                             show_value=True,
                             label='Origin from zero',
                             min=-5,
                             max=15,
                             step=1,
                             value=-2)
                  ])
        ])
コード例 #10
0
def textboxes():
    return Stack(gap=20,
                 controls=[
                     Text("Basic textboxes", size="xLarge"),
                     basic_textboxes(),
                     Text("Multiline textboxes", size="xLarge"),
                     multiline_textboxes(),
                     Text("Underlined and borderless Textboxes",
                          size="xLarge"),
                     underlined_borderless_textboxes(),
                     Text("TextField with prefix and/or suffix",
                          size="xLarge"),
                     suffix_prefix_textboxes()
                 ])
コード例 #11
0
        def on_click(e):

            if e.data in ('1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
                          '.'):
                #start a new sequence in the 'result' textbox
                if self.start_new == True:
                    self.page.set_value('result', e.data)
                    self.start_new = False

                #continue exising sequence in the 'result' textbox
                else:
                    self.page.set_value('result',
                                        self.page.get_value('result') + e.data)

                self.page.append_value(self.history_id, e.data)

            elif e.data == 'C':
                self.page.set_value('result', '0')
                self.operand1 = '0'
                self.operator = '+'
                self.start_new = True
                self.history_id = self.page.add(Text(value='History: ')).id

            elif e.data in ('+', '-', '*', '/'):

                self.page.set_value(
                    'result',
                    calculate(float(self.operand1),
                              float(self.page.get_value('result')),
                              self.operator))
                self.operand1 = self.page.get_value('result')
                self.operator = e.data
                self.start_new = True
                self.page.append_value(self.history_id,
                                       '=' + self.operand1 + self.operator)

            elif e.data == '=':

                self.page.set_value(
                    'result',
                    calculate(float(self.operand1),
                              float(self.page.get_value('result')),
                              self.operator))
                self.operator = '+'
                self.operand1 = '0'
                self.start_new = True
                self.page.append_value(self.history_id,
                                       ' = ' + self.page.get_value('result'))
                self.history_id = self.page.add(Text(value='History: ')).id
コード例 #12
0
ファイル: calc.py プロジェクト: InesaFitsner/pglet_samples
def on_click(e):

    global operand1
    global operator
    global history_id
    global start_new

    if e.data in ('1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '.'):
        #start a new sequence in the 'result' textbox
        if start_new == True:
            page.set_value('result', e.data)
            start_new = False

        #continue exising sequence in the 'result' textbox
        else:
            page.set_value('result', page.get_value('result') + e.data)

        page.append_value(history_id, e.data)

    elif e.data == 'C':
        page.set_value('result', '0')
        operand1 = '0'
        operator = '+'
        start_new = True
        history_id = page.add(Text(value='History: ')).id

    elif e.data in ('+', '-', '*', '/'):

        page.set_value(
            'result',
            calculate(float(operand1), float(page.get_value('result')),
                      operator))
        operand1 = page.get_value('result')
        operator = e.data
        start_new = True
        page.append_value(history_id, '=' + operand1 + operator)

    elif e.data == '=':

        page.set_value(
            'result',
            calculate(float(operand1), float(page.get_value('result')),
                      operator))
        operator = '+'
        operand1 = '0'
        start_new = True
        page.append_value(history_id, ' = ' + page.get_value('result'))
        history_id = page.add(Text(value='History: ')).id
コード例 #13
0
def test_add_text_inside_stack():
    text = Text(id="txt1", value='Hello, "world!"')
    button = Button(text="Super button")
    stack = Stack(id="header", controls=[text, button])

    assert stack.get_cmd_str() == [
        Command(indent=0,
                name=None,
                values=["stack"],
                attrs={"id": ("header", True)},
                lines=[],
                commands=[]),
        Command(
            indent=2,
            name=None,
            values=["text"],
            attrs={
                "value": 'Hello, "world!"',
                "id": ("txt1", True)
            },
            lines=[],
            commands=[],
        ),
        Command(indent=2,
                name=None,
                values=["button"],
                attrs={"text": "Super button"},
                lines=[],
                commands=[]),
    ], "Test failed"
コード例 #14
0
def test_dialog_add():
    d = Dialog(open=True,
               title='Hello',
               sub_text='sub_text1',
               large_header=False,
               auto_dismiss=True,
               width=100,
               max_width=200,
               height=100,
               fixed_top=True,
               blocking=False,
               data='data1',
               controls=[Text(value='Are you sure?')],
               footer=[Button(text='OK'),
                       Button(text="Cancel")])

    assert isinstance(d, pglet.Control)
    assert isinstance(d, pglet.Dialog)
    assert d.get_cmd_str() == (
        'dialog autoDismiss="true" blocking="false" data="data1" fixedTop="true" '
        'height="100" largeHeader="false" maxWidth="200" open="true" subText="sub_text1" '
        'title="Hello" width="100"\n'
        '  text value="Are you sure?"\n'
        '  footer\n'
        '    button text="OK"\n'
        '    button text="Cancel"'), "Test failed"
コード例 #15
0
def test_panel_add():
    p = Panel(
        open=True,
        title="Hello",
        type="small",
        auto_dismiss=True,
        light_dismiss=False,
        width=100,
        blocking=False,
        data="data1",
        controls=[Text(value="Are you sure?")],
        footer=[Button(text="OK"), Button(text="Cancel")],
    )

    assert isinstance(p, pglet.Control)
    assert isinstance(p, pglet.Panel)
    assert p.get_cmd_str() == [
        Command(
            indent=0,
            name=None,
            values=["panel"],
            attrs={
                "autodismiss": "true",
                "blocking": "false",
                "data": "data1",
                "lightdismiss": "false",
                "open": "true",
                "title": "Hello",
                "type": "small",
                "width": "100",
            },
            lines=[],
            commands=[],
        ),
        Command(indent=2,
                name=None,
                values=["text"],
                attrs={"value": "Are you sure?"},
                lines=[],
                commands=[]),
        Command(indent=2,
                name=None,
                values=["footer"],
                attrs={},
                lines=[],
                commands=[]),
        Command(indent=4,
                name=None,
                values=["button"],
                attrs={"text": "OK"},
                lines=[],
                commands=[]),
        Command(indent=4,
                name=None,
                values=["button"],
                attrs={"text": "Cancel"},
                lines=[],
                commands=[]),
    ], "Test failed"
コード例 #16
0
def main(page):
    page.add(
        Text("Indeterminate Progress", size='xLarge'),
        Progress("Operation progress",
                 description="Doing something indefinite...",
                 width='50%'))

    prog1 = Progress("Copying file1.txt to file2.txt", value=0, width='50%')
    page.add(Text("Default Progress", size='xLarge'), prog1)

    for i in range(0, 101):
        prog1.value = i
        prog1.update()
        time.sleep(0.005)

    prog2 = Progress("Provisioning your account", value=0, width='50%')
    page.add(prog2)

    prog2.description = "Preparing environment..."
    prog2.value = 0
    prog2.update()
    time.sleep(2)

    prog2.description = "Collecting information..."
    prog2.value = 20
    prog2.update()
    time.sleep(2)

    prog2.description = "Creatring database entities..."
    prog2.value = 40
    prog2.update()
    time.sleep(2)

    prog2.description = "Verifying the data..."
    prog2.value = 60
    prog2.update()
    time.sleep(2)

    prog2.description = "Finishing the process, almost done..."
    prog2.value = 80
    prog2.update()
    time.sleep(2)

    prog2.description = "Your account has been created!"
    prog2.value = 100
    prog2.update()
コード例 #17
0
def test_link_with_controls():
    l = Link(value='Visit google',
             url='https://google.com',
             pre=True,
             align='right',
             width='100',
             size='large1',
             title='Link title',
             controls=[Text(value='LinkText1'),
                       Text(value='LinkText2')])
    assert isinstance(l, pglet.Control)
    assert isinstance(l, pglet.Link)
    assert l.get_cmd_str() == (
        'link align="right" pre="true" size="large1" title="Link title" '
        'url="https://google.com" value="Visit google" width="100"\n'
        '  text value="LinkText1"\n'
        '  text value="LinkText2"'), "Test failed"
コード例 #18
0
def checkbox_with_on_change():
    def checkbox_changed(e):
        t.value = f"Checkbox value changed to {c.value}"
        stack.update()

    c = Checkbox('Checkbox with on_change event', on_change=checkbox_changed)
    t = Text()
    stack = Stack(controls=[c, t])
    return stack
コード例 #19
0
def say_hello_click(e):
    name = page.get_value(txt)
    if name == "":
        txt.error_message = "Name cannot be blank"
        btn.text = "Say it again!"
        page.update(txt, btn)
    else:
        page.remove(txt, btn)
        page.add(Text(value=f'Hello, {name}!'), at=0)
コード例 #20
0
    def on_click(e):
        # we get the entered text
        name = page.get_value(txt_name)

        # then cleaning the page
        page.clean()

        # and adding the text with our greeting
        page.add(Text(f"Hello, {name}!"))
コード例 #21
0
 def get_stack_controls(search_name):
     stack_controls = []
     found_icon_names = search_icons(search_name)
     for icon_name in found_icon_names:
         s = Stack(controls=[
             Icon(name = icon_name),
             Text(value = icon_name)
         ])
         stack_controls.append(s)
     return stack_controls
コード例 #22
0
def textbox_with_onchange():
    def textbox_changed(e):
        displayed_text.value = entered_text.value
        stack.update()

    entered_text = Textbox(label='With onchange event',
                           on_change=textbox_changed)
    displayed_text = Text()
    stack = Stack(controls=[entered_text, displayed_text])
    return stack
コード例 #23
0
 def create_horizontal_stack(horiz_align):
     return Stack(controls=[
         Text(value=horiz_align),
         Stack(horizontal=True,
               horizontal_align=horiz_align,
               vertical_align='center',
               gap=20,
               bgcolor=bg_color,
               controls=items(3))
     ])
コード例 #24
0
def slider_with_on_change():
    def slider_changed(e):
        s.data += 1
        t.value = f"Slider changed to {int(s.value)}"
        stack.update()

    s = Slider('Slider with Change event', on_change=slider_changed, data=0)
    t = Text()
    stack = Stack(controls=[s, t])
    return stack
コード例 #25
0
def searchbox_with_change():
    def searchbox_changed(e):
        t.value = f'You have searched for {sb.value}.'
        stack.update()

    sb = SearchBox(placeholder='Search something...',
                   on_change=searchbox_changed)
    t = Text()
    stack = Stack(controls=[sb, t])
    return stack
コード例 #26
0
 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
                             ),
                         ],
                     ),
                 ],
             ),
         ],
     )
コード例 #27
0
def message_with_on_dismiss():
    def message_dismissed(e):
        t.value = "Message dismissed!"
        stack.update()

    m = Message(value='Message with on_dismiss event',
                dismiss=True,
                on_dismiss=message_dismissed)
    t = Text()
    stack = Stack(controls=[m, t])
    return stack
コード例 #28
0
 def create_vertical_stack(vert_align):
     return Stack(width='20%',
                  controls=[
                      Text(value=vert_align),
                      Stack(vertical_align=vert_align,
                            horizontal_align='center',
                            height=300,
                            gap=20,
                            bgcolor=bg_color,
                            controls=items(3))
                  ])
コード例 #29
0
def test_text_double_quotes():
    c = Text(value='Hello, "world!"')
    # raise Exception(c.get_cmd_str())
    assert c.get_cmd_str() == [
        Command(indent=0,
                name=None,
                values=["text"],
                attrs={"value": 'Hello, "world!"'},
                lines=[],
                commands=[])
    ], "Test failed"
コード例 #30
0
def checkboxes():
    return Stack(gap=20,
                 controls=[
                     Text("Checkboxes", size="xLarge"),
                     Checkbox(label='Unchecked checkbox', value=False),
                     Checkbox(label='Checked checkbox', value=True),
                     Checkbox(label='Disabled checkbox', disabled=True),
                     Checkbox(label="Checkbox with rendered box_side='End'",
                              box_side='End'),
                     checkbox_with_on_change()
                 ])