41

I have a little experience developing small command-line applications with Python. I want to move on to developing GUIs with Python. From the available GUI toolkits for Python, the ones I feel the most inclined to are wxPython and Tkinter; but I don't want to code all of the GUI by myself all of the time.

Are there any good GUI IDEs for any of these toolkits? It doesn't need to be free or open source.

nbro
  • 12,226
  • 19
  • 85
  • 163
Alix Axel
  • 141,486
  • 84
  • 375
  • 483

8 Answers8

31

I will talk only about WxPython because it's the only toolkit I have experience with. TkInter is nice to write small programs (then it doesn't require a GUI Designer), but is not really appropriate for large application development.

  • wxFormBuilder is really good: it generates .XRC files you need to load in your program, and it can generate .py files by subclassing them when you use.

  • DialogBlocks and wxDesigner are two commercial software which can generate Python code directly. I didn't tested these much because of their price.

  • wxGlade is (I think) not yet mature enough for large programs, but it's worth a try.

After trying all these, I realized they had all flaws and that nothing is better than just writing the GUI in an editor. The problem is the extended learning curve. But then you will be much more faster and your code will be much more flexible than when using a GUI designer.

Have a look at this list of major applications written with wxPython. You will probably see that none of these use a GUI Designer, there must be a reason for this.

You then understand gs is right when saying that either you switch to PyQt or you write your application by hand. I had a look at Qt Designer in the past and thought this was what I needed. Unfortunately PyQt has some license restrictions.

nbro
  • 12,226
  • 19
  • 85
  • 163
Mapad
  • 7,566
  • 5
  • 37
  • 40
  • 4
    How do you define "large application development", and why do you think tkinter is unsuitable? While I've never used it with a million+ line application, I think it scales about as well as wxPython. – Bryan Oakley Aug 13 '12 at 18:12
16

This may not answer your question directly, but I chose PyQt because there were no good UI designers for wxPython.

Apparently you either write your GUIs by hand or switch to PyQt.

Because Nokia and Riverbankcomputing couldn't agree on a LGPL solution, Nokia decided to build its own bindings: PySide.

nbro
  • 12,226
  • 19
  • 85
  • 163
Georg Schölly
  • 116,521
  • 48
  • 204
  • 258
  • 3
    +1 Qt Designer is the program that made me hate UI designers less. Also, the PyQt bindings seem slightly more Pythonic, the wx ones seem to have bits of C++ sticking out too much. (For instance the integer event/action IDs.) Another thing is that using the generated code and resource files loaded at runtime is mostly analogous. It doesn't hurt that the generated code is very neat and pretty much what you'd write yourself either. – millimoose Apr 29 '09 at 07:19
  • 1
    Does PyQt support native look and feel to Win/Mac/Linux? – Alix Axel Apr 29 '09 at 07:58
  • @ eyze: Partially. On Mac it uses the Carbon elements (they are porting it to Cocoa...) on Win they are switchting from custom elements (native look&feel) to true native widgets. On linux they paint custom elements, but the appearance can be changed for all Qt applications on a system. Another advantage of PyQt is its library, it's much more than only a GUI framework. – Georg Schölly Apr 29 '09 at 08:14
  • @gs: Arguably the library replicates a lot of what other Python libraries do sometimes better. @eyze: http://doc.trolltech.com/4.4/winsystem.html is a good starting point to find about native integration and deployment. – millimoose Apr 29 '09 at 12:53
5

Boa Constructor has a WxPython GUI builder.

Anonymous
  • 2,731
  • 3
  • 21
  • 23
  • 1
    Boa constructor is an excellent piece of work, being like Delphi, but it relies on parsing Python auto-generated source code to keep track of what you designed. If you upgrade wxPython you'll have to hand edit your auto-generated code to make it work again (as various flags get added or things renamed between versions). This can been a real pain. – Nick Dec 23 '09 at 11:30
4

I use xrced (comes with wxPython). The GUI is defined in xml files, you have an autogenerated python file that automates some initialization then you subclass those autogenerated classes and do the rest of the initialization by hand. I find that this is a good way to blend the elegance of hand-written GUI code with ease of GUI code generation.

For the code I use WingIDE, it's helpfull to have a good debuger and good source code completion when dealing with large libraries (or frameworks if you will) like wxPython.

If you want more automation (and so, uglier code) try the latest version of Boa, there are some nice introductory screencasts for it at ShowMeDo.com

Toni Ruža
  • 7,174
  • 2
  • 26
  • 30
2

I use Eclipse with PyDev as my Python IDE (Which is probably not the best solution out there, but it is quite decent)

For GUI developement, I have used wxGlade for a mid-sized project and found it to be quite easy to use one you've grasped the concepts of WxPython. The XML generation is very useful for separating actual GUI design from program logic.

All of the these are free.

Jacob Wang
  • 3,733
  • 4
  • 25
  • 38
1

Try VisualWx. I think the GUI designer is very good; however the IDE is fairly rudimentary (no code completion, debugging, etc.). My work pattern is to have VisualWx and a good editor like Komodo Edit/Netbeans/etc. open at the same time and switch between them as needed.

Brandon
  • 3,354
  • 1
  • 16
  • 24
  • VisualWX looks cool, but is it still active? The web site shows an alpha version from April 2007, and there's only 5 messages in the forum over the last six months. – Chris Wuestefeld Jan 01 '10 at 17:50
  • I've used it to build configuration dialogs for a game I wrote, and it worked well for that. If you want the bleeding edge stuff from new wxWindows versions, then it probably won't serve your purposes. But it worked well for me for the things I tried, it's free, and the current version seems stable (unlike Boa Constructor, for instance). My advice is to simply try it and see what you think. – Brandon Jan 04 '10 at 14:05
0

Not really a GUI IDE but it leds you define Tkinter GUIs in a JSON file: https://github.com/tmetsch/pytkgen

Andre
  • 97
  • 1
0

I've used wxGlade for a few mission-critical apps. If you're a little weak in wx, it can be rough, but once you get used to it, its a great tool.

Alex
  • 4,030
  • 2
  • 21
  • 28