Developing cross-platform applications with IronPython: GtkBuilder and Glade on IronPython
IronPython is a great cross-platform development language, running on the Microsoft .NET framework for Windows and on Mono just about everywhere.
Even for CPython developers IronPython has a few features that make it of interest. These include:
It definitely is possible to create good looking cross-platform applications with the Mono version of Windows Forms. Have a look at these screenshots of the Plastic SCM for an example. I haven't learned the requisite magic tricks to do this though.
There are at least two other alternatives: Qt (Qyoto) and Gtk (Gtk#).
Unfortunately there aren't yet good tutorials for developing with these user interface toolkits and IronPython, but these two blog entries will get you started with Glade and the GtkBuilder.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZuhx6eROEMfG8WJec-oIU7nO5IgjIjvQEVNYK3eJ-y-S4CFFDWNSQhx60AZXbWYWzOtduxHibtpRtHGvLwNd1U_Fo5nrlAlB87Q6XUxOfWC7Dz_o4AhcIDTXfvcbe2FP6BWLaQxSRHLQ/s400/glade-main-page-thumb.png)
Even for CPython developers IronPython has a few features that make it of interest. These include:
- Under IronPython there is no Global Interpreter Lock (GIL) meaning that multi-threaded pure-Python applications can scale across multiple CPUs with no extra work from the developer
- .NET AppDomains allow you to create Python engines and restrict their security privileges, including controlling network and filesystem access and which assemblies the Python code can use
- Easily create Python applications with multiple isolated Python engines in the same process
- Easy to compile applications to binary and make binary only applications
- Through the Dynamic Language Runtime (DLR) you get interoperability with languages like C# / F# / IronRuby and IronScheme
- Extending IronPython with C#, for performance, is worlds easier than extending Python with C
It definitely is possible to create good looking cross-platform applications with the Mono version of Windows Forms. Have a look at these screenshots of the Plastic SCM for an example. I haven't learned the requisite magic tricks to do this though.
There are at least two other alternatives: Qt (Qyoto) and Gtk (Gtk#).
Unfortunately there aren't yet good tutorials for developing with these user interface toolkits and IronPython, but these two blog entries will get you started with Glade and the GtkBuilder.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZuhx6eROEMfG8WJec-oIU7nO5IgjIjvQEVNYK3eJ-y-S4CFFDWNSQhx60AZXbWYWzOtduxHibtpRtHGvLwNd1U_Fo5nrlAlB87Q6XUxOfWC7Dz_o4AhcIDTXfvcbe2FP6BWLaQxSRHLQ/s400/glade-main-page-thumb.png)
Someone asked me if I could add the missing parts of GtkBuilder in Gtk#Beans so he could use it with IronPython on mono.
Hey, it looks there's no missing parts ! It all works fine since day one. Here's the the trick...
Thanks to Stephane for his answer to my query about using GtkBuilder in IronPython. It turns out his Gtk#Beans package provides the magic sauce that is currently missing from the current stable release.
For completeness, here’s the code I sent him that accomplishes the same thing using the older Glade.XML object for those that are interested. It answers a long standing mailing list question about using Glade.XML.Autoconnect in IronPython...
Comments
Post a Comment