Python for professsional Windows GUI apps?

G

Gilles Ganault

Hello

I was wondering if some people in this ng use Python and some GUI
toolkit (PyWin32, wxWidgets, QT, etc.) to build professional
applications, and if yes, what it's like, the pros and cons, etc.

I'm especially concerned about the lack of controls, the lack of
updates (lots of controls in wxWidgets are 1.0 deadware), and problems
linked to how to update users' PC remotely when I build a new version
using eg. Py2exe.

I need controls for business apps like access to databases, good data
grid, printing reports (with or without barcodes), etc.

Thank you.
 
S

sturlamolden

I'm especially concerned about the lack of controls, the lack of
updates (lots of controls in wxWidgets are 1.0 deadware), and problems
linked to how to update users' PC remotely when I build a new version
using eg. Py2exe.

There is pywin32 if you like to work with MFC and ActiveX. Apart from
that, lack of controls is not what I associate with GTK, Qt or
wxWidgets.

I need controls for business apps like access to databases, good data
grid, printing reports (with or without barcodes), etc.

Why do you want GUI controls for this? If you think you do, Visual
Basic has crippled your mind.

Python has packages for database connectivity. There is ReportLab for
reports, matplotlib for graphs, pyagg or pycairo for whatever you want
to draw, etc. You can find Python packages for anything you can
imagine.



Sturla
 
S

sturlamolden

and problems
linked to how to update users' PC remotely when I build a new version
using eg. Py2exe.

Remote update is a problem regardless of language. It typically
involves the following steps:

1. Download the update from a server using a background thread.

2. When the program starts, look for downloaded updates. Install
updates, then launch the Python app.

The problem is that a program's DLLs etc. become write-protected when
the program runs. So you nees two programs that cooperate to install
updates. But regardless of language you will run into this problem -
it is not Python specific. With py2exe, you can solve this using two
executables. The first py2exe launch a script that installs updates,
then spawns the second py2exe executable. The second py2exe lauch a
script that installs updates in the first, then launch the Python app.
The Python app then run a background thread that downloads new
updates.


Sturla Molden
 
R

rurpy

I was wondering if some people in this ng use Python and some GUI
toolkit (PyWin32, wxWidgets, QT, etc.) to build professional
applications, and if yes, what it's like, the pros and cons, etc.

I'm especially concerned about the lack of controls, the lack of
updates (lots of controls in wxWidgets are 1.0 deadware), and problems
linked to how to update users' PC remotely when I build a new version
using eg. Py2exe.

I need controls for business apps like access to databases, good data
grid, printing reports (with or without barcodes), etc.

I sure you'll get plenty of GUI-x is really great and you'll
is just as good as anything commercial out there, so I thought
a minority opinion, even if unpopular, might be useful.

Won't comment on the control choices or packaging issues, but I
am at the moment doing a little database-connected app that
presents editable data in a spreadsheet like (grid) form using
wxPython.

It has been a very painful process. I have not found any simple
pre-written code to connect a wxPython grid to a database so
that the result is something like a Microsoft Access datasheet.[*1]
It is probably taking me 10 times as long to develop this app
in WxPython/Postgresql as it did to develop something similar
in MS Access/VBA/SQL Server.

I haven't needed for printing yet, but I've read wxpython maillist
posts about the difficultly of getting printing to work so you may
want to check that out as well before commiting to wxpython.

A meta-issue that applies (I think) to both wxPython and PyQt
is that both projects seem to be highly dependent on a single
person leading one to worry about the "bus" scenario.

I am not a fan of Microsoft (in fact I despise their commercial
behavior and many aspects of thier products) but I am reporting
the reality as I've experienced it.

[*1] There are ORMs like Sqlalchemy but they introduce a additional
problems like inefficient database operations, dependency on a
large external package, etc. It is hard to tell for sure since
the Sqlalchemy docs are lousy, which of course means even more
development time.
 
P

Peter Decker

P.S. I have no idea why I'm pumping Dabo so much in this though I've never
used it!

I've used in fairly regularly for about 2 years now. I haven't had to
write that ugly wxPython code for so long that every time I see
examples on their mail list I wanna barf.

Dabo is powerful, Pythonic, and strongly supported by its developers.
Check it out at http://dabodev.com
 
S

sturlamolden

I've used in fairly regularly for about 2 years now. I haven't had to
write that ugly wxPython code for so long that every time I see
examples on their mail list I wanna barf.

I prefer wxFormBuilder. GUIs should be designed visually whenever
possible.
 
C

Che M

I'm especially concerned about the lack of controls, the lack of
updates (lots of controls in wxWidgets are 1.0 deadware),

I use wxPython. No lack of controls there, and most are up to
date. Which "lots" in wxWidgets are you thinking of?
I need controls for business apps like access to databases, good data
grid,

Should be fine with wxPython.
printing reports (with or without barcodes), etc.

Maybe ReportManager? (haven't used) or other options.

-cm
 
P

Peter Decker

I prefer wxFormBuilder. GUIs should be designed visually whenever
possible.

I use the Dabo Class Designer to visually design my forms. So what's
you're point? :)
 
S

sturlamolden

I use the Dabo Class Designer to visually design my forms. So what's
you're point?  :)

Nothing, except lobbying for wxFormBuilder for anyone who still
doesn't know of it. :)
 
W

Wolfgang Keller

I need controls for business apps like access to databases, good data
grid, printing reports (with or without barcodes), etc.

The area of _desktop_ database application development indeed looks like a vast and very hostile desert in the Python landscape.

The only framework that seems to be worth trying is Dabo. Unfortunately there's little documentation, and that's mostly outdated.

There's also Kiwi, but that's even less well documented.

And GNU Enterprise essentially seems to be dead.

Sincerely,

Wolfgang
 
G

Gilles Ganault

The area of _desktop_ database application development indeed looks like a vast and very hostile desert in the Python landscape.

The only framework that seems to be worth trying is Dabo. Unfortunately there's little documentation, and that's mostly outdated.

There's also Kiwi, but that's even less well documented.

And GNU Enterprise essentially seems to be dead.

Combined with the comment above about issues with printing, it looks
like Python for GUI apps isn't a very good idea :-/

I'd be interested in checking out commercial applications written in
Python for the Windows OS, if there are any.

Thank you.
 
D

David Boddie

The area of _desktop_ database application development indeed looks like a
vast and very hostile desert in the Python landscape.

The only framework that seems to be worth trying is Dabo. Unfortunately
there's little documentation, and that's mostly outdated.

There's also Kiwi, but that's even less well documented.

And GNU Enterprise essentially seems to be dead.

There's also Camelot, if that's the kind of thing you're after:

http://www.conceptive.be/projects/camelot

David
 
S

sturlamolden

Combined with the comment above about issues with printing, it looks
like Python for GUI apps isn't a very good idea :-/

With pywin32, printing is the same as for any other Windows app (you
get MFC for Python).
 
S

sturlamolden

The area of _desktop_ database application development indeed looks like a vast and very hostile desert in the Python landscape.

Yes, you don't have drag-and-drop database tools like MS Access or
FoxPro. You actually have to use a database API (such as pyodbc or
pymssql) with GUI (tkinter, wxPython, PyGTK, PyQt, MFC) manually. If
you need a framework for this, you should not be developing software
anyway.
 
P

Peter Decker

The only framework that seems to be worth trying is Dabo. Unfortunately there's little documentation, and that's mostly outdated.

To be honest, that was my biggest concern when I tried Dabo. However,
after as small a learning curve as one could expect for any
non-trivial tool, it seemed that if I wasn't sure what a particular
way to do something was, the most obvious guess was almost always
correct. Contrast that with developing in wxPython, which has quite a
bit of documentation, which I constantly had to refer to, because the
confusing and inconsistent design.

There is a step by step guide on Google docs written by one of the
authors that is a very helpful approach to using Dabo. The authors are
also very active on the dabo-users list, and any questions are quickly
answered.

So I guess if you need a desktop framework in Python, I would strongly
urge you to check out Dabo and not let the volume of documentation
scare you off.
 
S

Simon Brunning

2009/8/26 geekworking said:
If you are planning a database driven app, you should first settle on
a DB server. Any real enterprise DB system will put all of the
business logic in the database server. The choice of a front end
should be secondary.

The trend for some years now has been to get behavior out of the
database and into the application, where it belongs. True, we tend to
keep the presentation tier separate too, but we really don't "put all
of the business logic in the database server".

Going back to the OP's question, it would be worth taking a look at
what the resolver boys are up to: <http://www.resolversystems.com/>.
 
E

erikj

Hi,

You could have a look at Camelot, to see if it fits
your needs : http://www.conceptive.be/projects/camelot/

it was developed with cross platform business apps in
mind. when developing Camelot, we tried to build it using
wxWidgets first (because of the licensing at that time),
but it turned out that developing with QT proved to be
much more straightforward. QT is documented very well
and you seldom encounter 'strange' issues that cost hours
of time to pinpoint and fix.

the datagrid was developed to be able to handle millions
of database records without glitches and is flexible thanks
to QT's model-view-delegate framework.

we do print barcodes with this app (even directly to
zebra printers)

if you have questions regarding Camelot, please feel free
to post on our mailing list : http://groups.google.com/group/project-camelot

Regards,

Erik
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top