atlastk


Nameatlastk JSON
Version 0.13.3 PyPI version JSON
download
home_pagehttps://atlastk.org
SummaryWorld's lightest toolkit to quickly and easily add a GUI to your Python programs and bring them online.
upload_time2023-09-11 13:32:01
maintainer
docs_urlNone
authorClaude SIMON
requires_python
license
keywords gui web atlas toolkit
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            > **Cyberaddiction, cyberbullying, pedocriminality…: [*Zelbinium*](https://q37.info/s/sqtv9trv), to prevent the risks related to smartphone use!**

# *Python* version of the *Atlas* toolkit

[![Run on Repl.it](https://q37.info/s/kpm7xhfm.png)](https://q37.info/s/vwpsw73v)  [![About online demonstrations](https://img.shields.io/badge/about-online%20demonstrations-informational)](https://q37.info/s/sssznrb4)

[![Version 0.13](https://img.shields.io/static/v1.svg?&color=90b4ed&label=Version&message=0.13&style=for-the-badge)](http://github.com/epeios-q37/atlas-python/)
[![license: MIT](https://img.shields.io/github/license/epeios-q37/atlas-python?color=yellow&style=for-the-badge)](https://github.com/epeios-q37/atlas-python/blob/master/LICENSE)
[![Documentation](https://img.shields.io/static/v1?label=documentation&message=atlastk.org&color=ff69b4&style=for-the-badge)](https://atlastk.org)  

[![Version](https://img.shields.io/pypi/v/atlastk?style=for-the-badge&color=90b4ed&label=PyPi)](http://q37.info/s/9srmskcm)

<!--
Si la table ci-dessous est modifiée, alors modifier également (pages du site atlastk.org) :
- la page '_index' ;
-->

> The [*Atlas* toolkit](https://atlastk.org) is available for:
> | Language / Demo | Repository | Popularity | Vidéo |
> |:-:|:-:|:-:|:-:|
> | [![Java](https://q37.info/s/jrnv4mj4.svg)](https://q37.info/s/qtnkp9w4)<br/>[![Run on Replit](https://q37.info/s/kpm7xhfm.png)](https://q37.info/s/3vwk3h3n) | [![Framagit](https://q37.info/s/z4hsg7wc.svg)](https://framagit.org/epeios-q37/atlas-java) [![GitHub](https://q37.info/s/jqrxkdh3.svg)](https://github.com/epeios-q37/atlas-java)<br/>[![GitLab](https://q37.info/s/m4djpmm9.svg)](https://gitlab.com/epeios-q37/atlas-java) | [![Stars for atlas-java](https://img.shields.io/github/stars/epeios-q37/atlas-java.svg?style=social)](https://github.com/epeios-q37/atlas-java/stargazers)<br/>[![GitHub forks for atlas-java](https://img.shields.io/github/forks/epeios-q37/atlas-java.svg?style=social)](https://github.com/epeios-q37/atlas-java/network/) | [![PeerTube](https://q37.info/s/dsvp4n7j.svg)](https://q37.info/s/qs4dx4rm)<br/>[![YouTube](https://q37.info/s/xgq4zgdr.svg)](https://q37.info/s/vd9xz7jp) |
> | [![Node.js](https://q37.info/s/fh7v7kn9.svg)](https://q37.info/s/3d7hr733)<br/>[![Run on Replit](https://q37.info/s/kpm7xhfm.png)](https://q37.info/s/st7gccd4) | [![Framagit](https://q37.info/s/z4hsg7wc.svg)](https://framagit.org/epeios-q37/atlas-node) [![GitHub](https://q37.info/s/jqrxkdh3.svg)](https://github.com/epeios-q37/atlas-node)<br/>[![GitLab](https://q37.info/s/m4djpmm9.svg)](https://gitlab.com/epeios-q37/atlas-node) | [![Stars for atlas-node](https://img.shields.io/github/stars/epeios-q37/atlas-node.svg?style=social)](https://github.com/epeios-q37/atlas-node/stargazers)<br/>[![GitHub forks for atlas-node](https://img.shields.io/github/forks/epeios-q37/atlas-node.svg?style=social)](https://github.com/epeios-q37/atlas-node/network/) | [![PeerTube](https://q37.info/s/dsvp4n7j.svg)](https://q37.info/s/9wtsrwqw)<br/>[![YouTube](https://q37.info/s/xgq4zgdr.svg)](https://q37.info/s/4pcpvrhz) |
> | [![Perl](https://q37.info/s/hgnwnnn3.svg)](https://q37.info/s/4nvmwjgg)<br/>[![Run on Replit](https://q37.info/s/kpm7xhfm.png)](https://q37.info/s/h3h34zgq) | [![Framagit](https://q37.info/s/z4hsg7wc.svg)](https://framagit.org/epeios-q37/atlas-perl) [![GitHub](https://q37.info/s/jqrxkdh3.svg)](https://github.com/epeios-q37/atlas-perl)<br/>[![GitLab](https://q37.info/s/m4djpmm9.svg)](https://gitlab.com/epeios-q37/atlas-perl) | [![Stars for atlas-perl](https://img.shields.io/github/stars/epeios-q37/atlas-perl.svg?style=social)](https://github.com/epeios-q37/atlas-perl/stargazers)<br/>[![GitHub forks for atlas-perl](https://img.shields.io/github/forks/epeios-q37/atlas-perl.svg?style=social)](https://github.com/epeios-q37/atlas-perl/network/) | [![PeerTube](https://q37.info/s/dsvp4n7j.svg)](https://q37.info/s/bvvjj7gk)<br/>[![YouTube](https://q37.info/s/xgq4zgdr.svg)](https://q37.info/s/3g7zdnp7) |
> | [![Python](https://q37.info/s/94937nbb.svg)](https://q37.info/s/pd7j9k4r)<br/>[![Run on Replit](https://q37.info/s/kpm7xhfm.png)](https://q37.info/s/vwpsw73v) | [![Framagit](https://q37.info/s/z4hsg7wc.svg)](https://framagit.org/epeios-q37/atlas-python) [![GitHub](https://q37.info/s/jqrxkdh3.svg)](https://github.com/epeios-q37/atlas-python)<br/>[![GitLab](https://q37.info/s/m4djpmm9.svg)](https://gitlab.com/epeios-q37/atlas-python) | [![Stars for atlas-python](https://img.shields.io/github/stars/epeios-q37/atlas-python.svg?style=social)](https://github.com/epeios-q37/atlas-python/stargazers)<br/>[![GitHub forks for atlas-python](https://img.shields.io/github/forks/epeios-q37/atlas-python.svg?style=social)](https://github.com/epeios-q37/atlas-python/network/) | [![PeerTube](https://q37.info/s/dsvp4n7j.svg)](https://q37.info/s/qfcng9j4)<br/>[![YouTube](https://q37.info/s/xgq4zgdr.svg)](https://q37.info/s/rt9wr4w3) |
> | [![Ruby](https://q37.info/s/zn4qrx9j.svg)](https://q37.info/s/gkfj3zpz)<br/>[![Run on Replit](https://q37.info/s/kpm7xhfm.png)](https://q37.info/s/9thdtmjg) | [![Framagit](https://q37.info/s/z4hsg7wc.svg)](https://framagit.org/epeios-q37/atlas-ruby) [![GitHub](https://q37.info/s/jqrxkdh3.svg)](https://github.com/epeios-q37/atlas-ruby)<br/>[![GitLab](https://q37.info/s/m4djpmm9.svg)](https://gitlab.com/epeios-q37/atlas-ruby) | [![Stars for atlas-ruby](https://img.shields.io/github/stars/epeios-q37/atlas-ruby.svg?style=social)](https://github.com/epeios-q37/atlas-ruby/stargazers)<br/>[![GitHub forks for atlas-ruby](https://img.shields.io/github/forks/epeios-q37/atlas-ruby.svg?style=social)](https://github.com/epeios-q37/atlas-ruby/network/) | [![PeerTube](https://q37.info/s/dsvp4n7j.svg)](https://q37.info/s/fj3trgds)<br/>[![YouTube](https://q37.info/s/xgq4zgdr.svg)](https://q37.info/s/zgb4d9v3) |


<ins>***WebGPIO* (*Raspberry Pi*/*ODROID-C2*)**</ins>: the *WebGPIO* application, with which you can control the *Raspberry Pi*/*ODROID-C2* (and probably other similar devices) GPIOs with your smartphone, is described in the *Raspberry Pi*/*ODROID-C2* below section.



---

## A GUI with *Python* in a couple of minutes

Click the animation to see a screencast of programming this ["Hello, World!" program](https://en.wikipedia.org/wiki/%22Hello,_World!%22_program) with *Python* in a matter of minutes:

[![Building a GUI in with *Python* in less then 10 minutes](https://q37.info/s/qp4z37pg.gif)](https://q37.info/s/rt9wr4w3)

Same video on [*Peertube*](https://en.wikipedia.org/wiki/PeerTube): <https://q37.info/s/qfcng9j4>.

Source code:

```python
import atlastk

BODY = """
<fieldset>
 <input id="Input" xdh:onevent="Submit" value="World"/>
 <button xdh:onevent="Submit">Hello</button>
 <hr/>
 <fieldset>
  <output id="Output">Greetings displayed here!</output>
 </fieldset>
</fieldset>
"""

def acConnect(dom):
  dom.inner("", BODY)
  dom.focus("Input")

def acSubmit(dom):
  name = dom.getValue("Input")
  dom.begin("Output", f"<div>Hello, {name}!</div>")
  dom.setValue("Input", "")
  dom.focus("Input")

CALLBACKS = {
  "": acConnect,
  "Submit": acSubmit
}

atlastk.launch(CALLBACKS)
```

### See for yourself right now - it's quick and easy!

#### Online, with nothing to install

To run above "Hello, World!" program directly in your browser, as seen in corresponding video, follow this link: <https://replit.com/@AtlasTK/hello-python>.

Thanks to [*Replit*](https://q37.info/s/mxmgq3qm), an [online IDE](https://q37.info/s/zzkzbdw7), you can write and run programs using the *Atlas* toolkit directly in your web browser, without having to install *Python* on your computer [![About online demonstrations](https://img.shields.io/badge/about-online%20demonstrations-informational)](https://q37.info/s/sssznrb4).

To see more examples, like the following [*TodoMVC*](http://todomvc.com/), simply:
- go [here](https://q37.info/s/vwpsw73v) (also accessible with the [![Run on Repl.it](https://q37.info/s/kpm7xhfm.png)](https://q37.info/s/vwpsw73v) button at the top of this page),
- click on the green `Run` button,
- choose the *Python* entry (this clones the corresponding *GitHub* repository),
- choose the demonstration to launch,
- wait for the application to open, 
- … and, as you wish, fork the *Replit* repository and run your own tests directly in your browser, by modifying the code of the examples or by writing your own code.

[![TodoMVC](https://q37.info/download/TodoMVC.gif "The TodoMVC application made with the Atlas toolkit")](https://q37.info/s/vwpsw73v)

#### With *Python* on your computer

```shell
# You can replace 'github.com' with 'framagit.org' or 'gitlab.com'.
# DON'T copy/paste this and above line!
git clone http://github.com/epeios-q37/atlas-python
cd atlas-python/examples
python Hello/
```

## *Android* devices

Programs made with the *Atlas* toolkit work perfectly on your [*Android*](https://en.wikipedia.org/wiki/Android_(operating_system)) devices (smartphone or tablet) using the [*Termux*](https://termux.com/) application. Simply install (``pkg intall …``) the *git* and *python* packages. That's all!

## *Jupyter* notebooks

When using the *Atlas* toolkit in a [*Jupyter* notebook](https://en.wikipedia.org/wiki/Project_Jupyter#Jupyter_Notebook), the GUI is embedded in the notebook, as shown here:

![](https://q37.info/s/f7qqvhs3.gif)

*Jupyter* notebook examples can be found in the *tutorials* directory.

## Your turn

If you want to take your code to the next level, from [CLI](https://q37.info/s/cnh9nrw9) to [GUI](https://q37.info/s/hw9n3pjs), then you found the right toolkit.

With the [*Atlas* toolkit](http://atlastk.org/), you transform your programs in modern web applications ([*SPA*](https://q37.info/s/7sbmxd3j)) without the usual hassles:
- no *JavaScript* to write; only *HTML*(/*CSS*) and *Python*,
- no [front and back end architecture](https://q37.info/s/px7hhztd) to bother with,
- no [web server](https://q37.info/s/n3hpwsht) (*Apache*, *Nginx*…) to install,
- no need to deploy your application on a remote server,
- no incoming port to open on your internet box or routeur.

The *Atlas* toolkit is written in pure *Python*, with no native code and no dependencies, allowing the *Atlas* toolkit to be used on all environments where *Python* is available. 

And simply by running them on a local computer connected to internet, applications using the *Atlas* toolkit will be accessible from the entire internet on laptops, smartphones, tablets…

The *Atlas* toolkit is particularly well suited for educational purposes, to write modern programming exercises, i.e. with a true graphical interface instead of the usual outdated textual one. More about this can be found [here](https://q37.info/s/cbms43s9).

*Python* is much more powerful then *Excel* macros to automate (boring) tasks, and you can also work with *PDF*, *Word*, *Google* files…. And with the *Atlas* toolkit, you have much more possibilities then with *VBA* forms. There are some examples [here](https://q37.info/s/97p44nh4).  

There is also a stub to for this library at address <https://q37.info/s/zzcn3wnx>.

> You will also find programs from [*The Big Book of Small Python Projects*](https://inventwithpython.com/bigbookpython/) by [Al Sweigart](http://alsweigart.com) to which a graphical user interface using the *Atlas* toolkit were added in this repository: [epeios-q37/AlSweigartTheBigBookPython](https://q37.info/s/kd3bwchj).

## Content of the repository

The `atlastk` directory contains the *Python* source code of the *Atlas* toolkit, which is the directory you have to reference in `PYTHONPATH` in order to use the *Atlas* toolkit in your own program, unless you have installed the [*atlastk* package](http://q37.info/s/9srmskcm) (`pip install atlastk`…).

You can also retrieve the `atlastk.zip` file, and add to your source code :

```python
__import__("sys").path.append("<path to>/atlastk.zip")

import atlastk
```

If the `atlastk.zip` file is in the current folder, replace `<path-to>/atlastk.zip` with `./atlastk.zip` and not only `atlastk.zip`.

In the `examples` directory, you will found following examples:

- `Blank`: very basic example,
- `Hello`: ["*Hello, World!*"](https://en.wikipedia.org/wiki/%22Hello,_World!%22_program),
- `Chatroom`: multi-user chatroom,
- `Notes`: note taking program,
- `TodoMVC`: [*TodoMVC*](http://todomvc.com/),
- `Hangman`: [Hangman game](http://q37.info/s/gtdtk4hp),
- `15-puzzle`: [15-puzzle game](https://q37.info/s/jn9zg3bn),
- `Contacts`: a basic address book, 
- `Widgets`: some widgets handled with the *Atlas* toolkit,
- `Chatrooms` : same as above `Chatroom`, but with several rooms,
- `PigGame`: [Pig game](https://en.wikipedia.org/wiki/Pig_(dice_game)) for one or two players,
- `Reversi`: [*Reversi* game](http://q37.info/s/zz3dzmf7) for one or two players,
- `MatPlotLib` : the *Atlas* toolkit displaying some graphics made with [*matplotlib*](https://matplotlib.org/); this example needs, of course, the *matplotlib* package to be installed…

Other examples are detailed in the next section.

Except for the *ErgoJr*, *GPIO* and *RGB* applications, which are detailed in the next section, to run an example, launch, from within the `examples` directory, `python <Name>/` (don't forget the final `/`), where `<Name>` is the name of the example (`Blank`, `Chatroom`…).

The *Stars* application is an example where the *Atlas* *toolkit* is used to control a [*Pygame*](https://en.wikipedia.org/wiki/Pygame) based application. Of course, *Pygame* needs to be installed.

The `tutorials` directory contains some [*Jupyter* notebooks](https://en.wikipedia.org/wiki/Project_Jupyter#Jupyter_Notebook) about  the *Atlas* *toolkit*.

## *Raspberry Pi*/*ODROID-C2*

**If the applications does not work on your *Raspberry Pi*, please see this issue: <https://github.com/epeios-q37/atlas-python/issues/1>**

The *GPIO* and *RGB* applications are designed to be used on a *Raspberry Pi* or a *ODROID-C2*.

Here is how the *WebGPIO* application looks like:

![*WebGPIO* interface](https://q37.info/s/htkhqb9x.png)

For the *Raspberry Pi*, the `RPi.GPIO` *Python* module have to be installed (this is probably already the case).

For the *ODROID-C2*, The *Python* version of *WiringPi* must be installed, and the application has to be launched, from within the `examples` directory, with `sudo` (`sudo python GPIO/` or `sudo python RGB/`).

The *ErgoJr* application is experimental and to control a *Poppy* *Ergo Jr* robot.

The *RGB* application is dedicated to the control of a RGB led, and the *GPIO* (aka *WebGPIO*) application allows to control the basic pins. Click below picture to see a *YouTube* video on how they work (same video on [*PeerTube*](https://en.wikipedia.org/wiki/PeerTube): <https://q37.info/s/49pbmwv9>):

[![RGB video](https://img.youtube.com/vi/C4p2iX6gc-Q/0.jpg)](https://www.youtube.com/watch?v=C4p2iX6gc-Q)





            

Raw data

            {
    "_id": null,
    "home_page": "https://atlastk.org",
    "name": "atlastk",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "GUI,web,Atlas toolkit",
    "author": "Claude SIMON",
    "author_email": "",
    "download_url": "https://files.pythonhosted.org/packages/7e/3c/494f0d00dbb145afe88cbdb2e5365df894eff44d7ebef1c056c2eceed126/atlastk-0.13.3.tar.gz",
    "platform": null,
    "description": "> **Cyberaddiction, cyberbullying, pedocriminality\u2026: [*Zelbinium*](https://q37.info/s/sqtv9trv), to prevent the risks related to smartphone use!**\n\n# *Python* version of the *Atlas* toolkit\n\n[![Run on Repl.it](https://q37.info/s/kpm7xhfm.png)](https://q37.info/s/vwpsw73v)  [![About online demonstrations](https://img.shields.io/badge/about-online%20demonstrations-informational)](https://q37.info/s/sssznrb4)\n\n[![Version 0.13](https://img.shields.io/static/v1.svg?&color=90b4ed&label=Version&message=0.13&style=for-the-badge)](http://github.com/epeios-q37/atlas-python/)\n[![license: MIT](https://img.shields.io/github/license/epeios-q37/atlas-python?color=yellow&style=for-the-badge)](https://github.com/epeios-q37/atlas-python/blob/master/LICENSE)\n[![Documentation](https://img.shields.io/static/v1?label=documentation&message=atlastk.org&color=ff69b4&style=for-the-badge)](https://atlastk.org)  \n\n[![Version](https://img.shields.io/pypi/v/atlastk?style=for-the-badge&color=90b4ed&label=PyPi)](http://q37.info/s/9srmskcm)\n\n<!--\nSi la table ci-dessous est modifi\u00e9e, alors modifier \u00e9galement (pages du site atlastk.org)\u00a0:\n- la page '_index'\u00a0;\n-->\n\n> The [*Atlas* toolkit](https://atlastk.org) is available for:\n> | Language / Demo | Repository | Popularity | Vid\u00e9o |\n> |:-:|:-:|:-:|:-:|\n> | [![Java](https://q37.info/s/jrnv4mj4.svg)](https://q37.info/s/qtnkp9w4)<br/>[![Run on Replit](https://q37.info/s/kpm7xhfm.png)](https://q37.info/s/3vwk3h3n) | [![Framagit](https://q37.info/s/z4hsg7wc.svg)](https://framagit.org/epeios-q37/atlas-java) [![GitHub](https://q37.info/s/jqrxkdh3.svg)](https://github.com/epeios-q37/atlas-java)<br/>[![GitLab](https://q37.info/s/m4djpmm9.svg)](https://gitlab.com/epeios-q37/atlas-java) | [![Stars for atlas-java](https://img.shields.io/github/stars/epeios-q37/atlas-java.svg?style=social)](https://github.com/epeios-q37/atlas-java/stargazers)<br/>[![GitHub forks for atlas-java](https://img.shields.io/github/forks/epeios-q37/atlas-java.svg?style=social)](https://github.com/epeios-q37/atlas-java/network/) | [![PeerTube](https://q37.info/s/dsvp4n7j.svg)](https://q37.info/s/qs4dx4rm)<br/>[![YouTube](https://q37.info/s/xgq4zgdr.svg)](https://q37.info/s/vd9xz7jp) |\n> | [![Node.js](https://q37.info/s/fh7v7kn9.svg)](https://q37.info/s/3d7hr733)<br/>[![Run on Replit](https://q37.info/s/kpm7xhfm.png)](https://q37.info/s/st7gccd4) | [![Framagit](https://q37.info/s/z4hsg7wc.svg)](https://framagit.org/epeios-q37/atlas-node) [![GitHub](https://q37.info/s/jqrxkdh3.svg)](https://github.com/epeios-q37/atlas-node)<br/>[![GitLab](https://q37.info/s/m4djpmm9.svg)](https://gitlab.com/epeios-q37/atlas-node) | [![Stars for atlas-node](https://img.shields.io/github/stars/epeios-q37/atlas-node.svg?style=social)](https://github.com/epeios-q37/atlas-node/stargazers)<br/>[![GitHub forks for atlas-node](https://img.shields.io/github/forks/epeios-q37/atlas-node.svg?style=social)](https://github.com/epeios-q37/atlas-node/network/) | [![PeerTube](https://q37.info/s/dsvp4n7j.svg)](https://q37.info/s/9wtsrwqw)<br/>[![YouTube](https://q37.info/s/xgq4zgdr.svg)](https://q37.info/s/4pcpvrhz) |\n> | [![Perl](https://q37.info/s/hgnwnnn3.svg)](https://q37.info/s/4nvmwjgg)<br/>[![Run on Replit](https://q37.info/s/kpm7xhfm.png)](https://q37.info/s/h3h34zgq) | [![Framagit](https://q37.info/s/z4hsg7wc.svg)](https://framagit.org/epeios-q37/atlas-perl) [![GitHub](https://q37.info/s/jqrxkdh3.svg)](https://github.com/epeios-q37/atlas-perl)<br/>[![GitLab](https://q37.info/s/m4djpmm9.svg)](https://gitlab.com/epeios-q37/atlas-perl) | [![Stars for atlas-perl](https://img.shields.io/github/stars/epeios-q37/atlas-perl.svg?style=social)](https://github.com/epeios-q37/atlas-perl/stargazers)<br/>[![GitHub forks for atlas-perl](https://img.shields.io/github/forks/epeios-q37/atlas-perl.svg?style=social)](https://github.com/epeios-q37/atlas-perl/network/) | [![PeerTube](https://q37.info/s/dsvp4n7j.svg)](https://q37.info/s/bvvjj7gk)<br/>[![YouTube](https://q37.info/s/xgq4zgdr.svg)](https://q37.info/s/3g7zdnp7) |\n> | [![Python](https://q37.info/s/94937nbb.svg)](https://q37.info/s/pd7j9k4r)<br/>[![Run on Replit](https://q37.info/s/kpm7xhfm.png)](https://q37.info/s/vwpsw73v) | [![Framagit](https://q37.info/s/z4hsg7wc.svg)](https://framagit.org/epeios-q37/atlas-python) [![GitHub](https://q37.info/s/jqrxkdh3.svg)](https://github.com/epeios-q37/atlas-python)<br/>[![GitLab](https://q37.info/s/m4djpmm9.svg)](https://gitlab.com/epeios-q37/atlas-python) | [![Stars for atlas-python](https://img.shields.io/github/stars/epeios-q37/atlas-python.svg?style=social)](https://github.com/epeios-q37/atlas-python/stargazers)<br/>[![GitHub forks for atlas-python](https://img.shields.io/github/forks/epeios-q37/atlas-python.svg?style=social)](https://github.com/epeios-q37/atlas-python/network/) | [![PeerTube](https://q37.info/s/dsvp4n7j.svg)](https://q37.info/s/qfcng9j4)<br/>[![YouTube](https://q37.info/s/xgq4zgdr.svg)](https://q37.info/s/rt9wr4w3) |\n> | [![Ruby](https://q37.info/s/zn4qrx9j.svg)](https://q37.info/s/gkfj3zpz)<br/>[![Run on Replit](https://q37.info/s/kpm7xhfm.png)](https://q37.info/s/9thdtmjg) | [![Framagit](https://q37.info/s/z4hsg7wc.svg)](https://framagit.org/epeios-q37/atlas-ruby) [![GitHub](https://q37.info/s/jqrxkdh3.svg)](https://github.com/epeios-q37/atlas-ruby)<br/>[![GitLab](https://q37.info/s/m4djpmm9.svg)](https://gitlab.com/epeios-q37/atlas-ruby) | [![Stars for atlas-ruby](https://img.shields.io/github/stars/epeios-q37/atlas-ruby.svg?style=social)](https://github.com/epeios-q37/atlas-ruby/stargazers)<br/>[![GitHub forks for atlas-ruby](https://img.shields.io/github/forks/epeios-q37/atlas-ruby.svg?style=social)](https://github.com/epeios-q37/atlas-ruby/network/) | [![PeerTube](https://q37.info/s/dsvp4n7j.svg)](https://q37.info/s/fj3trgds)<br/>[![YouTube](https://q37.info/s/xgq4zgdr.svg)](https://q37.info/s/zgb4d9v3) |\n\n\n<ins>***WebGPIO* (*Raspberry Pi*/*ODROID-C2*)**</ins>: the *WebGPIO* application, with which you can control the *Raspberry Pi*/*ODROID-C2* (and probably other similar devices) GPIOs with your smartphone, is described in the *Raspberry Pi*/*ODROID-C2* below section.\n\n\n\n---\n\n## A GUI with *Python* in a couple of minutes\n\nClick the animation to see a screencast of programming this [\"Hello, World!\" program](https://en.wikipedia.org/wiki/%22Hello,_World!%22_program) with *Python* in a matter of minutes:\n\n[![Building a GUI in with *Python* in less then 10 minutes](https://q37.info/s/qp4z37pg.gif)](https://q37.info/s/rt9wr4w3)\n\nSame video on [*Peertube*](https://en.wikipedia.org/wiki/PeerTube): <https://q37.info/s/qfcng9j4>.\n\nSource code:\n\n```python\nimport atlastk\n\nBODY = \"\"\"\n<fieldset>\n <input id=\"Input\" xdh:onevent=\"Submit\" value=\"World\"/>\n <button xdh:onevent=\"Submit\">Hello</button>\n <hr/>\n <fieldset>\n  <output id=\"Output\">Greetings displayed here!</output>\n </fieldset>\n</fieldset>\n\"\"\"\n\ndef acConnect(dom):\n  dom.inner(\"\", BODY)\n  dom.focus(\"Input\")\n\ndef acSubmit(dom):\n  name = dom.getValue(\"Input\")\n  dom.begin(\"Output\", f\"<div>Hello, {name}!</div>\")\n  dom.setValue(\"Input\", \"\")\n  dom.focus(\"Input\")\n\nCALLBACKS = {\n  \"\": acConnect,\n  \"Submit\": acSubmit\n}\n\natlastk.launch(CALLBACKS)\n```\n\n### See for yourself right now - it's quick and easy!\n\n#### Online, with nothing to install\n\nTo run above \"Hello, World!\" program directly in your browser, as seen in corresponding video, follow this link: <https://replit.com/@AtlasTK/hello-python>.\n\nThanks to [*Replit*](https://q37.info/s/mxmgq3qm), an [online IDE](https://q37.info/s/zzkzbdw7), you can write and run programs using the *Atlas* toolkit directly in your web browser, without having to install *Python* on your computer [![About online demonstrations](https://img.shields.io/badge/about-online%20demonstrations-informational)](https://q37.info/s/sssznrb4).\n\nTo see more examples, like the following [*TodoMVC*](http://todomvc.com/), simply:\n- go [here](https://q37.info/s/vwpsw73v) (also accessible with the [![Run on Repl.it](https://q37.info/s/kpm7xhfm.png)](https://q37.info/s/vwpsw73v) button at the top of this page),\n- click on the green `Run` button,\n- choose the *Python* entry (this clones the corresponding *GitHub* repository),\n- choose the demonstration to launch,\n- wait for the application to open, \n- \u2026 and, as you wish, fork the *Replit* repository and run your own tests directly in your browser, by modifying the code of the examples or by writing your own code.\n\n[![TodoMVC](https://q37.info/download/TodoMVC.gif \"The TodoMVC application made with the Atlas toolkit\")](https://q37.info/s/vwpsw73v)\n\n#### With *Python* on your computer\n\n```shell\n# You can replace 'github.com' with 'framagit.org' or 'gitlab.com'.\n# DON'T copy/paste this and above line!\ngit clone http://github.com/epeios-q37/atlas-python\ncd atlas-python/examples\npython Hello/\n```\n\n## *Android* devices\n\nPrograms made with the *Atlas* toolkit work perfectly on your [*Android*](https://en.wikipedia.org/wiki/Android_(operating_system)) devices (smartphone or tablet) using the [*Termux*](https://termux.com/) application. Simply install (``pkg intall \u2026``) the *git* and *python* packages. That's all!\n\n## *Jupyter* notebooks\n\nWhen using the *Atlas* toolkit in a [*Jupyter* notebook](https://en.wikipedia.org/wiki/Project_Jupyter#Jupyter_Notebook), the GUI is embedded in the notebook, as shown here:\n\n![](https://q37.info/s/f7qqvhs3.gif)\n\n*Jupyter* notebook examples can be found in the *tutorials* directory.\n\n## Your turn\n\nIf you want to take your code to the next level, from [CLI](https://q37.info/s/cnh9nrw9) to [GUI](https://q37.info/s/hw9n3pjs), then you found the right toolkit.\n\nWith the [*Atlas* toolkit](http://atlastk.org/), you transform your programs in modern web applications ([*SPA*](https://q37.info/s/7sbmxd3j)) without the usual hassles:\n- no *JavaScript* to write; only *HTML*(/*CSS*) and *Python*,\n- no [front and back end architecture](https://q37.info/s/px7hhztd) to bother with,\n- no [web server](https://q37.info/s/n3hpwsht) (*Apache*, *Nginx*\u2026) to install,\n- no need to deploy your application on a remote server,\n- no incoming port to open on your internet box or routeur.\n\nThe *Atlas* toolkit is written in pure *Python*, with no native code and no dependencies, allowing the *Atlas* toolkit to be used on all environments where *Python* is available. \n\nAnd simply by running them on a local computer connected to internet, applications using the *Atlas* toolkit will be accessible from the entire internet on laptops, smartphones, tablets\u2026\n\nThe *Atlas* toolkit is particularly well suited for educational purposes, to write modern programming exercises, i.e. with a true graphical interface instead of the usual outdated textual one. More about this can be found [here](https://q37.info/s/cbms43s9).\n\n*Python* is much more powerful then *Excel* macros to automate (boring) tasks, and you can also work with *PDF*, *Word*, *Google* files\u2026. And with the *Atlas* toolkit, you have much more possibilities then with *VBA* forms. There are some examples [here](https://q37.info/s/97p44nh4).  \n\nThere is also a stub to for this library at address <https://q37.info/s/zzcn3wnx>.\n\n> You will also find programs from [*The Big Book of Small Python Projects*](https://inventwithpython.com/bigbookpython/) by [Al Sweigart](http://alsweigart.com) to which a graphical user interface using the *Atlas* toolkit were added in this repository: [epeios-q37/AlSweigartTheBigBookPython](https://q37.info/s/kd3bwchj).\n\n## Content of the repository\n\nThe `atlastk` directory contains the *Python* source code of the *Atlas* toolkit, which is the directory you have to reference in `PYTHONPATH` in order to use the *Atlas* toolkit in your own program, unless you have installed the [*atlastk* package](http://q37.info/s/9srmskcm) (`pip install atlastk`\u2026).\n\nYou can also retrieve the `atlastk.zip` file, and add to your source code\u00a0:\n\n```python\n__import__(\"sys\").path.append(\"<path to>/atlastk.zip\")\n\nimport atlastk\n```\n\nIf the `atlastk.zip` file is in the current folder, replace `<path-to>/atlastk.zip` with `./atlastk.zip` and not only `atlastk.zip`.\n\nIn the `examples` directory, you will found following examples:\n\n- `Blank`: very basic example,\n- `Hello`: [\"*Hello, World!*\"](https://en.wikipedia.org/wiki/%22Hello,_World!%22_program),\n- `Chatroom`: multi-user chatroom,\n- `Notes`: note taking program,\n- `TodoMVC`: [*TodoMVC*](http://todomvc.com/),\n- `Hangman`: [Hangman game](http://q37.info/s/gtdtk4hp),\n- `15-puzzle`: [15-puzzle game](https://q37.info/s/jn9zg3bn),\n- `Contacts`: a basic address book, \n- `Widgets`: some widgets handled with the *Atlas* toolkit,\n- `Chatrooms`\u00a0: same as above `Chatroom`, but with several rooms,\n- `PigGame`: [Pig game](https://en.wikipedia.org/wiki/Pig_(dice_game)) for one or two players,\n- `Reversi`: [*Reversi* game](http://q37.info/s/zz3dzmf7) for one or two players,\n- `MatPlotLib`\u00a0: the *Atlas* toolkit displaying some graphics made with [*matplotlib*](https://matplotlib.org/); this example needs, of course, the *matplotlib* package to be installed\u2026\n\nOther examples are detailed in the next section.\n\nExcept for the *ErgoJr*, *GPIO* and *RGB* applications, which are detailed in the next section, to run an example, launch, from within the `examples` directory, `python <Name>/` (don't forget the final `/`), where `<Name>` is the name of the example (`Blank`, `Chatroom`\u2026).\n\nThe *Stars* application is an example where the *Atlas* *toolkit* is used to control a [*Pygame*](https://en.wikipedia.org/wiki/Pygame) based application. Of course, *Pygame* needs to be installed.\n\nThe `tutorials` directory contains some [*Jupyter* notebooks](https://en.wikipedia.org/wiki/Project_Jupyter#Jupyter_Notebook) about  the *Atlas* *toolkit*.\n\n## *Raspberry Pi*/*ODROID-C2*\n\n**If the applications does not work on your *Raspberry Pi*, please see this issue: <https://github.com/epeios-q37/atlas-python/issues/1>**\n\nThe *GPIO* and *RGB* applications are designed to be used on a *Raspberry Pi* or a *ODROID-C2*.\n\nHere is how the *WebGPIO* application looks like:\n\n![*WebGPIO* interface](https://q37.info/s/htkhqb9x.png)\n\nFor the *Raspberry Pi*, the `RPi.GPIO` *Python* module have to be installed (this is probably already the case).\n\nFor the *ODROID-C2*, The *Python* version of *WiringPi* must be installed, and the application has to be launched, from within the `examples` directory, with `sudo` (`sudo python GPIO/` or `sudo python RGB/`).\n\nThe *ErgoJr* application is experimental and to control a *Poppy* *Ergo Jr* robot.\n\nThe *RGB* application is dedicated to the control of a RGB led, and the *GPIO* (aka *WebGPIO*) application allows to control the basic pins. Click below picture to see a *YouTube* video on how they work (same video on [*PeerTube*](https://en.wikipedia.org/wiki/PeerTube): <https://q37.info/s/49pbmwv9>):\n\n[![RGB video](https://img.youtube.com/vi/C4p2iX6gc-Q/0.jpg)](https://www.youtube.com/watch?v=C4p2iX6gc-Q)\n\n\n\n\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "World's lightest toolkit to quickly and easily add a GUI to your Python programs and bring them online.",
    "version": "0.13.3",
    "project_urls": {
        "Homepage": "https://atlastk.org"
    },
    "split_keywords": [
        "gui",
        "web",
        "atlas toolkit"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b15569fc4c89368be34f9ff4b2f4af87e1e6d5d867746848bd2e466aaf1c5058",
                "md5": "66baa4c64040108294f0cb1d20880120",
                "sha256": "7d1ac1c9bffb63e09a2e55eb8ab2795e0bf79252805c84493bf0e30bab6879a1"
            },
            "downloads": -1,
            "filename": "atlastk-0.13.3-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "66baa4c64040108294f0cb1d20880120",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 25069,
            "upload_time": "2023-09-11T13:31:59",
            "upload_time_iso_8601": "2023-09-11T13:31:59.093279Z",
            "url": "https://files.pythonhosted.org/packages/b1/55/69fc4c89368be34f9ff4b2f4af87e1e6d5d867746848bd2e466aaf1c5058/atlastk-0.13.3-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7e3c494f0d00dbb145afe88cbdb2e5365df894eff44d7ebef1c056c2eceed126",
                "md5": "de7a853327ec0951c1fc7ac72ce98703",
                "sha256": "17808075d5fbada776e8c2f7479fecb6373af9df33f23d7485556106cef871fc"
            },
            "downloads": -1,
            "filename": "atlastk-0.13.3.tar.gz",
            "has_sig": false,
            "md5_digest": "de7a853327ec0951c1fc7ac72ce98703",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 17905,
            "upload_time": "2023-09-11T13:32:01",
            "upload_time_iso_8601": "2023-09-11T13:32:01.602611Z",
            "url": "https://files.pythonhosted.org/packages/7e/3c/494f0d00dbb145afe88cbdb2e5365df894eff44d7ebef1c056c2eceed126/atlastk-0.13.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-09-11 13:32:01",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "atlastk"
}
        
Elapsed time: 0.10472s