Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python Desktop Applications [closed]

I'm using wxPython since about 2 years for several small scientific programs which I distribute to many Colleagues. I like wxPython and I'm already very familiar with it but there are few things which drive me crazy (not because of wxPython, actually I would like to continue to use it):

1) I have many users on different Operation systems. I know wxPython is cross platform but I have already no nerves and time to port all my small software’s (and more will come) every time to different Operation systems. Especially I'm not using some of them (Windows7, Mac), so it's hard for me to solve problems and user requests.

2) We update our software’s quite a lot (because all the time new ideas come from users and ourselves) which means for me to generate all standalones again, upload them and for the users to uninstall and install again. Nasty...

I was thinking already to switch to Web Frameworks but there are some problems. First, many users like to use my software’s offline, e.g. when they travel or have no internet. Second we have some data in some databases which should NEVER go on a server. It’s all about patents and will be always a discussion, so I prefer to have some of my programs a standalone desktop application to simplify things. Others can be online, no problem.

So, in general I would love a browser based solution, since everybody has a browser. I saw that some people ported Django projects as a standalone desktop application, which I found not a bad idea. I also red about Camelot but I think this is rather for databases. Camelot would be useful only for some of my tools which are rather a database searching and extraction programs. But other doesn’t use databases at all.

Can anyone suggest me, what would be a good solution for my tools?

like image 860
honeymoon Avatar asked Apr 23 '12 14:04

honeymoon


2 Answers

You could use e.g. flask for providing a UI.

So just write you applications as normal, but without a GUI (normally you should anyways separate logic and GUI). Afterwards use e.g. Flask (I really like this microframework, but there are also others like Bottle) to write a UI in form of a website. You can run this website either locally (that's one line of code: app.run() then open it in the webserver with the URL http://localhost:5000) or on a webserver e.g. with apache or nginx.

like image 67
dav1d Avatar answered Oct 04 '22 22:10

dav1d


How about using Flex with Python? Your interface is portable (since Flex creates flash files); and you can use Python to wire up the interface.

In addition you can decide (based on your app) to deploy them on the web or wrap them as native executable with Flex.

Your only challenge would be if you decide to package the application for Windows, to make sure to package Python along with it correctly (should that be required).

like image 32
Burhan Khalid Avatar answered Oct 04 '22 22:10

Burhan Khalid