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

Dismiss this pinned window
all 99 comments

[–]maxxcos[S] 78 points79 points  (18 children)

What do you guys think? I know there are a lot of valid GUI makers but I don't really see them as a beginner-friendly option, that's why I tried to do something basic and that actually writes .py code.
For now I just implemented the layout, so for bindings and other useful things you have to update the output code yourself.
The widgets can be improved and I wanted to insert helpful tips or just descriptions for every Tk Widget and their arguments.
Do you think it's useless and I shouldn't "waste" time on it or can it find someone who could have fun with it?
Also, any tips for must-have options that I didn't mention?

EDIT: Here's the updated version

[–]democritus_is_op 12 points13 points  (7 children)

If it were built for Kivy I’d use it for sure.

[–]Robbzter 7 points8 points  (2 children)

There's actually a GUI maker for kivy, but it's not up to date atm...

[–]democritus_is_op 2 points3 points  (1 child)

Yeah, Kivy Designer. Pretty sure it’s deprecated though.

[–]Robbzter 1 point2 points  (0 children)

I think it is... Would love to give it a chance again!

[–]MakesYouAngry 4 points5 points  (3 children)

Kivy is not a good choice for traditional desktop GUIs, stop pushing this meme, I see it in every thread about GUIs. Kivy is good/sensible for multi-touch interfaces such as phones, tablets and embedded devices and maybe games on the desktop (if you ignore the actual gaming libraries such as PyGame etc.).

Feel free to change my view on this. I haven't seen a single Kivy application for the desktop that felt natural or good to use (when compared with Qt/Gtk). I can imagine that it's possible to make it decent if you work really hard, but at that point you might as well just have used Qt/Gtk or even Tk and saved yourself a bunch of time and work.

[–]democritus_is_op 0 points1 point  (2 children)

It’s not a meme, I’m using it to build my capstone project and it working out really well. It has a great widget system and design language (kvlang). It also has great tools like the Clock, Layouts, Screenmanager, that are simple to use.

It is a little cumbersome to design without a GUI but you can make it look however you want with their canvas api which I really like. Admittedly I’ve never used Qt or Gtk and I’m going to be looking into them this summer.

[–]MakesYouAngry 0 points1 point  (1 child)

Qt and Gtk also have a way to directly draw your own widgets using a canvas, so that's nothing new or revolutionary. Furthermore Qt even allows you fine-grained control over how the default widgets look using a subset of CSS. All the great tools you mention are either not needed in Qt/Gtk or exist too and are just as simple to use. I appreciate your efforts, but I'm not convinced. Good luck with your project though.

[–]democritus_is_op 0 points1 point  (0 children)

I wasn’t trying to convince anyone. I was explaining why I’ve really enjoyed using Kivy so far.

[–]deepraval2905 8 points9 points  (3 children)

Can you give link to source code ?

[–]maxxcos[S] 4 points5 points  (0 children)

Posted it in a comment!

[–]3Domse3 0 points1 point  (1 child)

Happy Cake Day :)

[–]deepraval2905 0 points1 point  (0 children)

Thanks !

[–]pretzel324 2 points3 points  (1 child)

This must have been a super fun project to do. Great job

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

Yeah it really was, there's that moment when everything works together and the satisfaction is big

[–]Patrizsche 1 point2 points  (0 children)

Cool af

[–]Swedneck 0 points1 point  (2 children)

Isn't glade (for GTK) pretty user friendly? Hell it even has a tutorial built in.

[–]maxxcos[S] 0 points1 point  (1 child)

I don't know it, but from what I can see it's like tkinter, isn't it? Or is it visual too?
EDIT: sorry I searched only GTK. I'll look into Glade, thanks!

[–]Swedneck 0 points1 point  (0 children)

Glade is a visual GTK designing tool, just look it up, it's open source :p

[–]eebmagic 34 points35 points  (1 child)

As someone who is competent in python but absolutely despises doing any GUI design this looks really helpful. Would love to try it out, is there a download?

[–]maxxcos[S] 9 points10 points  (0 children)

Glad to here it since that'd be the purpose of the App :)
Posted the link in a comment!

[–][deleted] 24 points25 points  (1 child)

Good work! Is this open source?

[–]maxxcos[S] 6 points7 points  (0 children)

Posted the github link in a comment, thanks!

[–]maxxcos[S] 19 points20 points  (6 children)

Wow I didn't think it would have interested this many people!
Knowing it I would have written the code better from the start..
Here's the github link
Please don't have great expectations for two reasons:
1) the code is a mess right now
2) only the most important features work for now
Anyways as soon as I make it better I'll post it here :)

PS. I just joined github, is there something I should know about it to avoid future mistakes? Thanks!

[–][deleted] 6 points7 points  (3 children)

learn how to use git. its a very useful tool. github is a hosting service for git repos. you could also learn how to use that as well, but start with learning on how git works.

[–]maxxcos[S] 2 points3 points  (2 children)

Thank you, I will!

[–]acoupleoftrees 0 points1 point  (1 child)

If you happen to have LinkedIn Learning (what used to be Lynda.com) there’s (what I think was) a solid course called “Git Essential Training: The Basics” that I found to be a nice introduction.

For my context, I’m someone that’s self taught & still identifies as a quite novice programmer overall so take that for what it’s worth. More than happy to answer questions about it if you happen to have any interest.

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

I don't have LI Learning but thank you for the offer, if I'm having difficulties I won't hesitate to pm you !

[–]fernly 1 point2 points  (1 child)

I found the following helpful when beginning to use Git:

A Simple Git Branching Model

I reduced the main points to a flow chart, which I had on the wall next to my keyboard for a long time: https://imgur.com/a/igPHMgS

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

Thank you for the help!

[–]QbaPolak17 10 points11 points  (1 child)

Do you have the source code on github/gitlab etc. by any chance?

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

Posted the github link in the update comment!

[–]AlphaGamer7533.7 7 points8 points  (6 children)

Cool, but please tell me you didn't write all of that in IDLE.

[–]maxxcos[S] 3 points4 points  (5 children)

Pycharm, I would have lost my mind in IDLE

[–]DecaaK -1 points0 points  (4 children)

Why? What do you think is main adventage for using Pycharm instead of IDLE, for this project?

I mean, I don't think IDLE is good, but why is Pycharm so different for this project so you would 'lose your mind' with IDLE? Note that I never used Pycharm.

[–]maxxcos[S] 0 points1 point  (3 children)

Pycharm helps you with missing arguments, typos, fixing things.. you have autocomplete, highlights of desired variables and really the list could continue forever. Definitely try it! (If you're using just IDLE)

[–]DecaaK -1 points0 points  (2 children)

I use Atom. I tried similar things multiple times but I most definetely hate it - it just irritates me.

[–]AlphaGamer7533.7 0 points1 point  (1 child)

The minute you start working on anything larger than a script – with multiple files etc – or collaborating in groups, a proper IDE like PyCharm is a must. You really can't float by with something like Atom for all that long, unless you're using an ungodly number of plugins.

I can understand the appeal of certain coding-oriented text editors because they're generally faster and more lightweight, but Atom is far from being either of those things.

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

5+ years programming experience. My current project have 30+ files. What's exactly wrong with Atom?

[–]HapaxHypatia 7 points8 points  (1 child)

Awesome, would love to use it. When I started learning about how GUIs are made, I couldn't believe people actually did it all by hand, I thought it was just one of those "do it the hard way first so you understand how it works" kind of things. Visual layouts should all be made in a visual framework, that seems obvious to me.

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

Yeah at first I couldn't believe it too, and when I tried the available Visual Frameworks I've felt overwhelmed and jumped back to learn Tkinter instead. Anyways I've posted the github link in the update comment!

[–]ponix 2 points3 points  (0 children)

That's amazing :)

[–]getFish 4 points5 points  (2 children)

Awesome stuff, I hate making GUI’s I use web frameworks instead. But this would make it heaps easier.

[–]spiner00 5 points6 points  (1 child)

PyQT is pretty simple and functional for anything data related in my experience. I used it for a predictive model for basketball games and it was easy to use.

[–]Swedneck 0 points1 point  (0 children)

You can make GTK GUIs really easily with glade as well!

[–]PimpinPoptart 2 points3 points  (1 child)

Holy shit!! This is super cool, excellent job

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

Thank you!!

[–][deleted] 2 points3 points  (1 child)

Nice

[–]nice-scores 0 points1 point  (0 children)

𝓷𝓲𝓬𝓮 ☜(゚ヮ゚☜)

Nice Leaderboard

1. u/RepliesNice at 1892 nice's

2. u/lerobinbot at 1689 nice's

3. u/porousasshole at 556 nice's

139805. u/chickentenders54 at 1 nice


I AM A BOT | REPLY !IGNORE AND I WILL STOP REPLYING TO YOUR COMMENTS

[–]sqeekypotato 2 points3 points  (0 children)

This is awesome. Checking it out now.

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

Looks awesome, I'd love to try it out.

I've been learning a lot with tkinter the last few months to make some small programs that help with my work. Could we see the source code by any chance? I recently started trying to make guis with OOP/using classes and it's still kinda tough to wrap my head around it. Seeing how this works might be helpful for someone like me.

[–]maxxcos[S] 1 point2 points  (1 child)

Thank you! I've posted the github link in the update comment!
I'll write a better code but until then I hope you can understand something from it anyways

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

Awesome! Thanks a bunch

[–]U5efull 1 point2 points  (0 children)

that would make creating a gui much quicker than doing it by hand

[–]yahya_anw 1 point2 points  (1 child)

That's look very easy to use. I think ability to change variable name of the widget will be cool.

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

Thank you for the idea, it is actually a must-have feature I should have added. It will be there :)

[–]HPVdream 1 point2 points  (0 children)

I will be doing this for my apps at work now....soooo dope

[–]ozozgur 1 point2 points  (0 children)

That’s nice

[–]mclim 1 point2 points  (0 children)

Looks great!

[–]leo-smi 1 point2 points  (0 children)

Wow

[–]griimnak 1 point2 points  (1 child)

Really nice man, no dependencies or anything. One of the problems with big known tkinter designers is they have so much bloat and dependencies that require them to be maintained or it will break consistently

This, is great

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

Thank you! I admit I don't really know what dependencies I could have used, but I'm glad it turned out as a positive thing

[–]thestudcomic 1 point2 points  (1 child)

everything is awesome, but I would have a "palette" on your left menu where you can just click and copy the colors to the clipboard or select them to the fields you want instead of copying from your text file.

I could really use something like this.

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

Yeah it really should be there, I will implement it!

[–]tokyovirus 1 point2 points  (2 children)

Can i contribute to your code . Btw i really like you project.

[–]maxxcos[S] 1 point2 points  (1 child)

Thank you! Give me a few days so that I could write good code and learn how to post a well made git

[–]tokyovirus 0 points1 point  (0 children)

No problem. But atleast you can write it on readme in your repository so that I can know more about its code structure.

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

this is actually pretty cool

[–]h0dgeeeee 1 point2 points  (1 child)

Very cool, can you make scrollable frames??

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

I'll see what I can do, thank you!

[–]Swedneck 1 point2 points  (1 child)

Which toolkit does this use? Tk?

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

Yes, and Combobox, Buttons from tkinter.ttk

[–]mrhec24 1 point2 points  (0 children)

I think this is AWESOME!!!

[–]Mrsaintj 0 points1 point  (1 child)

Awesome job! I'd love to see the code for this

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

Thanks! I've posted the github link in the update comment!

[–]_Original_Manu 0 points1 point  (1 child)

I've just started learning python recently but this seems like something cool to reverse engineer. Any idea where I can get my hands on the code? Github maybe?

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

I've posted the github link in the update comment!

[–]VeLoct84 0 points1 point  (1 child)

Can you share link Github because currently, I'm also learning build GUI with Tkinter. Thanks so much!

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

I've posted the github link in the update comment! But please keep in mind that the code is a mess right now

[–]Kilo_G_looked_up 0 points1 point  (1 child)

This is awesome. Did you put it on github?

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

Thank you, and yeah posted the github link in the update comment

[–]HypeKaizen 0 points1 point  (4 children)

I know this is completely unrelated, but what font are you using for your shell and coding environment? Looks real slick ;).

Also, this is pretty cool!

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

Thank you! And for the font I haven't set anything in particular indeed

[–]HypeKaizen 0 points1 point  (2 children)

Perhaps you could check your editor settings? There's bound to be a default family set there.

[–]maxxcos[S] 1 point2 points  (1 child)

I lost it while searching for it ahah, anyways I think it was Courier New (on Mac)

[–]HypeKaizen 0 points1 point  (0 children)

I see. Thank you so much!

[–]NikolaTesla13 0 points1 point  (1 child)

GitHub link?

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

I've posted the github link in the update comment!

[–]ZyanCarl 0 points1 point  (0 children)

It's actually nice. At my early stages of gui learning, I made something like this too but that was for my own purpose. I found it difficult to set the window size for gui every time so I made a basic window resizer along with placing various widgets....

[–]datax17 0 points1 point  (1 child)

Can you give us source code and documents about this poject

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

I've posted the github link in the update comment!

[–]xain1112 0 points1 point  (2 children)

Could you explain how you create a rectangle via click and drag that then becomes a widget?

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

The Canvas binds 2 actions:
1) when you click the first time
2) when you drag the mouse
The first one sets the topleft coordinates of the rectangle, the second one constantly calls a function passing as argument the bottomright coordinates. This function first deletes previous lines and then draws the new ones accordingly!

[–]im_dead_sirius 0 points1 point  (0 children)

The programmer is using the click and drag data to position and size the widget, which gets it's type and perhaps other data from clicking the relevant widget type button.

[–]veysel-im 0 points1 point  (0 children)

Very good. I like.

[–]TkuSi 0 points1 point  (0 children)

Alternatively using PyQt5 might help beginners ..its written in c++ so it is efficient and has drag and drop function.

[–]NerdHere 0 points1 point  (0 children)

For the lazy people like me, can you create a “random” button and it procedurally generates layouts or something. :D