A GUI toolkit targeting browsers
Project description
Tools to design GUIs viewable in a browser.
Everybody has a browser, and a lot of very smart people have designed browsers so that it’s easy to make pretty, interactive pages. Wouldn’t it be great if we could take advantage of this in Python? Well, now we can!
Install with pip install browsergui, or download it and either run python setup.py install or plop the browsergui subfolder anywhere on your Python path. Once you’ve done that, you can:
see demos of all available UI components with python -m browsergui.examples
experiment on your own with python -m browsergui.examples interactive
Examples
Here are a few short demos, to give you a taste of what this GUI framework looks like.
Hello world:
from browsergui import run, GUI, Text run(GUI(Text(“Hello world!”)))
A number that increments every time you press a button:
from browsergui import run, GUI, Text, Button button = Button(‘0’, callback=lambda: button.set_text(int(button.text) + 1)) run(GUI(button))
A clock:
import datetime from browsergui import *
now = Text(“”)
- def update_now():
now.text = datetime.datetime.now().strftime(“%Y-%m-%d %H:%M:%S”)
RepeatingTimer(interval=0.1, callback=update_now, daemon=True).start()
run(GUI(Text(“The time is: “), now))
Should I use this?
### Summary
Things that are prioritized in this package: easy installation, simplicity, and the feeling that you’re writing Python.
Things that are not prioritized in this package: performance and fine styling/layout control.
I think this is a great way to make simple little GUIs that don’t have any fancy stuff. If you want to build a very basic UI that (a) installs without trouble and (b) has a very shallow learning curve, I recommend this. If you want your UI to be pretty or extra-responsive, I do not recommend this.
### Details
There are good things and bad things about this package.
The good:
Easy installation. This package is pure Python that relies on only the standard library. This will not change while I have breath in my body.
Consequently, it should be usable out of the box for every single person with Python 2.7 or later, without installing Tk or Qt or wxWidgets or PyObjC or any of that stuff.
Easy to learn. Making simple GUIs for simple tasks is simple. Check out the examples directory (particularly examples/longrunning.py for a vaguely realistic use case).
Code style. It tries very hard to be Pythonic and object-oriented. It’s not just a thin wrapper over HTML/JS.
The bad:
Performance. It does not even try to be high-performance. There’s an HTTP request every time the user interacts with the GUI, and an HTTP request every time the view needs updating. Performance is off the table. (Each request only takes several milliseconds’ round trip for me, running on localhost, so it’s not awful, but it’s not awesome.)
### Alternatives
I am aware of some GUI toolkits for Python that fill a similar niche. You should consider using these instead:
tkinter (standard library)
Advantages: it’s in the standard library. It has always worked out of the box for me. If you want maximal portability, this is probably your best bet.
Disadvantages: it feels like a wrapper around Tk, because it is. This gives good performance and detailed control, but writing it feels unintuitive (to me).
[pyJS](http://pyjs.org), another Python package for making GUIs targeting browsers. It works by compiling your Python code into a slug of JavaScript which runs in the browser.
Advantages: pyJS applications are much faster and much easier to deploy (since it doesn’t require the user to run Python).
Disadvantages: I had trouble installing it. And like tkinter, it’s a wrapper, with the same dis/advantages.
How it Works
Basically, we just start a server and point the browser at the server. All the fancy computation happens on the server: the browser is basically a [dumb terminal](http://en.wikipedia.org/wiki/Dumb_terminal), which (a) notifies the server when the user does something and (b) blindly executes whatever JavaScript the server gives it, thereby keeping the view up-to-date.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for browsergui-0.2.2-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d2f06963b43f7e795d4fcf8def244f17639a3eab7d92e724245957c713c51d04 |
|
MD5 | 63ff324b6ce30632e0a9f938e18f0f22 |
|
BLAKE2b-256 | cec98f0aada3aab85b0b13bd17eb2b5b9d6822ccfcc66dcec3d9b5df5173fd01 |