Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Enaml: A declarative UI library with a Cassowary layout system for Python (github.com/nucleic)
52 points by empyrical on June 8, 2015 | hide | past | favorite | 23 comments


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.


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

http://nucleic.github.io/enaml/docs/examples/index.html


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.


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


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.


Not sure how far through you clicked, but there are many screenshots with more than two UI controls in the window.


Enaml uses Qt under the hood. So GUIs look native to the platform.


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.


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.


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.


I'm going to have to look real close at Enaml, but I thought I would mention https://github.com/pybee/toga as a very interesting Python GUI project. I think the creators are spreading themselves too thin between their various projects and Toga may be a long ways from seeing a production ready release, but I like what they have started.


There arent any good answers at the moment, since the UI world seems to be in a flux.


Long time follower, but for a strange reason - enaml is by far the only Qt product that has docking done right - e.g. one can undock windows into floating ones, and dock again into them (plus other nifty features). I've gave a week shot of trying to make a C++ version of your code, but failed miserably (due to lack of Python understanding, and under pressure to see whether it can be done under a week).

I wish your docking area was part of Qt4/5, and other products would benefit from it too - like Autodesk Maya, MotionBuilder, and many others.

Thank you!


Thanks for the kind words :)


I keep finding myself wanting to use enaml. Every once and a while I re-read the documentation and have found it increasingly attractive. But the lack of Tree/Listview support keeps preventing me from making the jump. Can I expect this feature to ever make it to enaml?


Here's the most recent talk I've done on it: https://vimeo.com/79536617


the live demo ( ~23:40 ) is cool and insightful of what enaml provides


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.


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...


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.


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


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...


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




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: