5 ms·
Sadly, we still don't have the seamless UI building functionality Delphi had 15 years ago, allowing making a fairly advanced desktop app in a day. Jumping betwe
by bitL 9y ago
Sadly, we still don't have the seamless UI building functionality Delphi had 15 years ago, allowing making a fairly advanced desktop app in a day. Jumping between Qt Designer and IDE back and forth is still an order of magnitude more complicated than it needs to be.
- jcelerier 9y ago> Jumping between Qt Designer and IDE back and forth is still an order of magnitude more complicated than it needs to be. ... uh ? the designer is part of the ide... nowadays you even have a code view synced with the UI editor in realtime (http://blog.qt.io/blog/2017/05/24/qt-quick-designer-qt-creator-4-3/ http://blog.qt.io/blog/2017/05/24/qt-quick-designer-qt-creat...)
- toopsss 9y agoIe you have to use qt designer as you ide or switch between IntelliJ/pycharm. It’s not ideal as IntelliJ is miles ahead of qt designer as a general purpose ide for python. I’m pretty spoiled at this point by the excellent refactorings and type support.
- WaltPurvis 9y agoHe was talking about writing Qt apps with Python. (This entire post is about writing Qt apps with Python.) Qt Creator is not a Python IDE.
- opencl 9y agoDelphi is still around, as is the open source clone Lazarus. It's certainly not as popular as it used to be but still actively developed with people using it.
- bitL 9y agoYes, though Pascal is now a fringe language. I was mostly ranting about best IDEs Python has such as PyCharm, where one has to go back and forth between Qt Designer, some command-line compilation stuff and PyCharm. It feels like some ancient way to waste time doing trivial stuff instead of getting app done quickly.
- ssebastianj 9y agoHa! I feel your pain. That's what I ended up doing for an application a few years ago, wrote a Python script to compile the Qt Designer generated code to Python code [0] [0] https://github.com/ssebastianj/ia2013-tpi-rl/blob/master/gui/compile_ui.py https://github.com/ssebastianj/ia2013-tpi-rl/blob/master/gui... Going back and forth between Qt Designer and PyDev was (is?) ancient. Unfortunately I couldn't find a way to automate the compilation step (perhaps with a hook from Qt Designer?)
- drb91 9y agoI just took a look at delphi. What’s so unique about its ui builder?
- Drdrdrq 9y agoIt was (is?) very powerful and at the same time very easy to use. Not sure about alternatives nowadays...
- pjmlp 9y agoMostly Java and .NET, if we let aside the AOT compilation part, although it is being improved.
- ZenoArrow 9y agoFor .NET, Eto is a good option. It's cross-platform and supports the native toolkits of the platforms it supports: https://github.com/picoe/Eto https://github.com/picoe/Eto There's also Avalonia, but it's currently in beta: http://avaloniaui.net/ http://avaloniaui.net/
- bitL 9y agoYou could build a comprehensible app with very natural handling of UI events, mostly by just clicking in designer and setting some properties visually, in like an hour, what in Visual Studio took weeks. It was such a time saver and productivity boost for UI and we still don't have anything mainstream that approaches these levels for e.g. web or Python.
- vram22 9y agoDon't know if its UI builder is unique or not, but there are plenty of good things about it. Some bad, too. Here is one post and a thread with many pros and con views about Delphi: Delphi – why won't it die? (2013) (stevepeacocke.blogspot.com) https://news.ycombinator.com/item?id=7613543 https://news.ycombinator.com/item?id=7613543
- TimJYoung 9y agoDelphi's UI designer pioneered two-way tools, meaning that any changes to the contents of a form/window are reflected immediately in code. The general design is this: there's a code unit (.pas) and declarative UI property file (.dfm) for every form in your application. When you modify any published properties for any controls/components on the form via the object inspector, these modifications are stored in the .dfm file. Any changes to the controls/components on the form (adding a control, removing a control, renaming a control) are immediately reflected in the .pas code for the form. And, the code is not just generated code that you can't touch, it is code that you are modifying along with the IDE. You can jump back and forth between the UI designer and code editor with a simple F12 key press. When an application is compiled, the compiler automatically bundles the .dfm files as resources in the resultant binary and streams the properties in during form instantiation. Where this all really shines is with event handling. You can, for example, double-click a button on the form and the designer will drop you into the code editor with a fully-defined OnClick event handler all ready to go. This is because Delphi has the concept of default events for controls/components. For non-default events, you can do the same by double-clicking on the event name in the object inspector. The other thing is that the UI designer is running real code in the background for controls/components, so the design-time environment mirrors the run-time environment, and control/component designers can interrogate the RTL to find out which state they are in, and act accordingly. You can also write custom property editors that allow for complex property editing in a nice interface. Our product, Elevate Web Builder, works exactly like this for building single-page web applications. It's extremely productive and a very good fit for web applications because, unlike desktop applications, there's not as much risk of mixing back-end code into your UI code and starting to makes things messy. The key is that you need a strongly-typed language to make this all happen, so I'm not sure how applicable any of this is to Python.