By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
445,908 Members | 2,056 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 445,908 IT Pros & Developers. It's quick & easy.

Good Looking UI for a stand alone application

P: n/a
Can someone recommend me a good API for writing a sexy looking (Rich UI like
WinForms) shrink wrap application

My requirement is that the application needs to look as good on Windows as
on the Apple Mac
Dec 16 '06 #1
Share this Question
Share on Google+
21 Replies


P: n/a
On 12/16/06, The Night Blogger <th*************@gmail.comwrote:
Can someone recommend me a good API for writing a sexy looking (Rich UI like
WinForms) shrink wrap application

My requirement is that the application needs to look as good on Windows as
on the Apple Mac
For my money (even though it's free!), you can't beat Dabo. It uses
the wxPython UI toolkit, so it looks great on Mac and Windows (Linux,
too), since it uses native UI widgets on each platform. They even have
tools to design your visual classes interactively.

Check it out at http://dabodev.com.
--

# p.d.
Dec 16 '06 #2

P: n/a
On 12/16/06, The Night Blogger <thenightblog...@gmail.comwrote:
Can someone recommend me a good API for writing a sexy looking (Rich UI like
WinForms) shrink wrap application
My requirement is that the application needs to look as good on Windows as
on the Apple Mac
wxPython or something layered on it would be the way to go. I tried all
the popular toolkits (except qt) and nothing else comes close for cross
platform gui work. Don't let people persuade you otherwise, that caused
me a lot of trouble.

-Sandra

Dec 17 '06 #3

P: n/a
The Night Blogger <th*************@gmail.comwrote:
Can someone recommend me a good API for writing a sexy looking (Rich UI
like WinForms) shrink wrap application

No, because such a thing doesn't exist.
My requirement is that the application needs to look as good on Windows as
on the Apple Mac
Crossplatform GUIs are a myth, you *always* end up with a lowest common
denominator (aka Windows) which makes your application look like crap on
other platforms. And when the toolkit/framework only makes it look like
semi-crap, it makes it *feel* like crap.

Because, you know, user interfaces aren't only about the look but also
(and most importantly) the feel, and the lowest common denominator (aka
Windows) won't bring a Mac feel to your app.

Crossplatform toolkits/frameworks suck. All of them. No exception. If
you want your app to look *AND* feel great on all platform, abstract the
core of your application and embed it in platform native GUI code.

--
Luc Heinrich
Dec 17 '06 #4

P: n/a
Sandra-24 wrote:
On 12/16/06, The Night Blogger <thenightblog...@gmail.comwrote:
>Can someone recommend me a good API for writing a sexy looking (Rich UI
like WinForms) shrink wrap application
>My requirement is that the application needs to look as good on Windows
as on the Apple Mac

wxPython or something layered on it would be the way to go. I tried all
the popular toolkits (except qt) and nothing else comes close for cross
platform gui work. Don't let people persuade you otherwise, that caused
me a lot of trouble.
Well, you should try qt too ;)

BTW, does wxWindow/wxPython have something that allows you to switch the OK
and Cancel button position according to the current machine GUI guidelines?

Dec 17 '06 #5

P: n/a
On Sun, 17 Dec 2006 09:37:04 +0100, lu*@honk-honk.com (Luc Heinrich)
wrote:
>Crossplatform toolkits/frameworks suck. All of them. No exception. If
you want your app to look *AND* feel great on all platform, abstract the
core of your application and embed it in platform native GUI code.
+1. Applications beyond very basic GUI's are better off rewriting the
GUI for each application, while keeping the business logic separate.
Even something as basic as QuickTime sucks on Windows.

I'd be curious to see the source code to Skype: I just installed the
Linux version, and it looks very nice. Maybe it was recompiled with
Kylix.
Dec 18 '06 #6

P: n/a
Vincent Delporte wrote:
On Sun, 17 Dec 2006 09:37:04 +0100, lu*@honk-honk.com (Luc Heinrich)
wrote:
>>Crossplatform toolkits/frameworks suck. All of them. No exception. If
you want your app to look *AND* feel great on all platform, abstract the
core of your application and embed it in platform native GUI code.

+1. Applications beyond very basic GUI's are better off rewriting the
GUI for each application, while keeping the business logic separate.
Even something as basic as QuickTime sucks on Windows.
Read my second reply before reading that part again ;)
I'd be curious to see the source code to Skype: I just installed the
Linux version, and it looks very nice. Maybe it was recompiled with
Kylix.
They use QT. Back to read the first part of your post.

Dec 18 '06 #7

P: n/a
On Mon, 18 Dec 2006 01:23:10 +0100, Christophe Cavalaria
<ch*************@free.frwrote:
>They use QT. Back to read the first part of your post.
It doesn't make much difference:
- QT is big, so even small apps carry a lot of baggage
- by not using the native widgets, you're dependent on that layer to
keep up with changes in the look & feel of the platform (eg. XP's
widgets that look different from previous widgets).

Bottom line: GUI apps are better off extracting the maximum amount of
logic into OS-agnostic code, and then rewrite the GUI for each
platform.

Even better: Considering that Windows has a 95% market share, make
doubly-sure that it makes financial sense to provide a cross-platform
GUI application (the server can be written in text mode, and can then
be available for multiple OS's with no major problem).
Dec 18 '06 #8

P: n/a
You could write it as a web app, with an executable which launches the
server and points a browser at it.

Python GUI work is a bit of a drag, really. One of the worst things
about it, IMHO.

-T
Vincent Delporte wrote:
On Mon, 18 Dec 2006 01:23:10 +0100, Christophe Cavalaria
<ch*************@free.frwrote:
They use QT. Back to read the first part of your post.

It doesn't make much difference:
- QT is big, so even small apps carry a lot of baggage
- by not using the native widgets, you're dependent on that layer to
keep up with changes in the look & feel of the platform (eg. XP's
widgets that look different from previous widgets).

Bottom line: GUI apps are better off extracting the maximum amount of
logic into OS-agnostic code, and then rewrite the GUI for each
platform.

Even better: Considering that Windows has a 95% market share, make
doubly-sure that it makes financial sense to provide a cross-platform
GUI application (the server can be written in text mode, and can then
be available for multiple OS's with no major problem).
Dec 18 '06 #9

P: n/a
On 17 Dec 2006 21:20:14 -0800, "tl**********@gmail.com"
<tl**********@gmail.comwrote:
>You could write it as a web app, with an executable which launches the
server and points a browser at it.
Right, I was thinking of this too, but since the OP was talking of a
fat app...
>Python GUI work is a bit of a drag, really. One of the worst things
about it, IMHO.
But then, it was built for write text-based scripts. I assume someone
could take it, and turn it into a GUI-based solution for Windows, but
it's probably quite a lot of work, and maybe there just isn't anyone
willing to pay for it. It'd be cool, though to be able to just send
someone a 10KB GUI Python script and have it run in Windows natively
:-)
Dec 18 '06 #10

P: n/a
On 12/17/06, Luc Heinrich <lu*@honk-honk.comwrote:
My requirement is that the application needs to look as good on Windows as
on the Apple Mac

Crossplatform GUIs are a myth, you *always* end up with a lowest common
denominator (aka Windows) which makes your application look like crap on
other platforms. And when the toolkit/framework only makes it look like
semi-crap, it makes it *feel* like crap.
You're full of it. I routinely write GUI apps in Dabo for both Windows
and Linux users, and they look just fine on both platforms. Using
sizers is the key; layouts just 'look right' no matter what the native
fonts and control sizes are.

--

# p.d.
Dec 18 '06 #11

P: n/a
On 12/17/06, Christophe Cavalaria <ch*************@free.frwrote:
Sandra-24 wrote:
On 12/16/06, The Night Blogger <thenightblog...@gmail.comwrote:
Can someone recommend me a good API for writing a sexy looking (Rich UI
like WinForms) shrink wrap application
My requirement is that the application needs to look as good on Windows
as on the Apple Mac
wxPython or something layered on it would be the way to go. I tried all
the popular toolkits (except qt) and nothing else comes close for cross
platform gui work. Don't let people persuade you otherwise, that caused
me a lot of trouble.

Well, you should try qt too ;)

BTW, does wxWindow/wxPython have something that allows you to switch the OK
and Cancel button position according to the current machine GUI guidelines?
Yes. See wxDialog.CreateButtonSizer, which will return a sizer
(probably, on some embedded platforms it might not create actual
buttons, see docs) that has ok/cancel buttons in the standard position
for the platform, and with the correct stock graphics and text on
those platforms that have such a concept (like Gtk/GNOME).
Dec 18 '06 #12

P: n/a
Peter Decker <py******@gmail.comwrote:
You're full of it. I routinely write GUI apps in Dabo for both Windows
and Linux users, and they look just fine on both platforms.
Oh, I'm sure you do. Now go try to run one of your Dabo apps on a Mac
and see how it looks/feels... :>

Here's a hint directly taken from the Dabo homepage: "It also suffers
from the same display limitations on some platforms (most notably OS X),
but these should improve as the underlying toolkits improve."
Using sizers is the key; layouts just 'look right' no matter what the native
fonts and control sizes are.
No, sizers are a tiny part of a much bigger problem. Sizers might be the
key to solve parts of the "look" problem, they don't address any of the
"feel" problem.

But you clearly have a point here, so let me rephrase: "Crossplatform
toolkits/frameworks suck. All of them. No exception. UNLESS you only
target the lowest common denominator, aka Windows and its Linux
followers".

Now, the OP *explicitely* said that "[his] requirement is that the
application needs to look as good on Windows as on the Apple Mac", so
the rephrasing does not apply in this case. So here's a last try:

"Crossplatform toolkits/frameworks suck. All of them. No exception.
ESPECIALLY if one of your target is Mac OS".

--
Luc Heinrich
Dec 18 '06 #13

P: n/a
Luc Heinrich wrote:
Peter Decker <py******@gmail.comwrote:
>You're full of it. I routinely write GUI apps in Dabo for both Windows
and Linux users, and they look just fine on both platforms.

Oh, I'm sure you do. Now go try to run one of your Dabo apps on a Mac
and see how it looks/feels... :>
It looks/feels like a native app on OS X.

Here's a hint directly taken from the Dabo homepage: "It also suffers
from the same display limitations on some platforms (most notably OS X),
but these should improve as the underlying toolkits improve."
That was written a long time ago, and doesn't really apply anymore as a
lot of effort has gone into wxPython over the past three years getting
correctly interfaced to the OS X native API.

(Note to self: rewrite that (prescient) paragraph).

>Using sizers is the key; layouts just 'look right' no matter what the native
fonts and control sizes are.

No, sizers are a tiny part of a much bigger problem. Sizers might be the
key to solve parts of the "look" problem, they don't address any of the
"feel" problem.
Admittedly, to some extent there is a lowest common denominator problem
inherent in any UI toolkit that tries to be crossplatform and use the
platform's native GUI. But for the most part, that just isn't the case
anymore in a practical sense.

Why not use the best crossplatform native toolkit (wxPython) and then if
you need native features that aren't provided, use ctypes or something
to get access to the native GUI? Nothing in wxPython or Dabo prevents
you from doing that.

But you clearly have a point here, so let me rephrase: "Crossplatform
toolkits/frameworks suck. All of them. No exception. UNLESS you only
target the lowest common denominator, aka Windows and its Linux
followers".
Absolutism sucks. Please try not to be so black and white about things,
and you may find you enjoy life more.

Now, the OP *explicitely* said that "[his] requirement is that the
application needs to look as good on Windows as on the Apple Mac", so
the rephrasing does not apply in this case. So here's a last try:

"Crossplatform toolkits/frameworks suck. All of them. No exception.
ESPECIALLY if one of your target is Mac OS".
It is much more nuanced than that.
--
pkm ~ http://paulmcnett.com
Dec 18 '06 #14

P: n/a
On 12/18/06, Luc Heinrich <lu*@honk-honk.comwrote:
You're full of it. I routinely write GUI apps in Dabo for both Windows
and Linux users, and they look just fine on both platforms.

Oh, I'm sure you do. Now go try to run one of your Dabo apps on a Mac
and see how it looks/feels... :>
I don't have a Mac, although I would certainly like one. But one of
the two authors of Dabo is a Mac user, and says that he does all his
development on a Mac, and then tests it on the other platforms. Look
at the screencasts on the Dabo site - most of them are recorded on OS
X.
Here's a hint directly taken from the Dabo homepage: "It also suffers
from the same display limitations on some platforms (most notably OS X),
but these should improve as the underlying toolkits improve."
OK, it's true: you don't have 100% access to the lickable Aqua stuff
that a Cocoa app might be able to use. But paged controls use native
Aqua tabs; progress bars are native Aqua bars, buttons are native Aqua
buttons... Perfect? Of course not. But stating that it sucks is a load
of crap.
Using sizers is the key; layouts just 'look right' no matter what the native
fonts and control sizes are.

No, sizers are a tiny part of a much bigger problem. Sizers might be the
key to solve parts of the "look" problem, they don't address any of the
"feel" problem.
Huh? Based on what I've seen on the screencasts, the apps look better
on the Mac than they do on XP. How should I judge how they "feel"?
SIzers automatically take care of font metric differences and native
control size differences.
But you clearly have a point here, so let me rephrase: "Crossplatform
toolkits/frameworks suck. All of them. No exception. UNLESS you only
target the lowest common denominator, aka Windows and its Linux
followers".

Now, the OP *explicitely* said that "[his] requirement is that the
application needs to look as good on Windows as on the Apple Mac", so
the rephrasing does not apply in this case. So here's a last try:
Well, I don't think *anything* looks as good on Windows as it does on
a Mac, whether it is from a platform-specific toolkit such as Winforms
or a cross-platform toolkit like wxPython. If you want it to look as
good on Windows, you'll have to use VNC or something like that.
"Crossplatform toolkits/frameworks suck. All of them. No exception.
ESPECIALLY if one of your target is Mac OS".
Such self-important pronouncements would be better received if you
brought them down the mountain on stone tablets.
--

# p.d.
Dec 18 '06 #15

P: n/a
Paul McNett <p@ulmcnett.comwrote:
It looks/feels like a native app on OS X.
I'm sorry, but the screenshots I'm seeing on the Dabo website all look
like ugly Windows ports (when they don't look like straight X11 crap). I
can't comment on the feel of course, but I wouldn't hold my breath. I'm
downloading the screencasts as we "speak", but I'm not holding my breath
either.

[UPDATE] I have watched three of the Dabo screencasts and the presented
application are *very* far from looking/feeling like native OS X
applications. Sorry.
Why not use the best crossplatform native toolkit (wxPython) and then if
you need native features that aren't provided, use ctypes or something
to get access to the native GUI? Nothing in wxPython or Dabo prevents
you from doing that.
Eh, funny, I have used wx thingy for quite some time (when it was
actually still called wxWindows and then when they switched to
wxWidgets) and it's probably the worst of all crossplatform toolkits I
have ever used. So I'm not sure you'll be able to convince me here :D

Ok, now here's a question for you: if crossplatform toolkits/frameworks
are sooooo great and automagically allow to produce superlickable and
native-looking/feeling applications on all three major platforms, why is
there so few of those applications on OS X ?

"Because Mac users are elitists assholes" is not the good answer by the
way :)

--
Luc Heinrich
Dec 19 '06 #16

P: n/a
Peter Decker <py******@gmail.comwrote:
I don't have a Mac, although I would certainly like one. But one of
the two authors of Dabo is a Mac user, and says that he does all his
development on a Mac, and then tests it on the other platforms. Look
at the screencasts on the Dabo site - most of them are recorded on OS
X.
Yeah, I have watched three of them and they are glaring examples of what
I'm talking about. The applications presented not only don't look right,
at all, they apparently don't feel right either.
OK, it's true: you don't have 100% access to the lickable Aqua stuff
that a Cocoa app might be able to use. But paged controls use native
Aqua tabs; progress bars are native Aqua bars, buttons are native Aqua
buttons... Perfect? Of course not. But stating that it sucks is a load
of crap.
No it's not, because you insist on presenting only one part of the
problem. Using native widgets is *far* from enough.
Such self-important pronouncements would be better received if you
brought them down the mountain on stone tablets.
No problem, let me get my chisel, do you prefer Fedex or UPS ? :p

--
Luc Heinrich
Dec 19 '06 #17

P: n/a
Ok, now here's a question for you: if crossplatform toolkits/frameworks
are sooooo great and automagically allow to produce superlickable and
native-looking/feeling applications on all three major platforms, why is
there so few of those applications on OS X ?

"Because Mac users are elitists assholes" is not the good answer by the
way :)
You've got a ridiculous straw man here. Nobody has ever said that they
do this, and nobody with any experience would. I don't actually think
you're interested in what is possible and what isn't, and I don't even
think that you actually evaluate the screenshots in a context where
it's possible for you to have any other opinion.

wx is the only popular toolkit of it's kind - it's a wrapper toolkit,
that uses actual native controls, not just ones designed to look like
them. For many wxPython/wxWidgets applications, there is *no
difference* between an app written directly to cocoa and a wxwidgets
app besides the API the author used. None, zero, zilch. Any "feel"
issues you claim to be present are solely because the author either
didn't know about or didn't care about a convention on the mac
platform.

The only other major cross platform toolkit with good mac support is
Qt, and I don't follow it's development closely. It may also use
native controls, at least in some cases, or it may still render
everything via the presentation manager, but regardless it's got a lot
of work and again, in most cases, it's hard if not impossible to tell
the difference between a "native" app and a qt one. I'm not a qt
expert so I won't spend too much energy defending it.

The look is easiest, of course. There's more to the look than just
that, of course, there's things like the stock behavior of controls.
wxPython gets that mostly for free, because it's using actual native
controls. There's things like the button order and layout, and wx
provides APIs to address that. Not everyone uses them, which is too
bad. There's some standard platform conventions like where your menu
items go. wx provides support for that. There's the fairly minor
issues of making sure your layout works with differently sized
controls and text, the wx layout mechanism addresses that.

Finally, there's some poorly defined "mac style" issues. wx, and no
toolkit, not even the native one, can address that. Many cross
platform apps are written on Windows with windows users in mind and
use windows assumptions, like that it's fine for a context menu to be
the only way to interact with something. This category is where almost
all complaints against cross platform apps fall, and it's ridiculous
because it's not something that a toolkit can address. You can, and
people do, write exactly the same sort of interface into mac native
applications. FinkCommander is a good example.

There's a few more caveats I haven't addressed, and there are places
where wx isn't perfect. In wxPython, there are quite a few commonly
used controls that are custom controls hand-designed in Python, and
don't wrap native controls, so that can be a problem. It's not a
panacea, and anyone who sells it as such is wrong. But it doesn't
"suck", either. And it's a lot easier than maintaining multiple GUI
codebases, especially for platforms that don't see as much use.

Why are there so few applications? The real answer is probably that
the mac developer community is smaller than either the windows or
linux dev community, and people who develop for the mac tend not to
care about any other platform. So most of the crossover comes from the
other direction, and the mac community, being elitist assholes, makes
scathing comments about how it assumes you have 2 mouse buttons.

FYI: OS X ships with wxWidgets installed. How many applications built
into OS X are built using it? Are you sure? How would you know?
Dec 19 '06 #18

P: n/a
hg
The Night Blogger wrote:
Can someone recommend me a good API for writing a sexy looking (Rich UI
like WinForms) shrink wrap application

My requirement is that the application needs to look as good on Windows as
on the Apple Mac

I would download the wxPython demo and test it on all platforms if I were
you: no coding and you see stuff right away / decide whether it is a good
choice.

.... I know it is mine (although I must confess I never tried it on a mac).

hg

Dec 19 '06 #19

P: n/a
Chris Mellon <ar*****@gmail.comwrote:
FYI: OS X ships with wxWidgets installed.
For the sole purpose of providing an easy way to run existing wxPerl and
wxPython code (and possibly "pure" wxWidgets code as well). As a
*porting* aid if you will, as hinted in the "Using Traditional UNIX
Graphical Environments" of the "Porting UNIX/Linux Applications to Mac
OS X" document, here:

<http://developer.apple.com/documenta...al/PortingUnix
/index.html>
How many applications built into OS X are built using it?
I quote you: none, zero, zilch :>
Are you sure? How would you know?
What's that ? Homework ? Oh well, here you go:

import os
import subprocess

def findLinkedWithWX(folder):
for root, dirs, files in os.walk(folder):
for d in list(dirs):
if d.endswith('.app'):
dirs.remove(d)
exename, _ = os.path.splitext(d)
exe = '%s/%s/Contents/MacOS/%s' % (root, d, exename)
popen = subprocess.Popen(['otool', '-L', exe],
stdout=subprocess.PIPE)
libs = popen.communicate()[0]
if 'libwx' in libs:
print d

findLinkedWithWX('/Applications')
findLinkedWithWX('/Developer')

--
Luc Heinrich
Dec 20 '06 #20

P: n/a
On Tue, 19 Dec 2006 08:15:18 -0600, "Chris Mellon" <ar*****@gmail.com>
wrote:
>There's a few more caveats I haven't addressed, and there are places
where wx isn't perfect.
BTW, do you know of a good article/book on writing cross-platform GUI
apps, with recommendations, pitfalls, etc. especially using wxWidgets?
Dec 21 '06 #21

P: n/a
On 12/20/06, Vincent Delporte <ju*****@acme.comwrote:
On Tue, 19 Dec 2006 08:15:18 -0600, "Chris Mellon" <ar*****@gmail.com>
wrote:
There's a few more caveats I haven't addressed, and there are places
where wx isn't perfect.

BTW, do you know of a good article/book on writing cross-platform GUI
apps, with recommendations, pitfalls, etc. especially using wxWidgets?
--
http://mail.python.org/mailman/listinfo/python-list

There's a book on both wxWidgets itself, and on wxPython. Both of them
focus primarily on the wx api, rather than on the more general cross
platform problems.

The wxWidgets book is part of Bruce Perens' open source series, and
you can get the PDF from http://phptr.com/perens.

The wxPython book isn't freely available, but you can order it from
wxpython.org.

Unfortunately, neither book points out too much in the way of pitfalls
- they're mainly focussed on the API. The wxWidgets book does have a
section on some common errors with conforming to platform standards
and what wx can and cannot do to help.
Dec 21 '06 #22

This discussion thread is closed

Replies have been disabled for this discussion.