Readit News logoReadit News
BlackLotus89 · 3 years ago
I sometimes miss the good old days of visual basic and delphi when I could create a gui that just worked in seconds, help pages via F1 and quick access to all events possible through simple gui clicks.

A few days ago I tried getting a simple PyQtWebengine example working using pyqt6 and failed miserably. It was a frustrating experience for sure

bityard · 3 years ago
Tcl/Tk was fairly amazing for getting a simple UI going.

Back in the dialup days, my modem was plugged into a homebrew Linux firewall/router so that I could use the Internet from multiple machines at once. Which outside of a large business or college campus, was considered pretty much advanced wizardry back then. The problem was that I had one phone line and couldn't tie it up all the time. I wanted to be able to open a program on the desktop of another computer, click a button marked "connect to internet" and have that talk to the server to start the dialup process. And then also a "disconnect" button to hang up later. With a little text box to show any errors and whatnot. There were some half-solutions to this in existence at the time, but nothing that fit my exact use case.

I had been beating my head against various Perl experiments which weren't getting me anywhere until finally someone on IRC said, "oh, have you tried Tcl/Tk?"

Tcl was so easy to learn that I had a working proof of concept by the end of the day. Another couple of days to tidy it up. Used it daily for a few years until DSL came to my area.

panza · 3 years ago
I agree with this. I whipped up a small tcl/tk project, used it for years, worked everywhere. Every time I tried some other framework in Python, I always ended up stepping on rakes. Nothing ever felt right.

These days, if tcl/tk doesn't suffice for my project, then I just move onto another environment entirely.

formerly_proven · 3 years ago
Ttk exists :)
zem · 3 years ago
i had great experiences with ruby/tk as well; it was just the pain of deployment that made me give up on it.
distantsounds · 3 years ago
This is a constant ask every time a thread about desktop UI design comes up. Everyone wants a new Visual Basic, nobody wants to use the alternatives. The VB language itself likely doesn't appeal to people nowadays but the building blocks the UI provided is still unparalleled and everyone has fond memories of how easy prototyping applications is with it.
elevation · 3 years ago
1990s PC economics produced Visual Basic. Microsoft was able to write off the development cost of the Visual Studio suite as an investment in the further entrenchment of Windows -- something no third party devtools company could directly profit from. So VB was designed to be the lowest of the low friction paths to developing software that locked users and businesses into win32. The single platform focus (supporting other platforms would have defeated the purpose) also helped keep the IDE lean and speedy.

Former VB devs pine for the usability and speed they once enjoyed. But most tech ecosystems that are self-contained enough to benefit from focused/lightweight devtools can't support a player large enough to develop them. And the ecosystems that are big enough are managed by megacorps that are more interested in brokering consumer data than streamlining the developer experience. I too would love to see a renaissance of RAD but I can't figure out who would pay for it.

kaba0 · 3 years ago
I have recently tried JavaFX again, and while it definitely involves some getting used to, it has SceneBuilder as a drag’n’drop GUI editor, and that is hard to beat. Plus it will run on every platform and you can choose from plenty languages.

It is a niche (let’s be honest, desktop development is also one), but it has a surprising amount of libraries available as well.

yboris · 3 years ago
The "good old days" is now: Electron makes it easy to make a UI as expressive as you want - responsive, with beautiful animations, with whatever UI elements you'd like - and you don't have to learn anything new - just HTML, CSS, & JS (which all web devs know enough of to get by).
drekipus · 3 years ago
> The "good old days" is now: Electron

This has got to be one of the funniest opening lines, especially in response to visual basic.

I would begrudgingly accept electron if it had the same "open program, click button , draw a button, double click button, write code" experience that VB had

danudey · 3 years ago
Yes, I definitely want my small GUI app to distribute a gigantic runtime and consume gigs of memory.
bvan · 3 years ago
HTML everywhere killed professional-looking GUI’s. Web devs generally are clueless about application GUI design and usability. It’s sad.
controlname · 3 years ago
I used to use Delphi over 20 years ago and changed career since.

I'm looking to dabble again. Is there anything similar to RAD these days? It really did make building simple GUIs very easy.

Octabrain · 3 years ago
I would say that GAMBAS is the most similar thing I've seen so far (https://en.m.wikipedia.org/wiki/Gambas)
slindsey · 3 years ago
Lazarus on FreePascal
moffkalast · 3 years ago
Making a GUI these days that isn't based on HTML and CSS in some way is an... experience.
maho · 3 years ago
Making a GUI that is based on HTML and CSS and JS is also an... experience.

I have some (ancient) experience in RAD. Once per year I try picking up React/Vue/Angular or whatever is the current fashion, but I get stuck. It's just so _insane_.

brainbag · 3 years ago
I'm working on a project and have been thinking along the same lines. Are there any modern cross-platform tools any language that are good for building like the good old days?
UnnoTed · 3 years ago
I like to use GoVCL [0] as it provides the GUI of Lazarus [1] including drag-n-drop form designer but with Go as the main language.

GoVCL's author built a C library called liblcl [2] which is what GoVCL uses to control the GUI, so if you know C you can use it instead of Go.

I'm building a lightweight Steam chat client with GoVCL so that I don't need the official client that takes like 200-300mb ram just to show text [3].

[0]: https://github.com/ying32/govcl

[1]: https://www.lazarus-ide.org/

[2]: https://github.com/ying32/liblcl/blob/master/README.en-US.md

[3]: https://files.catbox.moe/c4lzxb.png

adderthorn · 3 years ago
Lazarus with Free Pascal is the only one I know of. The designer component works just like VB/WinForms but works cross platform.
torstenvl · 3 years ago
I'm a big fan of using wxPython instead of Qt or the other recommendations in OP.

https://www.wxpython.org/

wxWidgets is mostly licensed under an LGPL analog with linking exceptions intended to permit distributing binaries under any license you choose. No part of wxWidgets, including wxPython, has a license more restrictive than the LGPL.

pdonis · 3 years ago
I have tried wxWidgets and wxPython, and while there are many nice features, my issue with it has always been that its behavior is inconsistent across platforms. I have found Qt to be much better at delivering the same experience across platforms. Using PySide 2 with the previous version of Qt (Qt 5 instead of the current Qt 6) avoids any licensing issues since PySide 2 uses the LGPL version of Qt 5.
LoganDark · 3 years ago
> my issue with it has always been that its behavior is inconsistent across platforms

Isn't that because different platforms are different? This should be a feature. "Cross-platform that feels native", because each platform has a different definition of "native".

IME wxWidgets was always better than Qt or any other of the high-level piles of bloat. For example, its layout system would actually use the platform-native, rendered sizes of components, instead of the native components only being a skin over a secret other layer that has its own input handling (looking at you, Qt/GTK).

zzzeek · 3 years ago
for Python GUIs (or "TUIs", or "a screen with colorful buttons and controls I can use with the mouse or keyboard but NOT a "GUI" " if that helps some of the responders to get through the day) I recommend considering a console-based GUI using the excellent Textual: https://textual.textualize.io/

this is the most modern GUI (in a console or not) framework you'll find for Python right now.

1ark · 3 years ago
I have used React/Preact/React Native/Flutter to build complex UIs. I thought it would be great to use something like this to render TUI and get rid of some of the app complexity for “simpler” one-user apps. I have used it and it is a nightmare when your app gets just slightly complex. Instead of making simple components I ended up traversing the internals of the library. Impressed by some people getting things done with it though.

- CSS, why?! It does not really work like CSS when it comes to positioning things, overlapping and so on. Compared to previous versions where these properties were in a dict or sent in to the component, they are now in either big string blocks or in separate files, removing syntax highlighting and/or locality.

- Cannot easily use debugging such as PDB because it hijacks Traceback and uses async. Maybe fine if you rely on other debugging tools.

- It lacks simple off-the-shelf components such as menu bars, so I built my own, but run into annoying artifacts as mentioned before.

Rich, the underlying rendering library is good, and simple enough. I ditched Textual for prompt_toolkit, and can still use Rich to render things in pt.

TheRealPomax · 3 years ago
Not really a GUI then, though? It's a UI (and from the screenshots, quite nice), but it's lacking the part that makes it "graphical" (which doesn't actually include "colors or borders", of course, we've been able to do those since CGA, and terminals, respectively).
noman-land · 3 years ago
Wow, Textual looks amazing. Thanks for the link.

Deleted Comment

mikewarot · 3 years ago
I lost a year of time on a side-project because of WxPython, I built a shim to allow me to make small tweaks without having to regenerate the python code, and it was barely usable.... then I had to change a list to a drop-down (I think), and it broke everything.

I threw all of that time away, and had it all working in Lazarus/Free Pascal in less than 2 weeks.

Most web based programmers have no clue how badly "modern" tools are compared to the VB6/Delphi era. Everything is worse, except for GIT... GIT is brilliant.

---

Also, my personal wiki of choice is WikidPad, which is distributed as an executable for windows, and works just fine. I can't move to Linux, because it's distributed as source there, and WxWindows made a breaking change to one of their key parameters to dialog function calls, so none of the dialogs work properly, though it does show text. It's effectively read-only and broken as a result.

gapan · 3 years ago
I'm sure there is a way to fix it on Linux but an interim solution would be to use the windows executable with wine.
F00Fbug · 3 years ago
For vanilla applications PySimpleGUI is so easy to use: https://www.pysimplegui.org/en/latest/

Personally, if I'm writing software that needs to talk to a human I'll just build a web interface instead of a GUI.

maho · 3 years ago
I love gooey: https://github.com/chriskiehl/Gooey

It allows me to quickly slap a GUI on an existing script that accepts command-line-arguments. In the end, I get the best of both world: Discoverability from the GUI, automation through the script, and automatic feature parity between the two.

Downside: Control over the GUI layout is basic, and only "standard" GUI features work, but I never felt limited when using it.

037 · 3 years ago
+1 for Gooey. This "auto-GUI" app is a godsend for any script-user seeking to minimize friction. Lately, I've been diving into Ruby (fallen in love with Ruby on Rails) and I'm hoping to come across something similar.
fud101 · 3 years ago
Dope
gary_0 · 3 years ago
Note that it's built on top of wxPython. I think a "middle ground" user interface between the commandline and a full-blown graphical environment is a great idea.
okasaki · 3 years ago
I tried to use GTK for a little project at work and I couldn't figure out how to make it look decent.

I ended up making a flask app and launching a browser. It seemed to be 100x easier.

I would prefer to make native GUI apps but it's just so much more difficult.

marcodiego · 3 years ago
My suggestion for people experimenting with GTK these days is to take a look at the examples that are being built into "gtk workbench".
pdonis · 3 years ago
I have had the same problem whenever I've tried to use GTK. Qt, which is what the article is mostly based on, has worked much better for me.
nologic01 · 3 years ago
It would be nice to have a canonical python GUI framework. Something modern and elegant and flexible. With an intuitive declarative description, quick for simple things but progressivly enhanceable for more complex things. With a friendly license and an active community sharing components, themes or whatever. Reasonanly performant and ideally cross-platform.

All the options fall short somehow, but guess what, its not much better in any other language. The GUI problem is not truly solved.

korijn · 3 years ago
Still young and new, but definitely modern, elegant, flexible and declarative: https://github.com/fork-tongue/collagraph