Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python/Sqlite program, write as browser app or desktop app?

I am in the planning stages of rewriting an Access db I wrote several years ago in a full fledged program. I have very slight experience coding, but not enough to call myself a programmer by far. I'll definitely be learning as I go, so I'd like to keep everything as simple as possible. I've decided on Python and SQLite for my program, but I need help on my next decision.

Here is my situation

1) It'll be run locally on each machine, all Windows computers

2) I would really like a nice looking GUI with colors, nice screens, menus, lists, etc,

3) I'm thinking about using a browser interface because (a) from what I've read, browser apps can look really great, and (b) I understand there are lots of free tools to assist in setting up the GUI/GUI code with drag and drop tools, so that helps my "keep it simple" goal.

4) I want the program to be totally portable so it runs completely from one single folder on a user's PC, with no installation(s) needed for it to run

(If I did it as a browser app, isn't there the possibility that a user's browser settings could affect or break the app. How likely is this?)

For my situation, should/could I make it a browser app? What would be the pros and cons for my situation?

like image 708
ChrisC Avatar asked May 27 '10 19:05

ChrisC


2 Answers

Writing a desktop application as a locally-hosted web application isn't typically a good idea. Although it's possible to create great user interfaces with HTML, CSS, and Javascript, it's far easier to create interfaces with conventional GUI frameworks.

Using web technologies to create your desktop GUI would introduce a great deal of unnecessary complexity to your application.

  • Creating user interfaces with HTML and CSS is difficult and time-consuming. HTML is a document markup language and CSS is a document formatting language; neither is well-suited to creating GUIs.
  • Using web technologies makes your application depend on the user's web browser. Far too many people are still using old, crippled browsers such as IE 6 and 7 that don't follow modern standards. You'll spend hours if not days trying to track down interface bugs that only happen on certain browsers.
  • You'll need to serve your application with a web server, introducing another layer of complexity. Your application will have to communicate with your interface through restricted web technologies without any of the benefits of a true web application.

I recommend using a desktop GUI framework, instead. In particular, I think wxPython would be the best GUI framework for you to use; it's stable, widely used, well documented, and highly portable. In addition, you can use a GUI-based interface builder such as Boa Constructor or possibly wxGlade to design your application's user interface. In summary, creating an application with almost any desktop GUI framework would be easier than using web technologies.

like image 146
Evan Kroske Avatar answered Oct 11 '22 15:10

Evan Kroske


I've done a desktop app running on windows and I think that it is a great way to develop app.

I would recommend to have a look at bottle. It is a lightweight web framework. It is less capabale than Django for example but it does well. It can be packed with py2exe if you want to deploy on machines without Python.

There is a lot of javascript libs on the web to help you. I like jquery and jquery-ui, raphaeljs ... but there are some others.

My app is running into a small browser based on the mshtml component of Pyjama-Desktop. This way, the user doesn't know that it is a web app. But you could let the app running into the favorite browser, webbrowser python module might be interesting for you.

If your app needs to access your filesystem, a browser-based app may be tricky. For security reasons, a browser doesn't have full access to your filesystem. However, you can mimick file open with ajaxupload and file save with an iframe.

If it only deals with a sqllite database, i think that it is a very good choice.

I hope it helps

like image 30
luc Avatar answered Oct 11 '22 14:10

luc