Joseph Jude

IronPython Learnings

2008.09.07 / /


Recently I started developing Windows Desktop Applications in IronPython - a Python language port for Windows.NET. I blogged about the application already here.

In the post, I’m sharing what I learned in the process with a hope that it will be helpful to someone else.

Visual Studio as ipy development environment

You can download IronPython and start to develop using your favorite text editor. However having a Visual Studio environment helps. Fundamentally it involves:

Designing Windows Forms

With Visual Studio Integration, designing of Windows Forms is a simple drag and drop operation. Of course code generated by VS may not be as elegant as some Python purists like; but it works well.

Calling unmanaged code from IronPython

If you are into IronPython, you’ll definitely come across VoidSpace, who has a huge collection of IronPython articles.

I needed to query the active window for my application. VoidSpace discusses a solution in his pages. Better to name the namespace as a ‘UnmanagedCode’ as VoidSpace discusses in the solution. I named it as the name of the application and that created a lot of trouble and was difficult to troubleshoot.

Logging in IronPython

IPY doesn’t include standard python libraries (at least as of 1.1). So I used a NSpring .NET logging library.

(I found out that any .NET library can be used with IronPython. I did same with SQLite Library and SourceGrid, a grid library for .NET)

Finding time difference

One can find the time difference between two time variable (=System.DateTime.Now) using
timeSpent = currentEndTime.Subtract(currentStartTime)
If you want to know the differences in seconds then use
timeSpentinSec = timeSpent.TotalSeconds.ToString()
timeSpent.Seconds() will provide only the seconds part of the timespan. TotalSeconds() provide the time difference in seconds.

Don’t forget to stop timer

I used Timer() to poll activewindow on a regular interval. However, I forgot to stop that assuming that once the form is closed all instances will be cleared. Apparently not and so the application stayed in memory even after exit. Lesson learned: stop all threads before exiting the application.

Share this post on

Twitter | | |
Sign up for my weekly newsletter

I will send blog updates to this email. You can unsubscribe at any time using the link in those emails.