[Business apps for Windows] Good grid + calendar, etc.?

G

Gilles Ganault

Hello

Since Python is such a productive language, I'd really like to be
able to use it to write GUI apps for Windows, but business apps
require rich widgets like (DB)grids, calendars, etc.

The ones available in wxWidgets looked a bit too basic compared to
what's available for eg. Delphi or .Net, and don't seem to be under
active development (lots of "1.0", "Last updated 2005", etc.)

For instance, here's wxGrid and DevExpress' grid for Delphi:
http://www.simpol.com/guiimages/wxgrid.jpg
http://community.devexpress.com/blogs/thinking/PrintingXtraPivotGridForm.png

Is it hopeless, or did I overlook things? Are there other solutions I
should look at (FLTK, etc.)? For those of you writing business apps in
Python for Windows, how do things go as far as GUI widgets are
concerned?

Thank you.
 
R

Ryan Ginstrom

On Behalf Of Gilles Ganault
Is it hopeless, or did I overlook things? Are there other
solutions I should look at (FLTK, etc.)? For those of you
writing business apps in Python for Windows, how do things go
as far as GUI widgets are concerned?

To do a bit of shameless plugging, I wrote an overview of Python GUI
platforms for Windows a month or two ago:
http://ginstrom.com/scribbles/2008/02/26/python-gui-programming-platforms-fo
r-windows/

For your stated needs, I'd advise checking out IronPython or Python.NET
(which allow use of .NET GUI libraries).

Regards,
Ryan Ginstrom
 
G

Gilles Ganault

For your stated needs, I'd advise checking out IronPython or Python.NET
(which allow use of .NET GUI libraries).

Thanks but I forgot to say that I'd rather not use .Net because
deployment/updates are too problematic for our audience.

... that's assuming that a GUI Python can install/update itself as
easily as eg. Delphi, which is where I could be wrong :-/
 
R

Ryan Ginstrom

On Behalf Of Gilles Ganault
Thanks but I forgot to say that I'd rather not use .Net
because deployment/updates are too problematic for our audience.

.. that's assuming that a GUI Python can install/update
itself as easily as eg. Delphi, which is where I could be wrong :-/

wxPython can be made to look pretty nice. Check out Chandler for an example.
http://chandlerproject.org/

Delphi has a truly impressive ecosystem of controls and widgets. If there
were a commercial market for wxPython/wxWidgets widgets, I'm sure we'd get a
bunch of very nice ones as well. There is kind of an analog with the
"bounty" program for developing widgets, but it doesn't appear very active.

If you don't mind being Windows-only, there's another approach that I've
been working on. I use a WTL application to host the web browser, then pass
the browser instance to a COM server written in Python, along with a COM
wrapper of the application window. This gives me the flexibility of HTML +
JavaScript + Python, but eliminates two of the big issues with web apps:
latency and lack of Windows conventions like keyboard shortcuts and Drag &
Drop. I've yet to deploy this approach in an application, but from my
prototypes I'm liking it.

Regards,
Ryan Ginstrom
 
M

Mike Driscoll

Hello

        Since Python is such a productive language, I'd really like to be
able to use it to write GUI apps for Windows, but business apps
require rich widgets like (DB)grids, calendars, etc.

The ones available in wxWidgets looked a bit too basic compared to
what's available for eg. Delphi or .Net, and don't seem to be under
active development (lots of "1.0", "Last updated 2005", etc.)

For instance, here's wxGrid and DevExpress' grid for Delphi:http://www.simpol.com/guiimages/wxg...ess.com/blogs/thinking/PrintingXtraPivotGridF...

Is it hopeless, or did I overlook things? Are  there other solutions I
should look at (FLTK, etc.)? For those of you writing business apps in
Python for Windows, how do things go as far as GUI widgets are
concerned?

Thank you.


The wxPython GUI is updated much more often than the Tkinter toolkit.
I recall that there is an advanced calendar widget that's been made by
one of the regulars on the wxPython list, but it's not a part of the
official distribution at this time. You'll have to ask about calendar
widgets and such there though.

The grid can be quite advanced. Did you look at the wxPython demo? Or
Dabo?

Mike
 
G

Gilles Ganault

wxPython can be made to look pretty nice. Check out Chandler for an example.
http://chandlerproject.org/

Yup, they developped some nice-looking widgets, but it doesn't seem
like there's an ecosystem around wxWidgets. I, for one, wouldn't mind
paying for widgets missing from the stock version.
If you don't mind being Windows-only, there's another approach that I've
been working on.

Thanks for the idea, but I don't have the skills for something like
that :) Besides, the reason for Python is to make it faster/easier to
write apps, so WTL + browser + COM seems too hard for me.
 
G

Gilles Ganault

I recall that there is an advanced calendar widget that's been made by
one of the regulars on the wxPython list, but it's not a part of the
official distribution at this time. You'll have to ask about calendar
widgets and such there though.

The impression I get, is that those extra widgets (besides the usual
edit, listbox, etc.) aren't really developped/maintained, which is a
problem when comitting for applications that will have to be
developped for a few years.

For instance, is there a calendar in wxPython that has this look and
feel, and is under active development?
http://www.devexpress.com/Products/VCL/ExScheduler/
The grid can be quite advanced. Did you look at the wxPython demo? Or
Dabo?

Yes, but although the basic wigets are just fine, wxGrid looks a bit
like the basic TStringGrid in Delphi, ie. it's pretty basic so that
several vendors came up with enhanced alternatives. But maybe I
haven't played with it long enough.

www.asiplease.net/computing/delphi/images/string_grid_demo_popstars.gif

It lacks sorting capability, merging cells with the same content, etc.
 
P

python

Ryan,

<snip>
If you don't mind being Windows-only, there's another approach that I've
been working on. I use a WTL application to host the web browser, then
pass
the browser instance to a COM server written in Python, along with a COM
wrapper of the application window. This gives me the flexibility of HTML
+
JavaScript + Python, but eliminates two of the big issues with web apps:
latency and lack of Windows conventions like keyboard shortcuts and Drag
& Drop.
</snip>

Instead of the COM approach, have you considered using a local, client
based Python server as a container for your business logic and GUI
(DHTML, AJAX)? This would give you a cross platform solution, without
the typical browser/server latency, and via techniques like AJAX,
perhaps more of a desktop look and feel? I haven't done this yet, but
I'm grappling with the same question ("how to create sexy looking
business applications using Python").

Malcolm
 
R

Ryan Ginstrom

From: (e-mail address removed) [mailto:p[email protected]]
Instead of the COM approach, have you considered using a
local, client based Python server as a container for your
business logic and GUI (DHTML, AJAX)? This would give you a
cross platform solution, without the typical browser/server
latency, and via techniques like AJAX, perhaps more of a
desktop look and feel? I haven't done this yet, but I'm
grappling with the same question ("how to create sexy looking
business applications using Python").

I have used a cherrypy server wrapped with py2exe for a "desktop server
app", but the local server in the browser solution has some weaknesses. Drag
and drop is one. Another is native dialog boxes. A third is problems with
firewalls. And although you can do keyboard shortcuts with Ajax, the
mechanism isn't quite the same.

Also, using COM you can manipulate the DOM from Python, removing the need
for AJAX. In that case, your only need for JavaScript would be for prebuilt
library functionality (assuming you like Python better than JavaScript).

Regards,
Ryan Ginstrom
 
G

Gilles Ganault

Instead of the COM approach, have you considered using a local, client
based Python server as a container for your business logic and GUI
(DHTML, AJAX)?

But web-based apps are even worse, since the set of widgets is even
more basic, and web programming is hell. That's why I don't bother,
and write fat apps instead.

It'd be awesome if someone came up with a commercial offer of widgets
that are either missing or not feature-rich enough in wxPython for
real business apps.
 
M

Mike Driscoll

The impression I get, is that those extra widgets (besides the usual
edit, listbox, etc.) aren't really developped/maintained, which is a
problem when comitting for applications that will have to be
developped for a few years.


That's debatable. While I doubt the author of the widgets on this site
is constantly working on them, if you have a problem, he is very
responsive and has been known to fix them within hours of the bug
report:

http://xoomer.alice.it/infinity77/main/freeware.html

The Float Canvas widget is also actively maintained by its author.
These are just a few examples.

For instance, is there a calendar in wxPython that has this look and
feel, and is under active development?http://www.devexpress.com/Products/VCL/ExScheduler/


I don't know. You should ask on the wxPython user's list:
http://www.wxpython.org/maillist.php

I have personally written a reminder application that has that same
pop-up window though. The grid in the photo that show the months on
the left and letters on the top would be trivial to create. I don't
know how to overlay the grid with other widgets, but I suspect it
would only require doing something in a paint event or embedding some
additional widgets in it.
Yes, but although the basic wigets are just fine, wxGrid looks a bit
like the basic TStringGrid in Delphi, ie. it's pretty basic so that
several vendors came up with enhanced alternatives. But maybe I
haven't played with it long enough.

www.asiplease.net/computing/delphi/images/string_grid_demo_popstars.gif

It lacks sorting capability, merging cells with the same content, etc.

The MegaGrid example demonstrates sorting. You'll have to ask about
the other features on their list. I haven't done that as of yet.

Mike
 
S

Stef Mientki

Ryan said:
To do a bit of shameless plugging, I wrote an overview of Python GUI
platforms for Windows a month or two ago:
http://ginstrom.com/scribbles/2008/02/26/python-gui-programming-platforms-fo
r-windows/

For your stated needs, I'd advise checking out IronPython or Python.NET
(which allow use of .NET GUI libraries).
AFAIK,
Venster is (at least for windows-mobile-like platforms) replaced by the
very good and stable PocketPyGUI.

cheers,
Stef
 
M

Mike Driscoll

The impression I get, is that those extra widgets (besides the usual
edit, listbox, etc.) aren't really developped/maintained, which is a
problem when comitting for applications that will have to be
developped for a few years.

For instance, is there a calendar in wxPython that has this look and
feel, and is under active development?http://www.devexpress.com/Products/VCL/ExScheduler/


Yes, but although the basic wigets are just fine, wxGrid looks a bit
like the basic TStringGrid in Delphi, ie. it's pretty basic so that
several vendors came up with enhanced alternatives. But maybe I
haven't played with it long enough.

www.asiplease.net/computing/delphi/images/string_grid_demo_popstars.gif

It lacks sorting capability, merging cells with the same content, etc.

I found one of the projects I was thinking of. It's called pyspread
and has been getting updated quite a bit of late: http://sourceforge.net/projects/pyspread/

Mike
 
F

Fuzzyman

Thanks but I forgot to say that I'd rather not use .Net because
deployment/updates are too problematic for our audience.

.. that's assuming that a GUI Python can install/update itself as
easily as eg. Delphi, which is where I could be wrong :-/

Windows Forms (.NET) is one of the best looking Windows GUI toolkits
I've seen. It is also generally very easy to use from IronPython.

We haven't had a problem with deployment / updates with our customers
[1]. Problems you anticipate may be historical. .NET 2 has been pushed
out by Windows update for quite some time and it is *likely* that your
target computers already have it installed.

Further, the latest release of .NET (.NET 3.5 SP1 - still be in Beta)
includes tools for building 'msi' installers which either bundle the
parts of .NET you need - or handle the download and install of .NET on
the client machine (which approach you take is up to you - and
obviously they *don't* depend on having .NET already installed on the
target machine).

You can see some of the details on Scott Guthrie's blog:

http://weblogs.asp.net/scottgu/arch...nd-net-framework-3-5-service-pack-1-beta.aspx

Scroll down to the parts about ".NET Framework Client Profile Setup
Package":

.NET 3.5 SP1 introduces a new setup package option for developers
building .NET client applications called the ".NET Framework Client
Profile". This provides a new setup installer that enables a smaller,
faster, and simpler installation experience for .NET client
applications on machines that do not already have the .NET Framework
installed.

And also ".NET Framework Setup Bootstrapper for Client Applications":

.NET 3.5 SP1 introduces a new "bootstrapper" component that you can
use with client applications to help automate making sure that the
right version of the .NET Framework is installed. The bootstrapper
component can handle automatically downloading and installing either
the .NET Framework Client Profile or the full .NET Framework Setup
Package from the Internet if your machine doesn't have either of them
installed. The boostrapper can also automatically handle upgrading
machines that have a previous version of the .NET Framework
installed.

All the best,


Michael Foord
http://www.ironpythoninaction.com/


[1] At Resolver Systems: http://www.resolversystems.com/
 
M

Michael Torrie

Gilles said:
Yes, but although the basic wigets are just fine, wxGrid looks a bit
like the basic TStringGrid in Delphi, ie. it's pretty basic so that
several vendors came up with enhanced alternatives. But maybe I
haven't played with it long enough.

You don't say anything about looking at Dabo. If you are serious about
writing real business apps, then you really do need to look at Dabo.
While it's GUI objects may not be quite up to what you need, the
framework itself is very critical to developing business apps. From
your posts in this thread, it sounds to me like Dabo would greatly help
you build the back-end database and business logic at least.

Despite what you say about web interfaces in business applications, from
what I've seen it's all going that way. PeopleSoft, etc. Everything is
about web-delivered apps, with web services and custom integration these
days. HTML/CSS/Ajax and a bit of Silverlight or Flash for the super
custom widgets is actually competing *very* well with the traditional
Delphi business widgets. True this requires you to maintain "code" in
multiple languages, but frankly that's the cost of doing business.
Business apps are *complicated* to build.

When it does come down to it, you'll probably have to build some of your
own widgets. PyQT makes this quite easy. Canvases, HTML widgets, etc.
If you're going to all the work of developing a complete business app,
then the work that goes into developing custom GUI components isn't that
bad, compared.

Since your target audience appears to be windows users, though, I'd
second the notion of using IronPython and leveraging SWF .NET widgets.
In theory this would run fine under Mono on Unix if you wanted to branch
out.
 
F

Fuzzyman

You don't say anything about looking at Dabo. If you are serious about
writing real business apps, then you really do need to look at Dabo.
While it's GUI objects may not be quite up to what you need, the
framework itself is very critical to developing business apps. From
your posts in this thread, it sounds to me like Dabo would greatly help
you build the back-end database and business logic at least.

Despite what you say about web interfaces in business applications, from
what I've seen it's all going that way. PeopleSoft, etc. Everything is
about web-delivered apps, with web services and custom integration these
days. HTML/CSS/Ajax and a bit of Silverlight or Flash for the super
custom widgets is actually competing *very* well with the traditional
Delphi business widgets. True this requires you to maintain "code" in
multiple languages, but frankly that's the cost of doing business.
Business apps are *complicated* to build.


If your web application uses Silverlight, then the client side part
can be written in Python (IronPython).

Michael Foord
http://www.ironpythoninaction.com/
 

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

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top