Dabo 3.0 update

I’m sure many of you have read or even reviewed Dabo in the past. I fact just read a follow up someone just posted that contained information on Dabo 9 years old.
FYI:
Dabo 3 works well with wxPython 4.1 and is used daily. Updates are still happening. Therefore, Dabo is alive and well. In fact people on this very forum have posted update and fixes.

Dabo is very well suited for CRUD desktop apps. I believe it makes CRUD very easy. You do not have worry about how the data saved or even how the data is retrieved. Dabo works on Windows 10, Linux and Macs.
Johnf

2 Likes

It is always good to know about long living projects, but many people don’t know the project, like me, and my searches did not result in any related sites.

Please place here an URL for the project. Thanks.

sure - GitHub - dabodev/dabo: Dabo: A Framework for developing data-driven business applications
use the dabo3 branch.
If you have any issues just get in touch with me. You can also just run the demo code - most it matches the wxPython demo.
Johnf

1 Like

It took me about a month to discover how things are done in Dabo (and learn most of the Python at the same time, so there was some curve) and now my only problem is that my project didn’t move into the next phase - few key features are still missing - because I keep using what I’ve already done, and can’t use it and develop at the same time… :slight_smile:

Show me or provide a link to your code and I can help. Also helps if you provide an over view of the project - what are you try to do or what might be your issues.
Johnf

Actually nothing wrong, it’s just that I’m using the app instead of developing it :).

There’s trouble with class designer and a few other tools, which crash because the current wx is more strict about a few things - you can’t set alignment if you’re setting a control to expand (which is, IMO, a nonsense - if setting to expand the alignment should be ignored), and in many other cases it complains about scrollbars having zero or negative height (probably because they still didn’t show up yet), but the errors are coming from gtk, where they can’t be caught, and they all had to be marked as critical. Too deep for me to debug.

But then I learned to love the logic of wx and Dabo, of using sizers, and wrote my forms in code. Clean and easy (using pycharm as my IDE), and I love it. So I decided that I actually don’t care that the class designer doesn’t work.

I totally agree with not using ClassDesigner. On the average I can code a fairly complex form in about 45 mins. I do use it to create a bizObject (data model) - it is faster than I can do it.
I recently discovered an issue with paths and pushed code to the dApp.py (couple of days ago).
I still have issues with grids on Linux but it is deep in GTK (sometimes I get an error when I resize a column). On Windows I do not see the same issues.

If Dabo is indeed working with Python 3, why does all the Dabo information, including some in the Github repo, still say it is far from ready? When I found this thread, I got excited, but then I recalled that my 10-year-old project really needs to be a web app, (sigh). I hate javascript, and all web apps use it. How hard would it be to convert my 10-year-old Python 2/Dabo 2 code to Python 3/Dabo 3? (It is a pretty basic CRUD app.) The users of the app are in need of some changes, and while they wait for me to create a web version, it might be useful to have a new desktop version. I am afraid to get started, as I have spent the last few months getting up to speed on Dabo 2 again. Prior updates were last done in 2015!

Hi,

I use Dabo daily with python 3.8.x (have also used it with 3.10 using the latest wxPython). I currently have not used python 3.10 due to the fact I haven’t installed python 3.10 on my Linux box (that’s where I do my dev work).

You need to download the correct branch of Dabo.

If you have trouble you can contact me. There are a couple issues I should let you know. So of the IDE tools are very buggy.

Johnf

When I run my Dabo2 app Dabo puts many (all?) the Python in a file in a temp directory and runs it from there. How the heck am I supposed to use a debugger? I cannot insert breakpoints, as they do not move with the code, and the ‘one file’ does not exist until I run the app? Does it behave the same way in Dabo3?

BTW, I have this issue in VS Code with the Python extensions, as well as Pycharm, so it does not appear likely that I can use an IDE, as they are not aware of this behavior. It does make things more complicated using Dabo 2/Python 2.7.6 (the later 2.7 versions do not work with my app) vs Dabo 3, but if this is how Dabo 3 runs, I will need a way to use breakpoints or I will not be able to use Dabo 3.

After further review, it looks like Dabo makes lots of temp files, not just one, and these files do not exist before or after execution. I found I could put a breakpoint at the beginning of my App.py file, which pauses execution, but then I have to step though all the execution of the app to find what I need. This is a major pain. Bottom line, how do I use a debugger with a Dabo app?

It sounds like you are using the ClassDesigner to create the form/window. To be honest I have not used the ClassDesigner forever. If I’m right, then I really can’t help much because I do not recall how to debug the forms built using ClassDesigner.

I just hand code the forms. I have found that I have much more flexibility and I am able to use many more of the special features of wxPython.

Small example:

bs6 = dBorderSizer(self, “horizontal”, Caption=" DNA ", FontBold = True)
bs6.Box.SetForegroundColour(wx.Colour(128, 0, 0))
bs6.append(dLabel(self, Caption = “DNA Owed”,ForeColor = “maroon”, FontBold = True),halign=‘right’)
bs6.append(dTextBox(self, Width = 150, DataSource = “public.esenroll”, DataField = “dna_owed”)) #text field
bs6.appendSpacer(8)

If I recall the way ClassDesigner worked - it creates a tmp file of the form (the one you appear to be unable to debug). I would suggest that you find than tmp file and make a copy. I believe then you can debug the tmp file.

I encourage you to try creating the forms by hand. Most simple forms I can create in minutes, very complex ones takes only an hour. Once I realized how to use the “Sizers” the forms I was creating for my apps were just perfect. You can mix wx controls with Dabo ones without any concerns, working with colors, grids. I even got to the point where I can create my own controls for those special features that are not available with Dabo or wxPython.

That said, there is one thing I use the ClassDesigner for - I use the designer to create my data models. Works well for that!

Dabo 3 ClassDesigner works (but not well). Since I had little need of the designer I never really tried to get it working under python 3.x.

You might also try contacting the Dabo list and see you can get Ed to reply.

If I can help let me know.

I used the tools I had 10 years ago (yes, literally! I started this application in 2012, and had not touched it since 2015), and it is a wonder any of it worked, as I clearly had no clue what I was doing! If desktop apps were still a thing, I might actually look at Dabo 3’s ClassDesigner, as the kinds of forms I end up with are not exactly simple…

At any rate, I do not like messing with the UI, but since I am the only person I will be working with for the foreseeable future, I get to do it all. To make it worse, I despise javascript, and am about to convert this application to a web app. Somebody just shoot me…

LOL - no need to be shot! If you want I can help. I had to laugh because I too have a student entry form for one of my projects. See attached.

There are other ways to create UI’s. If you wanted to stay with wxPython just google wxFormBuilder, wxGlade, there is one more that I can’t recall the name of. And of course there lot’s of web design tools.

I, like you, really do not like the javascript language so I tried to stay with python using Django and Flask. But you still need it for the front end. There is Flutter and it seems to avoid the direct use of javascript. But there are concerns that Google might just drop Flutter sometime in the future. I’m guessing I’ll be out of the business before that happens. Just playing with Flutter it reminds me of working with othere UI designers. Instead of “Sizers” they use containers. And to customize the control they call it a build process (still just passing properties).

Yes, that looks strangely familiar…

I understand. I used wxGlade AND wxFormbuilder in the past. I started using Dabo because of the ‘data aware’ controls. Sounds like I may have to look into Flutter. Right now, I am experimenting with web2py but like the rest of the tools for the web, the UI is going to be the hardest part. I just got web2py last night, so I really don’t have any idea how it works. It does, however, have the complete webapp toolset. We shall see.

Thanks for the info. I am still exploring my options. As I said, if building desktop apps was still a thing, I would be happier. Even the smallest businesses want web versions of software, even though the tools for building webapps are terrible. They don’t care how much trouble it is, and from their point of view I understand. It sounds so great, anyone can use the app from anywhere, with just a browser, one codebase for any OS, one place to deploy and update the app–never mind that there are problems with browser compatibility, and JavaScript looks a lot like BASIC from the 80s, and can be slow, and has different ‘flavors’, etc. If I just wanted to avoid writing JS code, I would use one of the ‘Python in the browser’ solutions, but they all seem to compile Python into JS to run, and they introduce overhead.

Anyone have experience with Brython, or Pyodide, or the one whose name I don’t recall but is running on WebAsm? How do they do the interface, anyway? Since Python does not have a good GUI included, I don’t get how they can ‘replace JavaScript in the browser’?

Yes, the feature that is hard to find is data aware controls. Dabo does a great job hiding much of what has to happen to data to be displayed in a CRUD app. Dabo is aware of data changes, can update, save, insert new data etc… It was patterned after FoxPro.

Since I enjoyed creating desktop apps I started looking for a similar type of environment in creating the UI. I didn’t like the idea using HTML, CSS, and Javascript to create the UI. Although, CSS is very powerful - I bet you can do almost anything needed. But getting the data on to those controls is another matter. Yes, there are plenty of web frameworks to help but they take a steep learning curve and all of them are different (most use a virtual DOM). That is when I discovered Flutter which appears to be very straight forward. The problem - Google is just starting to provide web solutions and some desktop solutions. So, I am waiting (maybe for only a short time) until I know the web solution works well.