Receber por email
← Voltar para o catálogo

PyWry

PyWry is a cross-platform app factory, rendering engine and UI toolkit for Python that produces native desktop, web, and notebook experiences from a single API.

90estrelas
Atualizado há 4 meses

Ver no GitHub ↗ Licença: Apache-2.0

Como adicionar

/plugin marketplace add deeleeramone/PyWry

O comando exato pode variar conforme o repositório. Confira o README no GitHub.

Para o autor da skill

Cole no README do seu repo

Mostra que sua skill está catalogada na Skillteca, gera backlink e tráfego rastreável.

[![Skillteca](https://www.skillteca.com.br/api/badge/pywry-mpstc0y9/svg)](https://www.skillteca.com.br/skills/pywry-mpstc0y9)

Alerta por categoria

Receba novas skills de Design e Frontend toda segunda

1 email curto, só com as skills novas de Design e Frontend. 4 minutos de leitura, sem spam, cancela com 1 clique.

Você confirma o email no primeiro envio. Sem spam. Cancela com 1 clique.

Ler descrição completa

Interactive Buttons - MANDATORY PATTERN

STOP. READ THIS ENTIRE FILE BEFORE CREATING ANY WIDGET.

The ONLY Correct Way to Create Buttons

Copy this EXACTLY. Do not deviate.

{
  "html": "<div id=\"counter\" style=\"font-size:48px;text-align:center;padding:50px\">0</div>",
  "title": "Counter",
  "height": 400,
  "toolbars": [{
    "position": "top",
    "items": [
      {"type": "button", "label": "+1", "event": "counter:increment", "variant": "primary"},
      {"type": "button", "label": "-1", "event": "counter:decrement", "variant": "neutral"},
      {"type": "button", "label": "Reset", "event": "counter:reset", "variant": "danger"}
    ]
  }]
}

THAT'S IT. No callbacks needed. Buttons work automatically.

How It Works

The event name counter:increment is parsed as:

  • counter → the HTML element id to update
  • increment → the action to perform

When you click "+1", PyWry:

  1. Finds the element with id="counter"
  2. Parses its current text as a number
  3. Adds 1 to it
  4. Updates the display

Supported Actions

| Event Pattern | What It Does | |--------------|--------------| | myId:increment | Adds 1 to element's text | | myId:decrement | Subtracts 1 from element's text | | myId:reset | Sets element's text to 0 | | myId:toggle | Toggles between true/false |

More Examples

Status Toggle

create_widget(
    html='<div id="status" style="font-size:24px;text-align:center">false</div>',
    toolbars=[{
        "position": "top",
        "items": [
            {"type": "button", "label": "Toggle Status", "event": "status:toggle"}
        ]
    }]
)

Score Tracker

create_widget(
    html='''
        <div style="display:flex;justify-content:space-around;padding:20px">
            <div>Home: <span id="home" style="font-size:48px">0</span></div>
            <div>Away: <span id="away" style="font-size:48px">0</span></div>
        </div>
    ''',
    toolbars=[{
        "position": "top",
        "items": [
            {"type": "button", "label": "Home +1", "event": "home:increment"},
            {"type": "button", "label": "Away +1", "event": "away:increment"},
            {"type": "button", "label": "Reset All", "event": "home:reset"},
        ]
    }]
)

Rules

  1. Element id must exist - The HTML must have an element with the matching id
  2. Event format is id:action - Colon separates the target from the action
  3. Actions are lowercase - increment, decrement, reset, toggle
  4. Initial value matters - For increment/decrement, start with a number like "0"

Common Mistakes

❌ Wrong: event: "increment" (no target id) ❌ Wrong: event: "counter-increment" (hyphen instead of colon) ❌ Wrong: HTML has id="Counter" but event is counter:increment (case mismatch)

✅ Correct: event: "counter:increment" with id="counter" in HTML

Compartilhar X LinkedIn