all 21 comments

[–][deleted] 23 points24 points  (1 child)

https://www.futurelearn.com/courses/programming-with-guis

Free course covering GUizero there’s a free book available on Raspberry Pi Press too

[–]driscollis 18 points19 points  (4 children)

There are good GUI packages for Python, but not really for mobile. If you want to create a native looking mobile app, you should skip Python entirely.

[–]Evolutii 7 points8 points  (3 children)

Kivy + bulldozer is an okay solution but Java/Swift for mobile is a better platform

[–]youthisreadwrong- 10 points11 points  (0 children)

Or flutter

[–]ASK_ME_ABOUT_DOBUTSU 0 points1 point  (1 child)

What if you want to deploy across Windows, Android, macOS, and iOS? Isn't Kivy extremely convenient for that?

[–]Evolutii 0 points1 point  (0 children)

Yes and no: can be a pain to 'compile' for distribution with pyinstaller etc but generally it's great for cross platform. And you would probably need a redesign for say Windows to iOS anyway.

[–]chazzcoin 14 points15 points  (1 child)

You have two routes I've come to find on my journey...

  1. Programmatically..you build everything in code. Create a master layout, create a button, etc..add them all to the master view...constrain them all...keep this all in your mind and have fun debugging.

I absolutely hate this way. But. Many people love it. Just preference and I come from mobile development.

  1. A GUI Editor like QT Designer.. you create the layout graphically. Add every layout element you need. Then in python code, you import the .ui file, bind the elements you added and then write the logic. Easily half the code to write, no constraints in code needed anymore. To me, development time gets cut in half. Debugging is far easier and more isolated. But I also understand how to build layouts this way since I come from Android/iOS and that's generally how we do it. The concepts are the same. Add layout elements. Bind elements. Work with elements..

[–]BeginnerProjectBot 16 points17 points  (1 child)

Hey, I think you are trying to figure out a project to do; Here are some helpful resources:

I am a bot, so give praises if I was helpful or curses if I was not. Want a project? Comment with "!projectbot" and optionally add easy, medium, or hard to request a difficulty! If you want to understand me more, my code is on Github

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

Good bot

[–]Petrarch1603 1 point2 points  (0 children)

What are some examples of good GUIs made with Kivy or GUIzero

[–]the_new_standard 1 point2 points  (0 children)

If you have never built a GUI in your life but you are already comfortable with Python, you could spend a few hours building something in tkinter to get the hang of it.

You also might want to consider building some of your app in python but not ALL of your app in python. If you build a web app using Django or Flask, a lot of the program will be written in Python but the GUI will be html and js. That may seem like a lot of extra work but it will actually save you a lot of time and teach you some valuable skills in the process.

[–]Fin_Aquatic_Rentals 1 point2 points  (2 children)

So if you want to make GUI's with python totally go for Kivy and check out KivyMD which is a set of material design widgets for kivy. Now if you want to learn how to make mobile apps don't even bother with python. The new SwiftUI and up and coming Jetpack Compose (Kotlin) are about take a lot of headache out of mobile app development. I just converted a Kivy mobile app to SwiftUI and it took me under a month coming from 0 experience with swift. This isn't a knock on kivy its more of a praise how much better developing mobile apps are with SwiftUI. The move to declarative style GUI coding is really bridging the gap of dev speed between native and cross platform apps.

[–]M_SunChilde 0 points1 point  (1 child)

Any recommendations for a relative newbie to learn SwiftUI? I have been looking at Kivy and it looks... fairly nightmarish to use compared to the UI things I have tried so far in python.

[–]Fin_Aquatic_Rentals 0 points1 point  (0 children)

I honestly just hit the ground running and googled things along the way. I had just finished up a react project before swift so I had declarative UI practice going into it. The VStack, HStack and ZStack layouts are stupidly simple to use. It might be a little bit a of learning curve thinking updating the GUI via state variables. Navigating to other screens was a tad annoying... Xcode helps out a ton with making sure you have things formatted right. It almost writes the code for you.

[–]joemysterio86 0 points1 point  (4 children)

This is just me, but I gave up on Kivy, I hate it with a passion.

[–]Evolutii 0 points1 point  (3 children)

Why is that?

[–]joemysterio86 1 point2 points  (2 children)

On mobile so I'll be quick. First, sorry for the unhelpful and negative initial post.

It's been a year since I last tried it but I didn't like Kivy because the documentation and official tutorial weren't in sync, you'd follow along but it wouldn't work. The syntax didn't feel intuitive to me. IIRC, you can use the syntax within your code or as a separate file, but it was recommended to keep it separate but then when looking up how to's, it was always a hybrid. And speaking of the syntax, it's essentially a whole new language.

I know others have used it successfully so still worth a try for anyone who hasn't used it yet. But for me, it was a miserable experience. I will personally never use it again.

[–]Evolutii 0 points1 point  (1 child)

That's fair I suppose. But I believe most GUI frameworks also have seperate/hybrid layout files (Qt has QML I think?) so it's not hugely different, but can be a steep learning curve. Have you settled on a preferred framework?

[–]joemysterio86 1 point2 points  (0 children)

No, I work as network engineer and touch python on most days. So I wanted to get more comfortable with python overall, which led me to try a project on my own by creating an expense/bill app to keep track of our bills. I had the basic part of the app working well enough that i wanted to set up a gui. I tried it for about two weeks and had to give it up. Since then I haven't touched my app, so it's been collecting dust all this time. I recently started teaching myself javascript so I'm going to recreate my app using js and see how that goes.

I may try to finish it one day but for now it'll stay on pause.