Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Python Live GUI – A Hybrid of Dear ImGUI and Phoenix LiveView (gitlab.com/benwiser)
85 points by RupertWiser on June 9, 2022 | hide | past | favorite | 19 comments



Hey all, author here.

I had some time off last week so I built a little tool I've been planning on using for a while now.

Thought I'd just comment on my motivations for building this.

I bought a little chromebook tablet to take on holidays. I've been enjoying the experience of using a remote IDE to code on my personal server.

I thought it would be neat if I could quickly make myself GUIs for other utilities on my remote server that get rendered on my chromebook. Doing this like being able to run bash scripts remotely.

I start utility scripts with this tool and then just use ssh port forwarding to view it locally.

The fun bit is the application itself is then just written in python.

There are some similar alternatives[1] but I wanted to be able to write GUI elements like ImGUI so I decided to build my own tool in the end.

I just wrote it in python because that's what I've been using at work lately.

[1] https://github.com/dbohdan/liveviews#python


does this support concurrent users connected to the same UI?


Yeah it does, it spawns a new thread with separate state per user.


Another LiveView-like UI framework for Python: https://github.com/flet-dev/flet - created specifically for highly interactive real-time experiences. You build your UI from controls made of Flutter widgets and partial UI updates are passed to a browser via WebSockets.


holy cow!!! this is amazing, like PySide4 but for Flutter

Flutter would be perfect if it produced web applications that were more widely adopted.


Right? I know Google has a habbit of dropping great projects, but, somehow, I believe in the future of Flutter on web :) Using Canvas + Skia + WebAssembly for rendering UI in the browser could look like a "wrong" approach today, but, hey, Google created the most popular browser, so who knows. They talk about their vision in this video: https://youtu.be/kCnYRhkfWHY. Flutter is great for web apps, not for web sites where SEO is important. And Google is actively working on better accessibility support - Accessebility Object Model (starting at 10:00 in that video) which is eventually could to be a new standard.


Is there a way to for multiple users to connect to the same web application with Flet?


Absolutely, an app's entry-point "main" function is called for every new user session with unique instance of a "page": https://github.com/flet-dev/examples/blob/main/python/apps/h...


This seems pretty neat - however I don't feel like the screenshot shows what this can be used for as there's no interactive components.


Yeah I should probably replace the screenshot with a gif. Thanks for the feedback!


Dear ImGUI also has python bindings [1] which I've had great success with in tuning computer vision algorithms interactively. It's a slightly different use case than your project here since it doesn't use a browser and only works locally.

[1]https://github.com/pyimgui/pyimgui


Nice. I wonder.. if you could use pyscript [0] + some kind of js-based in-browser http server such as nohost [1] or WebRTC peer to peer.. could you run serve the GUI to other browsers just by opening it in the browser itself?

[0] https://pyscript.net/

[1] https://github.com/humphd/nohost


How does your tool do on accessibility? Asking specifically, as that is the one hill most open sourced guis die on.


Not yet, I plan to add support for this ~soonish because it will be harder to add later on.

It’s very much early days though. I didn’t want to go near accessibility until I had standardised the rendering model somewhat.

It also waits to be seen if anyone actually wants to use this besides me.


Thank you for bringing this up.


Immediate mode GUIs are amazing and super slept on if you want to quickly slap together user interfaces.


The result can be hosted? I don't understand if you can do client<->server communication.


Ah should probably make this clearer in the README, it then serves this through an http server.

It keeps running your render method and dynamically updates your client.

The first example documents this a bit better: https://gitlab.com/BenWiser/python-live-gui/-/blob/main/exam...


Is there any relationship between this and DearPyGUI?




Join us for AI Startup School this June 16-17 in San Francisco!

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

Search: