I am a complete beginner to python (I have only used it for a statistics class in the past). I want to develop a program that is kind of like FreeMind - it will allow the user to create Ishikawa diagrams for a particular purpose.

So essentially I want the user to be able to construct the Ishikawa diagram from a user interface while the internal representation in the form of a tree is being constructed behind the scenes.

I am wondering if Python is a good language to do such a thing in? Can I develop good guis in python and if so what would the best tools be for the job if I wanted to do so? The reason I ask about Python is that the person I discussed this project with would prefer that to be the language if possible. Or is some other language (not java as the person does not prefer it) more suitable for the purpose?

Thanks for any advice that you can give me.

Recommended Answers

All 18 Replies

I rekon you could do something simillar in python, of course it would take a lot of time and care but to do such a thing you need a GUI as you said and there are really only 3 main ones used (4 if you count qt).
That is
Tkinter
wxPython
pyGame

Firstly i don't think pyGame does the job, as the name states its for games.

Tkinter is pretty basic and no fun to work with in my opinion and in the end i pretty much do most things in wxPython as it is easy and great looking with lots of widgets that you can use to make things look even better.

So i think yes, you can do it, and i would do it in wxPython if i were you.

PyQt is by far the best gui toolkit for python. wxPython and pyGTK can't compare to it. It is a truly cross platform commercial grade library with excellent documentation. The only reason it doesn't have a broader user base is because the free version is under a gpl license (soon to be changed)

I have tried all the other main ones and have been severely frustrated with using them (with the exception of pyGTK, but it isn't really cross platform anyway, and doesn't look very nice on Windows).

The other options:

wxPython
pyGTK
TKinter
Ironpython
PythonCard

I have used PyQT, it is okay, but the user base is tiny and there is precious little help and too few good examples out on the net. You post a question on PyQt and rarely ever get an answer.

That may very well be true. I use a book and the documentation as my PyQt reference. I haven't really found a viable community to get help from.

That may very well be true. I use a book and the documentation as my PyQt reference. I haven't really found a viable community to get help from.

As you pointed out, the licensing issue has turned of lot of usually "open Source" people off. I think PyQT has a lot of things going for it.

+1 for wxpython for some reasons:
1. I have developed some apps in Python, and it is very easy and fast once you get used to it
2. No licence problems if I decide to sell my apps
3. You can use wxglade (I'm always happy with hard coding)
4. A lot of help out there (I learned without any book), though poor official docs but there is wxpython demo showing how to use widgets

Here are some apps development arguments (caution: some might be very old posts):
http://www.pythonthreads.com/articles/interviews/wxpython-is-a-good-answer-for-almost-any-kind-of-desktop-application..html
http://discuss.joelonsoftware.com/default.asp?biz.5.286090.10
http://wiki.wxpython.org/wxPythonPit%20Apps

Thanks for the helpful replies - after Googling the names mentioned it seems to me that wxPython and wxGlade might prove helpful for me.

wxGlade is very useful and friendly. We can generate the code of our design in many languages. i also very new to python and i found wxPython and wxGlade very useful....
also one suggestion use the SPE editor for script development that is also very useful....

wxGlade is very useful and friendly. We can generate the code of our design in many languages. i also very new to python and i found wxPython and wxGlade very useful....
also one suggestion use the SPE editor for script development that is also very useful....

Let's not get ahead of ourselves here. wxGlade is anything but. The interface is a joke, it supports only a limited number of the wx widgets, and it's not something i would send a novice to use (could I responsibly expect a newbie to figure that thing out?).

Unfortunately, it's just a poorly implemented version of the much better Glade for Gtk. I suggest you try some real GUI builders before you go around calling wxGlade "useful" and "friendly"

Just one man's Idea who is addicted with QT Designer!
Yes QT designer cant compare to wxGlade, for its beauty and effectiveness. I cant say of wxGlade because I love to code everything or as I love to call it Hard coding.

But I failed to love QT for some reasons. Now I'm diving in C++ also and have my Code::blocks IDE with wxWidget :)

I agree that QT is great and I don't see reason to move away from wxWidgets. As Scru is QT and hence PyQT fond, so Iam when comes to wxWidgets and hence wxpython

very fun of course, isn't it? :lol:

Actually not really that fun. I happen to despise creatings GUIs to the point where anytime I think about get started on a project whose interface won't fit the mold of a 'standard' GUI program (because as soon as you try to do anything but you're gonna run into serious headaches), I find that my enthusiasm deflates...fast.

My problems with most GUI toolkits may be just my personal taste. Or maybe I'm the only person in the world who holds them to high standards. I like to convince myself that it's the latter.

Let's not get ahead of ourselves here. wxGlade is anything but. The interface is a joke, it supports only a limited number of the wx widgets, and it's not something i would send a novice to use (could I responsibly expect a newbie to figure that thing out?).

Unfortunately, it's just a poorly implemented version of the much better Glade for Gtk. I suggest you try some real GUI builders before you go around calling wxGlade "useful" and "friendly"

i apologies for my ignorance scru, but as i told i was new to python and im just exploring the different features present in it....but as a matter of fact wxGlade wasnt as hard as u were explainin it to be...
dont know mite be the real GUI builders are easier....i will try those out and reply....

Actually not really that fun. I happen to despise creatings GUIs to the point where anytime I think about get started on a project whose interface won't fit the mold of a 'standard' GUI program (because as soon as you try to do anything but you're gonna run into serious headaches), I find that my enthusiasm deflates...fast.

Very sorry for that! :(
For me, It is fun to write GUI apps. I love to write everything from the scratch and with Hard coding. I enjoy it a lot heeeh :)

I looked into all the things mentioned. I can't use PyQt as it will likely result in licensing issues in the future.

I tried wxGlade and BoaConstructor and though they aren't as great GUI developers as say Delphi was I guess one can get used to them. But when I try to copy the code into a PyDev project in Eclipse things don't quite work.

Is it best to just code GUIs by hand instead?

Some site said this:
"Python's introspection features make it possible to write generic GUI code that you can use to build user interfaces on the fly based on models of your data and your application. This can be much more efficient than using a GUI builder to craft individual menus and dialogs by hand. In general hand-coded GUIs also tend to be more maintainable." (http://www.wingware.com/doc/howtos/wxpython)

But for someone who doesn't know much Python is it possible to start coding GUIs by hand just like that? Are there any good resources available online such as wxPython tutorials that you guys think would be really handy for getting started? I know the zetcode tutorial and will try that.

But I am at the moment at a stand still on how to develop a GUI project in python. I want to understand how to structure the modules and make things relate to each other and make the GUIs. Is there a book that explains such things?

Or should I just start looking at the source code for some project like http://pydbdesigner.sourceforge.net/ and attempt to understand how code in that works and that will help me understand how wxPython GUI projects work in general?

Any advice for newbies is welcome.

Build yourself a small library of uniform wxPython templates and give them filenames you can find. You will be surprised how much help they provide in cutting and pasting a wxPython program together. There are hints of these templates in the "Starting wxPython" thread. For instance:
http://www.daniweb.com/forums/post626902-16.html

Personally i never use GUI builders, i just code from scratch, it leaves you learning a lot more about the code and how it works and stuff like that, so in my opinion its best to just learn how to write the code

Personally i never use GUI builders, i just code from scratch, it leaves you learning a lot more about the code and how it works and stuff like that, so in my opinion its best to just learn how to write the code

+1

Also makes you know what you are doing easily!
Maintenance is easy :)

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.