
Enaml: A declarative UI library with a Cassowary layout system for Python - empyrical
https://github.com/nucleic/enaml
======
TylerE
Serious suggestion: Post some screenshots of some example GUIs. It's very hard
to evaluate wether a GUI library is worth spending any time on without seeing
it.

~~~
empyrical
They've got a ton of screenshots and accompanying code snippets here:

[http://nucleic.github.io/enaml/docs/examples/index.html](http://nucleic.github.io/enaml/docs/examples/index.html)

~~~
TylerE
I'm supposed to find that (easily!) from the posted link, how, exactly?

Edit: Plus, those screenshots tell me exactly nothing. A button and a single
text area do not a GUI layout make.

~~~
blink1073
The examples are very thorough, and show off a lot of behaviors that would be
very difficult to achieve with raw Qt.

~~~
TylerE
I don't want thorough. I want one or two examples showing non-trivial
interfaces.

As a potential user, you've got about 30 seconds to grab my attention.

------
sccolbert
Hi, author of Enaml here. Development of new features in Enaml has slowed in
the past year as my work focus has shifted. Enaml is fairly stable however,
and is currently in production at multiple Fortune 500 companies, including a
top 10 investment bank. Happy to answer any questions about the project.

~~~
monkmartinez
I know this question isn't directly related to your project, but I thought I
would give it try...

How do you feel about python GUI applications going forward?

I ask because a GUI related question comes up on the python subreddit every
now and again and it goes something like this:

1\. make it on the web using <myfav web framework> 2\. make it on the web
using flask 3\. use Kivy as you get mobile for free 4\. use TKinter 5\. use
PySide 6\. use enaml 7\. use wxpython 8\. use PyQT

The discussion then leads one to believe that GUI programming might be dying
and most things can be accomplished in the browser or with kivy as most of the
GUI binding projects have slowed or died. (Tkinter being another exception as
its ships with Python)

I would like to hear your thoughts on the matter.

~~~
sccolbert
My thoughts are mixed. On the one hand, there is a ton of money being funneled
away from desktop UIs and being dumped into browser technology. On the other
hand, browsers are awful platforms for developing desktop applications and
there doesn't seem to be any real drive to address the shortcomings, as
everyone is focused on mobile.

My current work is focused on the web stack, not because it is a better
platform, but because that's how everyone is wanting to deploy these days.

However, I've been starting to see some chatter and recognition lately that
perhaps the web is best left to documents, and large applications should
continue to use native toolkits. This is promising. There is room for both
technologies, and I hope that mindset takes hold.

------
blink1073
I have found enaml to be invaluable to my work (writing simple UIs for
scientific applications), and much more intuitive to use that PyQt or
TraitsUI. It provides an extremely expressive mechanism to react to (nested)
changes in the UI or the model.

~~~
jf___
TraitsUI was a cool idea, but not implemented that well. Enaml carries it to
perfection. I love how enaml provides a ton of functionality, while it doesnt
get in the way of experimentation. Just see the matplotlib widget [1] how easy
it is to integrate other widgets.

[1]
[https://github.com/nucleic/enaml/blob/master/enaml/widgets/m...](https://github.com/nucleic/enaml/blob/master/enaml/widgets/mpl_canvas.py)

------
dman
As an aside the enaml codebase makes for great reading material - it's one of
the cleanest python codebases I have seen. Disclaimer - Chris is an ex
colleague and personal friend.

~~~
magicmu
Gotta say, the C++ source is pretty gorgeous as well. (Disclaimer: not a
colleague or friend)

------
malkia
Another truly amazing fact: It's one of the very few Qt applications that has
proper docking - e.g. you can dock windows in any of your floating windows
(much like Visual Studio), and something that neither Qt4 or Qt5 support
internally:
[http://nucleic.github.io/enaml/docs/examples/ex_dock_area.ht...](http://nucleic.github.io/enaml/docs/examples/ex_dock_area.html)

------
towelguy
Looks like a mix of Python and Yml just like how QML is a mix of Javascript
and Yml

