Metadata-Version: 2.5
Name: readymade
Version: 0.0.2rc1
Summary: Visual Basic-style forms for Python: draw a form, double-click to write its code, press F5
Author: Joseph E. Coleman
License-Expression: MIT
License-File: LICENSE
Keywords: form designer,gui,ide,python,rad,tkinter,visual basic
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Environment :: MacOS X
Classifier: Environment :: Win32 (MS Windows)
Classifier: Environment :: X11 Applications
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: End Users/Desktop
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Software Development :: Code Generators
Classifier: Topic :: Software Development :: User Interfaces
Requires-Python: >=3.11
Provides-Extra: ide
Requires-Dist: jedi>=0.19; extra == 'ide'
Requires-Dist: pillow>=10.1; extra == 'ide'
Requires-Dist: pygments>=2.15; extra == 'ide'
Description-Content-Type: text/markdown

# readymade

**readymade** is a Python language version of a classic VB style coding experience. 
This is for small tools that might need a user interface.  You draw on a form,
double-click a button to write its code, press F5 to run.  **readymade** aims to
leave almost no time between having an idea and running the program.

> Still early: readymade is a pre-alpha. It works, and it's changing quickly.

## What it does

- **A form designer.** Draw controls from the Toolbox (Label, TextBox, Button,
  CheckBox, OptionButton, ComboBox, ListBox, Frame, Image, Canvas, Timer), then set
  their properties in the Properties panel. Align and size them with the Format menu,
  design menus in the Menu Editor, and set the tab order by clicking.
- **Double-click to code.** Double-clicking a control takes you to its event handler,
  written for you as a method named after it: `Button1_click`, `Form_load`.
- **F5 to run.** While your program runs, the Immediate window runs Python inside it.
  A run-time error takes you to the line that failed.
- **Plain Python.** A form is two files: a `.form` file (JSON, for the layout) and a
  `.py` file (your code).  One can run the form directly with python without starting
  the IDE by running just the python file, `python path/to/Form.py`.
- **Projects.** A project has a `pyproject.toml`, its own virtual environment and
  libraries (Project > Add Library), linting and formatting with the tools you choose,
  and Make EXE (via PyInstaller), which turns it into a program that runs without Python.
- **The toolkit is Tkinter**, which comes with Python, so programs need nothing else
  installed. Pillow, if you add it to a project, opens more picture formats and lets
  programs draw on pictures.

```python
from readymade import Form, msgbox


class Form1(Form):
    def Button1_click(self):
        name = self.TextBox1.text.strip() or "World"
        msgbox(f"Hello, {name}!")


if __name__ == "__main__":
    Form1.run()
```

## Install and start

readymade needs Python 3.11 or later, with Tkinter (Python's Windows and macOS
installers include it; on Linux it may be a separate package, like `python3-tk`).

```
python -m pip install "readymade[ide]"
readymade my-first-project
```

`readymade` opens the IDE, creating the project folder if it doesn't exist
(`python -m readymade.ide` does the same). The `ide` extra adds syntax coloring
(Pygments), completion with Go to Definition (Jedi), and JPEG and other pictures in
the designer (Pillow). The IDE works without them. A program that uses Pillow, to
show those pictures or draw on them, needs it in its own project too
(Project > Add Library), so that Make EXE includes it.

Press F1 in the IDE for help on whatever you're working on.

## Disclosure

I used Claude. 

## License

MIT. See [LICENSE](LICENSE).
