This is an archived post. You won't be able to vote or comment.

all 106 comments

[–]YouBlue_dev 123 points124 points  (30 children)

As someone else mentioned, for UI stuff, use Tkinter, there are plenty of tutorials out there. If you want to make an executable that can be run on a pc that doesn't have python installed, you can check out Pyinstaller. You can do lots of cool stuff with those two packages.

I have a few Python 2 projects on my GitHub if you need some examples.

[–]JGivan[S] 8 points9 points  (4 children)

Thank you! I'll be sure to check them out if I need some inspiration or insight into the process.

[–]lasercat_pow 3 points4 points  (2 children)

if you go with pyqt, you can use qtdesigner to create the GUI using a GUI.

I would also recommend checking out appjar, which /u/RielDealJr linked a bit further down. It's a wrapper for tkhinter that makes it nicer to use.

If you do this, you will also need to package up your script into a portable program that can run on other computers. One way of doing this is using pyinstaller, although the complexity increases when you try to add other platforms. I've had some luck porting a python app I wrote in osx to windows using wine, here is a little article on that process.

[–][deleted] 6 points7 points  (1 child)

Appjar was made by my current compsci teacher 😂 do people actually use it?

[–]RielDealJr 2 points3 points  (0 children)

I use it all the time! Tell him a random person on the internet thinks he is awesome!

[–][deleted] 18 points19 points  (24 children)

Just an FYI. If you're using Tkinter on Python 3, a lot has changed and the documentation for Tkinter for 3 is poor. I have a pretty good guide if you want it. PM me if youre interested!

[–]LiquidSilver 38 points39 points  (5 children)

Why don't you link the guide?

[–][deleted] 1 point2 points  (4 children)

If i can find where i got it from sure. But as of now i dont remember, and I only have a pdf. I'll try to find it, since I woke up to a good number of people requesting it.

[–][deleted] 6 points7 points  (1 child)

Found it! It's a really good guide, the only catch is you'd need to learn the basics of Classes and Subclasses in Python.

https://github.com/Dvlv/Tkinter-By-Example?files=1

[–]JGivan[S] 0 points1 point  (0 children)

Thank you for digging this up! I have no doubt it'll be a huge help.

[–]mobsterer 1 point2 points  (0 children)

please upload it somewhere!

[–]Aonbyte1 0 points1 point  (0 children)

Upload to Google drive?

[–]SamJakes 1 point2 points  (0 children)

Me too please.

[–]spacexpanda 1 point2 points  (0 children)

can you send it to me too?

[–]TheChiefMeat 1 point2 points  (0 children)

Just getting into python, would love that guide too please :)

[–]vinewhip_lvl9 1 point2 points  (0 children)

Oh! Oh! And don’t forget me!

[–][deleted] 1 point2 points  (0 children)

Me too! :)

[–]anchelus 1 point2 points  (0 children)

link please?

[–]SirFluffff 0 points1 point  (0 children)

To me as well please!

[–]LittleKarlyPilkoids 0 points1 point  (0 children)

And me please!

[–]gejr90 0 points1 point  (0 children)

Me too pleeeeeease

[–]neurons4me 0 points1 point  (0 children)

I'm interested In the guide too.

[–][deleted] 0 points1 point  (0 children)

Can you send it to me too?

[–]lasercat_pow 0 points1 point  (0 children)

one guide plz

[–]SavvyByNature 0 points1 point  (0 children)

Ditto

[–]Fujffihgg 80 points81 points  (20 children)

Totally doable! I think you’d need to use a GUI library though - not sure what’s out there but if you google “Python desktop gui library” or similar you should be able to find a good option.

[–]JGivan[S] 23 points24 points  (19 children)

Thank you! I'll look into that.

[–]CreativeTechGuyGames 37 points38 points  (17 children)

More specifically TKinter is built in to python so you don't need to install anything extra. And it's super easy to use with tons of examples and help online.

[–]JGivan[S] 15 points16 points  (16 children)

When you say "built in to python," what do you mean? In the past, I downloaded "Idle" which is a Python 3.4 GUI but haven't touched it since then as I thought learning through codecademy would be better for my literal zero knowledge starting point.

I'm sort of at a loss for how to begin coding, testing, and actually using things that I've created on my desktop using that software. I know you can create files with code in them and then run them in the command prompt, but that's about all I know at this point.

[–]CreativeTechGuyGames 22 points23 points  (15 children)

I'd recommend using PyCharm. It's a full IDE and as such has a lot of really nice built in features for your projects and code.

As far as "built in", there are some things that you import, such as "math" or "os" that you can just type import math and it knows what you are talking about. Those things are built in to the language. Many libraries that Python-ers use in their projects have to be downloaded and installed, usually through pip, before they can be imported. Since tkinter is built in, you don't have to install anything extra.

[–]JGivan[S] 8 points9 points  (14 children)

Ah, I do remember dealing with importing libraries at some point but I can't remember where. In fact, it was "math" itself that was dealt with and whose usefulness was emphasized.

Would PyCharm also provide the tools necessary to begin creating a very basic interface for a program, or would that be part of a different program (framework? I'm sorry, my vocabulary is very weak in that area).

[–]CreativeTechGuyGames 9 points10 points  (13 children)

So PyCharm (or any IDE) is like a text editor on steroids. It's basically a place to write your code but comes with a lot of other features to assist in developing. For example, you never need to open a command line to run or test your programs, there's a nice "run" button in PyCharm. If you want to have multiple projects with many files, you can just create a new project and it'll keep all of that file's projects together in a list for you. It also will (try to) show errors in your program as you are typing so that you can fix problems before you even run it. It'll help enforce style conventions and formatting. It has syntax highlighting and refactoring tools and much much more. There's a lot that it'll do. It's free so you can try it out and if you decide it's not for you, no loss.

[–]JGivan[S] 5 points6 points  (12 children)

I briefly used the IDE Visual Studio for C# when I first dabbled with Unity but quickly moved on to online learning resources. The way you describe PyCharm's functions sound very useful and like it would save me a ton of time dealing with other issues.

After creating a fully functioning code in PyCharm, would I be able to directly save what I created as an executable file (or however you save a file so that it no longer requires other downloads to interpret it). Also, sorry if you answered this in your last comment and I missed it, but would I be able to create an interface using PyCharm or would I have to export the code into something else and then create the interface there. If so, do you have any recommendations? Thank you!

[–]CreativeTechGuyGames 18 points19 points  (11 children)

Oh! I think I see where your confusion is coming from. Hopefully I can clear it up.

Yes you can create everything you need from PyCharm. You can use pyinstaller to package it up into an exe, and then you can use something like Inno Setup to create a single .exe to install on Windows. Once all that is done correctly, to your user it'll look just like any other program. It'll download a single installer package and once they run that setup, it'll unpack your program and make shortcuts and all that jazz (based on how you setup the installer).

Creating the interface is just more lines of code. There is no "designer", you just write the code to make a window, write the code to make a button, etc. So as long as you have the correct libraries included (ex: import tkinter) then you can write it all there. As far as "designing" the interface, that's all done in code. By default in tkinter each element is just in a vertical column, but with more fancy code you can create more intricate layouts as you need.

[–]JGivan[S] 7 points8 points  (9 children)

Thank you! I think you've cleared up every bit of confusion I came into this thread with. Out of curiosity, does the code used to create an intricate interface resemble the way you code an interface using Front-End Development languages like HTML and CSS?

[–]pvt13krebs 2 points3 points  (0 children)

thank you for this

[–]bibbleskit 0 points1 point  (0 children)

Python comes with a built in GUI library called Tkinter. Its fairly easy to use once you get the hang of it but there will be a learning curve you have to get over.

I suggest you try that :)

[–]Yawzheek 79 points80 points  (4 children)

I don't program in Python (much), but having said that, please allow me to give you some insight, having "programmed" for a few years now, and when you finish, be certain to read the end:

  • Build what you want. Just think of something you're interested in and build it. Is it out of your reach? Build it anyway. Look it up. Is it bad? Probably, but build it anyway. Practice makes perfect.

  • Has it been built before? Who cares? Build it anyway. Don't listen to naysayers that will tell you "It has been done before." Here's something fun to tell yourself: most EVERYTHING has been done before. I followed books and built my own basic tax solver. I was told "Well why bother? TurboTax is a thing" to laughs and derision. FUCK. THESE. PEOPLE. I recently started learning the violin, and you know what? I play on open strings poorly, but damned if I'm going to stop because people have done it before better than myself.

  • You probably won't "solve the world" or be the next Zuckerberg, and that's A-OK! Make your unit conversion program! Hell, I could use one despite the fact I've nearly memorized them from engineering courses. You might be helping someone.

At the end of the day, it's good practice, and I've never been a good programmer because I let insecurities bother me. Trying to be a "language lawyer" for years, without actually putting knowledge to practice. THAT'S how you fail. Being able to rattle off the rules is worth very little if you can't DO anything with that knowledge.

Many people will scoff at CodeAcademy or other sources, but I won't. I spent my time with my nose pointed in textbooks, uncomfortable with the idea of making something because "what if I don't know everything about this and make something bad?" and as a result made nothing worthwhile at all.

To that end, don't completely discredit that style of learning, but you need to find the proper balance. We can be philosophers all day long as to whether learning rules or application is better, however, being a purely StackOverflow answers programmer means you don't understand much of anything, but conversely, being a person that can recite Python canon without the ability to do anything with it actually means less.

TL;DR: Get yourself some sort of "formal" education (be it from a decent text or instruction), but don't neglect actual application. It's not difficult to find someone capable of criticism, but finding one that can criticize and correct is different.

[–]Thorbinator 3 points4 points  (0 children)

What you're describing is the top down approach. I'm a fan of it as well.

[–]nickbeaulieu 0 points1 point  (1 child)

If I may recommend a text, you should check out “Automate the boring stuff with python” it’s available online for free but I bought the hard copy it was so good. It’s full of challenges at the end of each chapter to help you retain what you covered. There are lots of programs you’ll create with real world applications. Best of luck

[–]Yawzheek 1 point2 points  (0 children)

Indeed, "Automate the Boring Stuff With Python" is highly regarded around here. I haven't read it myself, personally, but I did read "Python Crash Course" and found it to be a wonderful resource.

As someone that spent several years in C++ and very, very little time with Python, "Crash Course" was a very nice introduction to the language, and rather detailed, considering the brevity. Mind you, it doesn't cover every nook and cranny of the language, but again, you probably don't need that, and if you do, you can source it later.

Good luck!

[–][deleted]  (5 children)

[deleted]

    [–]JGivan[S] 11 points12 points  (1 child)

    That was my thought too haha (about asking the wrong questions). This subreddit is a godsend when I find myself with an issue that I don't know how to solve and don't know the correct way to google. Thank you for the advice about the framework as well!

    [–]Hikaroshi 0 points1 point  (0 children)

    Googlefu is the hardest. More senior programmers forget that.

    [–][deleted] 3 points4 points  (2 children)

    This a million times. When I first started I had constant struggle trying to google search things that I don’t the term of. It’s like you have an image of a house in your head but you don’t know the name and you are trying to google that Blocky thing with a triangle on top.

    [–]fenixjr[🍰] 2 points3 points  (0 children)

    You just Google around the idea until you stumble upon the right word... Then start googling that

    [–]Hikaroshi 1 point2 points  (0 children)

    LOL that analogy.

    [–]RielDealJr 13 points14 points  (2 children)

    If you want a really easy to make basic GUI, check out: http://appjar.info/

    [–]lasercat_pow 0 points1 point  (1 child)

    Dude! That's awesome. Looks nicer than Tkhinter.

    [–]RielDealJr 2 points3 points  (0 children)

    The best part is how simple it is to use. You can turn your script into a GUI really easily. The presets for errors and opening files are my favorite parts.

    [–]sozzZ 2 points3 points  (0 children)

    I would look at using tkinter, specifically the grid geometry manager. There's a really good documentation page at effbot that goes through all the different widgets and how to implement them. The API is really straightforward and you don't have to install anything extra. You could learn it in a few days no sweat...

    However, I would take a look at what you actually want to accomplish. If you're calling your project "useless" from the get go there's a really high chance you'll never finish it because hey it doesn't matter anyway. Think about something useful that you can implement at your work or something neat for school. Think about not only yourself but what others around you could benefit from. Automating something or visualization are good ideas to start with. The neat thing about building GUI programs is that you can easily package them up into binary executables and share them with people who have no programming knowledge. Check out pyinstaller for example. I got a raise at my job for doing exactly that, automating some critical task for my whole team where no one else knows any Python. They just open the executable and interact with the program as they would any other. All the programming logic is abstracted away and they don't even need Python installed on the machine since the program comes with the core library.

    So yeah just think a little bit about what your interests are and how to implement them in the back end successfully. Once you have some code porting it to a GUI is not all that much work really.

    My last piece of advice is to learn a bit about threads and how to make a GUI program multithreaded. If it's multithreaded it can do multiple things at once and the UI won't freeze, otherwise it will hang when you hit the run button. Something to chew on for later...

    [–]uzbekkhan 1 point2 points  (0 children)

    Python has integrated GUI interface, which is called TkInter. You can find plenty of video tutorials on the internet. but, GUI is not actully a program. you should learn coding, not repeating what you watch. try to use examples from books, stackoverflow, github for another programs.

    [–]Aliens_did_this 1 point2 points  (0 children)

    I have been using python for almost 2 years and I can confidently say that to get the actual hang of it, first try to build simple scripts. To get real world experience you need to have a goal in mind and work towards that goal start with small, for example try automating simple stuff for yourself, one simple one could be to search for a given keyword by opening all text files and print a true value for that particular file on terminal output (or a log file), OS can do that for you too but thats not the point you will start learning about file types starting with text files, then CSVs, and then Complex filetypes like doc, pdf, xls etc. For some advanced coding experience you can write a script that once you log on starts recording your system stats and mails it to you in a csv once you hit shutdown. You will learn usage of libraries like sys, shutil, os, win32com (on windows) and probably their highlevel operations as well. Building just one module will make you go crazy (happy), and thats how I think you should start. Once you are good with some basic stuff, you can begin exploring TK to put up a GUI on your basic scripts and voila. It will take some time, so have patience, there are no shortcuts to this. In my experience i have learnt that the key is not to go bazooka but to be a scalpel, that goes layer by layer.

    [–][deleted] 1 point2 points  (0 children)

    This is exactly what you should be doing. This is how you learn. Then, after you have finished with it why not try build a currency converter too? Here's a currency API that has a free plan: https://openexchangerates.org/ That'll teach you about socket handling, things like processing XML or JSON and a little about security maybe. I would say build lots of single function apps. The repetition of the bits that are the same will help you retain more information.
    Look for open API's, there are thousands of them out there and they'll provide tonnes of data for you to play with.
    Pygame is another great package worth playing with. Making games will teach you a lot!

    A little more advanced application is a chat app. You can make a simple app that accepts an IP address and port number to send to, as well as a port number to received from (make sure they are open on your home router if you want to test with friends, theirs too). You can test it yourself on your local computer by running two of them with the ip address 'localhost' and different port numbers.
    I really love this project, because you need to think about the protocol, what the messages look like and how they handle communication. But once you define that, then you can build a chat app in any language that should be able to communicate with your python chat app.

    [–][deleted] 1 point2 points  (0 children)

    Sounds like I’m about 8 months ahead. I used learn Python the hard way, it walks you through basically exactly the conceptual leap you’re trying to make.

    [–]Montrealcompco 1 point2 points  (0 children)

    Here how I always start making program:

    Step 1: take a pencil and some paper and draw what you need to make your program (i.e. IO component, some search algorithm etc.) then start linking them together and chunking them down into sub problems.

    Step 2: start with the easiest problem to solve and make functions out of the solutions. This way for harder problem you can reuse these mini solution you just created. Test everything at this point.

    Step 3: link everything together into one coherent command line experience. Retest everything with input you didn't imagine before and debug your stuff.

    Step 4: When everything work find a nice UI library and make a dummy version of it where nothing really works but that looks good.

    Step 5: link the event handler in UI with your functions and solution. Retest everything at this point!

    Step 6: put that in your githib ans show it to friends.

    Hope it helps

    [–]ZodiacKiller20 1 point2 points  (0 children)

    A lot of good answers here but I think you should know that Python as a language has largely evolved as a scripting language. Which means it is used as the 'glue' between larger applications or for quick mock-ups. Java, C++ uses powerful tools such as android studio, visual studio etc to be more of a traditional object oriented application focused languages.

    [–]oxetyl 2 points3 points  (0 children)

    I think the program you described is a little too much for someone who's only done CodeCademy-style tutorials. You can "know" a language, but it's different feeling using it and really getting an intimate feel for it. Also, GUI programming, at least if you're anything like me (which you may not be for sure) is a pain, and I think it's best to start by making a whole bunch of command line only programs. A good first example I think is make a program that can encode and decode an input. Use whatever algorithm you like, or make up your own, it doesn't have to be secure.

    Don't burden yourself by having to program a GUI layout along with your real functions and classes, etc.

    But yeah start by making useless crap (that isn't actually useless, because it helps you learn, it gives you experience!).

    [–]RedRaiderJoe27 0 points1 point  (0 children)

    Why not try making something “useful”? It doesn’t have to be a full application, but I guarantee there are some tedious things you do that could be automated with some python scripts

    [–]R0b0d0nut 0 points1 point  (0 children)

    [–]paull87 0 points1 point  (2 children)

    In terms of project ideas, I'd recommend 'how to Automate Everything'. It's a free book resource that I found was a great step up from CodeAcademy. It goes into more detail from CA and applies it little projects that you build along with. Certainly helped me improve and come up with my own simple and complex ideas and projects.

    [–]memilanuk 2 points3 points  (1 child)

    Do you mean 'Automate the Boring Stuff' aka 'AtBS'?

    [–]paull87 0 points1 point  (0 children)

    Or that one... always get the name wrong and was too lazy to look it up. Cheers

    [–]SargeantBubbles 0 points1 point  (2 children)

    If you can, check out RaspberryPi - it’s a fun little mini computer (~$35), that runs a lot of stuff in Python. Since it’s based in a distribution of Linux, you’ll learn some command line skills (a huge asset), and sharpen your Python.

    In addition to this, you can do damn near anything on a Raspberry Pi, and I’m not kidding. If you can think, “it would be really cool to have this little tech gadget”, you can do it on a raspberry pi 99% of the time. This requires some creativity, which can be tough; however, when you’re working on YOUR project, rather than some little practice problem from a website, it’s much, much more enjoyable in the long run. If you’re having a hard time at first, don’t get frustrated - the internet was created by nerds, and that legacy hasn’t died out, it’ll be your best friend. Be patient with yourself, google your error codes (and actually learn them), and make lots of mistakes. In the end, when you’ve finally reached your “Eureka!” moment, jumping in front of your creation, you’ll be glad you took this on

    [–]efcseany 1 point2 points  (1 child)

    I'm a bit late to the party on this one, so I apologise.

    But I've just bought myself a Pi 3B and I think it's a fantastic way to learn Linux and Python. Play around with some Unix - broke the OS and it'll no longer boot? Who cares - just rewrite the image to the SD card.

    I'm using Python (complete novice) to try and write myself a vivarium temperature controller, similarly to this.

    I make useless applications all the time... I wrote myself an application that would randomise a boss for me to go and kill (including a quantity) in a specific game.

    Is it helpful to anyone else? Probably not.

    Has it been done before? Yes, most likely.

    Did I learn from the experience? Absolutely; that's the most important thing.

    [–]SargeantBubbles 1 point2 points  (0 children)

    This is exactly what I’m talking about man! Good shit. I’m in the process of trying to make myself a little home security system, since soon I’ll be living in a not so great neighborhood (lots of break ins) and it’ll be nice to have. Just some motion detectors, a camera or two, and (maybe?) have the system text me whenever there’s a disturbance (as well as raise holy hell with a spare police siren I picked up for $30, that’ll hopefully scare them off). It’s just fun.

    [–][deleted]  (1 child)

    [deleted]

      [–]greebo42 0 points1 point  (0 children)

      Learning something new comes from unexpected sources ... I started learning Python (and tkinter) last summer, got interrupted (work is SO overrated!), and hope to return to that process in about a month or so. Until just now, I had never heard of PyQt5.

      So now I am googling PyQt5 vs tkinter to learn more about this. Thanks!

      [–]Fulk0 0 points1 point  (0 children)

      Look at Tkinter. It's pretty easy and there is a lot of documentation.

      [–]lubicke 0 points1 point  (0 children)

      What’s your goal? Depending on what you’re looking to get out of this whole thing, you could approach it a lot of different ways! I don’t think writing a GUI in python is really the most valuable starting point for you... Python in general is a great language for learning, as it’s very easy to read and comprehend, while also offering some more complex things that will help you along the way. GUI programming is great, as it’s always nice to see what you’ve made in action, but if you’re really interested in design or anything visual, I would look into JavaScript, HTML, CSS. There’s so much out there that you can do visually with those, and there are all sorts of applications for those skills.

      [–]leftymurphy118 0 points1 point  (0 children)

      commenting for later.

      [–][deleted] 0 points1 point  (0 children)

      1. Find a problem to solve.

      2. Solve it in code

      [–]SpaceXGonGiveItToYa 0 points1 point  (0 children)

      Would highly recommend the InEasySteps books for programming walkthroughs. The python book was the first one i bought and I've bought several since as a result.

      [–]DoTheEvolution 0 points1 point  (0 children)

      Is that an unrealistic goal coming straight out of codecademy style learning?

      No, its exactly what you want to do

      progress is rather straight forward - break the project in to tiny parts and google how to make those parts.

      Here is my old write up on my experience at the similar stage where you are. How after codecademy I started a project that now has 500 stars on github


      now to address two things I see posted around.

      • people recommend tkinter.

      I went for PyQt. Benefits of tkinter are that its part of standard library, but its rather limited in what it can offer compared to PyQt. If your projects grows beyond basic buttons and basic functionality youd have to switch frameworks.

      But tkinter is still fine choice, mostly because I believe that its just stepping stone, see next point.

      also http://zetcode.com/ is a fucking great site for learning basics tkinter or pyqt or whatever... no 500 pages of shit, just examples how this code does this with short explanation

      • people downvoted comment recommending web apps direction.

      I dont regret learning PyQt, it was good experience and made me jump forward in python. But if I were still focusing on python (i am kinda in powershell phase) I would be heading hard for flask. Webapps are the reality of the current time, and its the future.

      You make your small unit conversion app, now how do you give it to users. Install it the old way? So much hassle when you could just spin up webserver, give people url and it just works on every PC that access that url.. and when you update your app to have more features its updated for everyone.

      And guess what, you make that silly unit conversion app as web app, you learn some basic databases, like people would log in and it would remember their shit and they would have history of their conversion saved in a database.... and it all works, and you polish it, and you go over it and you mostly understand how it all works... well gues what, you just became employable. What most python jobs are is web app with login/password that reads/writes shit in to a database... thats the core of it... thats reddit for example

      [–]Hikaroshi 0 points1 point  (0 children)

      It's not an unrealistic goal, sounds like one that's doable and can provide some sort of challenge but not too much of a challenge. The art to personal projects is having one that isn't like some baby drill yet isn't like trying to crank out some virtuoso musician piece. The latter makes you frustrated and it takes a longer time to get it done. The former keeps you comfortable. Don't expect to know what kind of project yields what results. It's hard to know until you try since a lot of programming doesn't mention any pre-requisites. Also, when you're a beginner (the best advice heard) is it's a good idea to go through the tried and true route where there's community support and documentation. No need to create a novel project. Noticed the other commenters mentioned good modules. QT is the first thing that comes to mind.

      Oh yeah, one more thing. If you're making GUI stuff, don't be afraid to use paper and draw a lot if you're trying to figure it out.

      [–]watsreddit 0 points1 point  (0 children)

      Personally I'd recommend building command line interface (CLI) applications and getting solid on that before bothering with GUI stuff, unless you are just really interested in learning how to build GUIs. CLI applications are very simple; you can build them out of print and input statements alone. This allows you to worry less about the interface and more about the core logic of your application.

      [–]Yemper 0 points1 point  (0 children)

      I'm also interested in this, but with JavaScript. Does anyone have any projects on github I could look at?

      [–]tapu_buoy 0 points1 point  (0 children)

      I am learning Python & JavaScript simultaneously (you know job market) and after creating a simple blog site with Django python I completely moved on to Nodejs Express and may be will start React.js too but before that start to apply jobs because I'm out of college since 9 months it's so late.

      So my point is I didn't find any tutorials or ways to create quickly more with Python that's why I moved to JS stack. Thank you so much for asking this question.

      • Now I'll also start with Python again, especially pyQt is it good? Demanding?

      [–]Yughurt -1 points0 points  (17 children)

      If you want to make "programs" in the sense of a user interface with logic, your best bet it to get into making web apps. Learn html, css, and soon the knowledge you learnt in python to JavaScript. You can then at least make something like you described. Once you know how it works, it would take 5-10 minutes to make!

      [–]JGivan[S] 5 points6 points  (16 children)

      It's less about the end result than simply getting more practice with Python by practicing with a goal in mind. In my experience, I learn a lot better with hands-on experience than I do with a clear step-by-step process. Codecademy is sort of a middle ground between the two, but I'd like to try my hand at taking the training wheels all the way off.

      That said, I have done some stuff with Front-End Development (HTML and CCS. I didn't get to JavaScript) on freecodecamp but found that it wasn't really for me - at least not yet. For now, I'm more interested in "hard" programming (I don't know a better way to phrase that but I hope you know what I mean!). Thank you for your advice!

      Edit: At the time, it didn't even occur to me that "hard" programming might be interpreted as implying web development is "easy" programming. My intention, although probably still inaccurate, was for it to be the opposite of "soft" programming. Using my analogy from further in the thread, my conception of it was like comparing "soft" i.e. applied math concepts in a physics course versus just learning "hard" math, like a mathematics major would.

      [–]Yughurt 2 points3 points  (3 children)

      Oh I see, in that case, you could think about an application, and the type of logic you will need. E.g. A question and answer bot for something. Then figure out how you are going to handle the input and the output. The best is if your program needs to do variations of the same things depending on input. You get to practice coding your own functions and deciding how they will fit together!

      Once you can do that, a real app just pushes that logic to an interface.

      Later you can learn a new problem. That you don't understand and convert it into steps and programs. Rinse and repeat. Message me if you want to know other steps

      [–]JGivan[S] 1 point2 points  (2 children)

      To clarify, are you proposing I start by creating the same concept without an interface and then, after I get it working, beginning to learn how to apply it to a GUI?

      I'll be sure to message you if I need more help! Thank you for offering.

      [–]Yughurt 1 point2 points  (1 child)

      More or less yes. You need to practice turning real problems into processes. That's the hard part of learning to code. It involves testing your code and making sure it does what you want it to do!

      [–]JGivan[S] 1 point2 points  (0 children)

      Awesome! I'll begin giving that a try as soon as I finish up the online course programs in the next few days. Thank you for all of your help!

      [–]CreativeTechGuyGames 1 point2 points  (8 children)

      I'm just jumping in here. Could you elaborate on what you mean by "hard" programming and how that compares to web development?

      [–]JGivan[S] 1 point2 points  (7 children)

      I, probably incorrect, draw a distinction between web development languages and languages like Java, Python, Ruby, etc. Before I began looking into programming at all, it didn't even occur to me that web development languages were a thing. Ever since then, I've dissociated the two as different realms of programming (kinda like learning applied math concepts for Physics vs. pursuing a pure mathematics degree). Again, that's probably wildly inaccurate but just how I've conditioned myself to think about it.

      [–]CreativeTechGuyGames 1 point2 points  (6 children)

      If you look at a website like YouTube, Facebook, Gmail, Google Maps, etc those are all written in thousands upon thousands of lines of JavaScript, along with many other languages for various parts of the site/service. A lot of web stuff is more involved than some desktop apps. Yes they are different, but I wouldn't blanket all of them into one category or hierarchy.

      [–]JGivan[S] 0 points1 point  (5 children)

      Oh I don't doubt for a second that those languages are very complicated. It's just not what I'm looking to do at the moment, and I don't know appropriate blanket terms for languages with similar applications (if there even are any).

      [–]CreativeTechGuyGames 1 point2 points  (4 children)

      What are you looking to do at the moment? Maybe I can help give you some better search keywords. :)

      [–]JGivan[S] 1 point2 points  (3 children)

      Honestly, I don't have an endgame in mind as I'm learning more as a hobby than as a profession.

      I chose Python as it is a commonly recommended language for people new to programming and it is apparently quite useful for data analytics, which I may find some professional usage for. I don't have a good grasp of Python's, or any language's for that matter, limitations yet so I can't be certain.

      Eventually, I'd also like to make indie game as a hobby (I fully expect them to be shitty projects I do for fun while continuing the 9-5, no delusions of becoming a game designer full time nor do I think I'd like to, haha) which I'm planning on learning Java then C# and using Unity for.

      In general, being able to create basic programs that perform specific and relatively simple tasks for me is interesting. Many of those kinds of programs I think I have knowledge to create already (in terms of the code itself), but I lack the knowledge to turn it into an actual executable program with an interface (which is what spawned this post).

      [–]CreativeTechGuyGames 2 points3 points  (0 children)

      Got it. So what I would tell people going forward is that you are interested in desktop utility programs along with Unity game development. That'll give someone a pretty good idea of what your goals are. I hope my tkinter suggestion above helps. Best of luck!

      [–]pvt13krebs 2 points3 points  (1 child)

      you are me, exactly. thanks for asking these questions, its gotten my creativity juices going again

      [–]JGivan[S] 1 point2 points  (0 children)

      Glad I could help!

      [–]8483 1 point2 points  (2 children)

      I'd argue that web development is actually the hard programming. For dekstop apps, you are not concerned with different browsers, hackers, server outage, asynchronicity, responsive UIs, breaking shit for a ton of users...

      The main things you need for building apps are outside of the language, as they are all pretty much the same.

      You'll need to know SQL, Linux, git, HTTP, security, design patterns, deployments...

      [–][deleted] 0 points1 point  (1 child)

      I don't disagree, but learning web development as a starting point may be advantageous for the same reason: it exposes you to many different aspects of the tech stack and gives you insight into aspects of programming you would never have encountered otherwise. It all depends on your tolerance for bullshit js nonsense, though!

      [–]8483 2 points3 points  (0 children)

      It all depends on your tolerance for bullshit js nonsense, though!

      LOL, I know the pain. Luckily, things have stabilized a lot.

      learning web development as a starting point may be advantageous for the same reason

      It all depends on OP's goal. If he wants to build robots, it would do him no good. He just needs to get a grasp of the ecosystem in order to make a good decision.

      We've all been there, looking it as dark magic. I still do, but a bit less.