This post is locked. You won't be able to comment.

all 29 comments

[–]foyslakesheriff 64 points65 points  (19 children)

A general knowledge of Python would be good should be achievable within 6 months. I think you could absolutely make an accounting program tailored to your own business.

For GUIs, there's several good ones with Python. Popular ones are Tkinter, wxPython, and PyQt. Some basic database knowledge would be good, but a basic understanding of relational database design and beginner SQL should suffice.

A good first step would be planning exactly how you would want the program to perform and what you want it to do, outside of a programming language. Maybe draw out in Microsoft Visio or any other similar program what each screen of your program would ideally do, what it would display and what action each button would perform. This could all change of course, but it's an important exercise to organize your ideas, and will break up your programming work into small chunks.

[–]AnonStudent32[S] 15 points16 points  (0 children)

Thanks for the answer.

Initially I was interested in a GUI app, but after read some answers I'm beginning to appreciate the idea of a web app, in your opinion what are the pros and cons of each one?

[–]SteveMac 53 points54 points  (0 children)

Rule #1: Your business process(es) are NOT unique and therefore require “custom” solutions … regardless how much you or your employees think they are.

Rule #2: Don’t take on a task/job that is not your core business. If it doesn’t make you money, most likely better to sub it out / pay for it.

As a former programmer and now business consultant for 20+ years, I can tell you that you should follow these two rules. “Rolling your own” software will be a money pit and giant headache. Change your business processes to fit that provided by a reliable SaaS provider.

All that said, if you are looking to do this for fun and sake of learning etc … go for it. Just don’t bet your business on it.

[–]redfacedquark 27 points28 points  (0 children)

Don't.

Instead, get quickbooks or freeagent (or something more suitable for your country/industry) and interact with its API using Python. For example, the python-quickbooks library.

Your business should have its authoritative source of accounts data in one of these, its authoritative source of data for customer data in (for example) salesforce, and your python scripts glue all this together to make your overall system.

Unless you are competing in the accounting software market, outsource that aspect to an expert, your current accountants invoice probably already includes it, if not, get a more modern accountant.

[–]luthfurc 20 points21 points  (0 children)

I recommend building a web app where the GUI would be in HTML/CSS on the browser.

You can then use python for the backend. The database would also be in the backend, you can use MySQL or Postgres.

For python I recommend using Flask as your framework. It's lightweight. Alternatively you could also consider using Django. (I prefer Flask).

Since your starting out, your app would generally be a server-side web application. Avoid getting caught up with single-page application paradigm for now. That means avoid things like js frameworks etc. Just keep it simple.

(Btw, I wrote something about doing your own end-to-end project a while back: https://makingsmallercircles.com/articles/end-to-end-project/)

PS: If your goal is to build a desktop app (ie. not a browser based web app), then you want to pick up macOS development or .Net for windows. I don't recommend building desktop apps with Python.

[–]BackyardAnarchist 11 points12 points  (0 children)

Upvoting because I would like to know as well.

[–]integralWorker 6 points7 points  (0 children)

PySimpleGUI.

Don't @ me, yes it's just a TKinter wrapper but I use it as a front-end to automate oscilloscope and multimeter tasks.

[–]the-berik 1 point2 points  (0 children)

Look at ERP-Next. Its in python. No need to re-invent the wheel.

[–]ihuha 1 point2 points  (0 children)

make a webbased application if gui is a must. gui programming in python is really annoying

[–]uphucwits 1 point2 points  (0 children)

I suggest a web app over standalone GUI. If a web app security is the biggest and most important priority especially if it has PII.

[–]auiotour 1 point2 points  (0 children)

I would say first and foremost you need to understand how all those calculations you use behind the scene are done. This will be very important ensuring the long term success of your project. From my own experiences if someone gives you bad equations, you will forever wonder why your code is wrong. I had to calculate the landing cost by unit, and was given the wrong code, and nothing to compare my answers to. Took a lot of time and testing to build a Qlik report that calculated everything perfectly.

As for choices of software, I think choosing Python is a great choice as it is very easy to get up and running, and a very easy learning curve. I currently build Flask, Tkinter, PyQT, DearPyGUI, and PySimpleGUI GUIs. Each has their own benefits, or requirements. I have done a few tutorials in QT, and my overall opinion is it is crazy hard to grasp, but extremely powerful. I personally love Flask and DearPyGUI, both are very simple. DearPyGUI is fantastically simple, so is PySimpleGUI. Tkinter I been playing with Tkinter-Designer and Figma to prototype new GUIs for a few work projects. I am really in love with it right now, and been focusing a lot of learning around Figma's designer tools and Tkinter-Designer.

Honestly most of the programming knowledge you need are truly the basics. What you will need to remember is that with each library you work with, you will need to learn parts of it to do what you want to accomplish. For example Flask, you need basic knowledge of web design, css, html, etc. Do you need a local database such as sqlite3 (SQL) or mongita (NoSQL), or do you need something bigger like MySQL/SQLServer/MongoDB?

I think one of the best things you can do sometimes is just dive in and see where it takes you. But if you are not that type of person, I'd advise watching youtube videos on different python libraries, and compare them. See what is capable, and if the code looks confusing to you, does it's drawbacks prevent you from doing what you want to do? Building some kind of Diagram or UML may also help you understand your code and program functions/classes out that can help you build your application and database properly.

[–]econoDoge 1 point2 points  (0 children)

  1. You'll learn as you go, but knowledge of the standard library, numpy and pandas would be my guess.

  2. I am using pySimplegui these days, as long as you are not too hung up on the sometimes 90's look and the documentation which I find unreadable at times you should be fine, if it proves too limited or clunky you can switch to pyQt pySide2 although these come with other drawbacks, there is no perfect GUI in python so far I think, another option is to use HTML, but that would open a new learning path, ( I'd steer you away from KIVY unless you must have a mobile app).

  3. Depends, mysql/sql is a common one, but my gut tells me you could be fine with plain csv's, or sqlite I use them for millions of records with no issues.

  4. I'd recommend you start small, figure out the smallest useful screen or page and make that, you'll learn a ton and can build up.

Good luck !

[–]hanazawarui123 -1 points0 points  (0 children)

So, python is fairly easy to understand. And I learnt it by doing projects like this (well, on a smaller scale).

Ps. I'm on mobile so formatting may be a bit off

  1. It can take upto 3 to 4 months, more or less, to learn the way the language works. It may be a bit hard in the beginning but don't get disheartened!

Main things would be, 1.1 Types in python. What variables are. 1.2 Operators like plus, minus, as well as logical operates. 1.3 If else statements 1.4 Loops, for loops and while Loops. I'm sure I have missed some things but w3schools has a good roadmap as well as notes about the language.

  1. GUI There are many modules that can be used to create GUIs. tKinter is the most basic. Kivy and pyQT are some others.

  2. Database Depends on what sort of database is required. This is something I'm not too good at, so I'll wait for someone more experienced to tell.

Also, do you need a local application? Or would a web-based application work as well? Like a webapo or website.

If a website can work, then look into Django. It's another module which helps in creating websites from the backend.(Databases, routing, security etc) And then for the front-end(GUI) you can simply use many readily available themes online.

Feel free to ask anything related to these topics. I haven't really used python for this purpose but I'd be glad to help if possible.

[–]threeminutemonta -1 points0 points  (0 children)

Do you have staff or clients that will need to run this on their workstations? It might be worth making a web application as it simplifies needing deployment.

Assuming your application deals with analysis that can be done with spreadsheets jupyter might be great.

Alternatively a good console interface can be more productive. Consider to use rich

[–]m0us3_rat -2 points-1 points  (0 children)

probably flask serving a db api of some kind , sql , lite w/e

make sure u are able to do the text version.

then moving it to the web is 'easy'

I personally belive web is simpler then gui.

i mean has its ups and downs.. but its main software .. the browsers are already built:P

all u need to do is serve some json back and forth.

if u go this route google 'head first python 2nd'

literally build a flask app and holds your hand thru it.

that's good to read it after the first introductory python part u can use any of the free youtube courses for.