Python for a desktop app

cross platformdesktop applicationpython

I currently have a .NET app that I want to convert to being cross platform, as a growing number of my users want a Mac version. Since this forum doesn't seem to like questions that are "what languages are suitable for these requirements", I'll focus this question on Python as the language of choice. Will Python be a good fit for the requirements below? Drawbacks?

  • Desktop app – many of my users do not have an Internet connection where they use the software, so a web app will not do
  • Object oriented
  • Store data in a relational database as well as configuration files
  • Reporting engine, preferably using templates
  • Network connectivity – Some users setup multiple workstations sharing a single data file
  • Support RS-232 serial port communications, read and write
  • Support video capture
  • Play WAV and other sound files
  • Simple app installation – too many of my users are not very computer savvy, so the easier the install the better
  • Be able to implement a demo or time-limited licensing model

I considered Java, but am hesitant being at the mercy of Oracle and many people have had security concerns about the JVM. I also considered the Mono project to keep the app in .NET, but their MoMA utility shows thousands of unsupported items. I really prefer to have just one code base to maintain, instead of one for Windows and one for Mac. Python seems to be what I keep coming back to.

For some background on myself, most of my experience has been with VB, VB.NET, C#, and Java with some dabbling in PHP/Javascript/HTML. All of my desktop experience has been with Windows.

Best Answer

You'd be surprised at how feature rich the python environment is. Going down the list, I'll try and give feedback on each of the points.

  • Desktop app - Yes. You can write applications which require no internet connectivity to function.
  • Object oriented - Big yes. Python supports lots of fun stuff with objects, such as injecting methods into individual instances of classes. You may find some parts less intuitive though, like a lack of a scope, or interfaces.
  • Store data in a relational database as well as configuration files - Yep. You can use databases either locally or through the web. Here's a link to some more info
  • Reporting engine, preferably using templates - A simple google search showed options of varying complexity based on what you need
  • Network connectivity - Yes, networking is fully supported. You can get down to creatig sockets if you want, or use fully formed libararies to do the lifting for you.
  • Support RS-232 serial port communications, read and write - PySerial
  • Support video capture - Video Libraries are an option
  • Play WAV and other sound files - PyAudio
  • Simple app installation - You talked about this in the comments, but you could also look into python eggs as a form of distribution, or .deb packages if you're running debian
  • Be able to implement a demo or time-limited licensing model - This is pretty much just limiting the source code that you provide to them. This is no different than any other language in that regard though.
Related Topic