This video will cover how to create complex tkinter layouts using all the layout methods (pack + grid + place) along with classes to organise them well. Code: github.com/cle...
Your videos are awesome! You have a great teaching style - you explain thoroughly, and you speak slowly enough so we can process what you're saying as you're writing the code. Thanks!
Another excellent video. The only thing to mention here is that the gain is only seen for much larger projects. The new code in this case is actually 25% longer than the old code.
Standing ovation, Sir!👏 I have watched all these (your) videos from the first one and will continue to the last one (#40) because they are so good! My deepest congratulations, inspiring!
Bro, this is amazing! One of the best well-explained videos on class-based apps. I am using this approach, but do have doubts sometimes on how to organize the code properly. Thank you for making this easier!
wooow I can't speak, before this video I had a lot of problems understanding the classes, and I had no idea how and why should I use them but know you opened my mind and make me see their importance and make me understand them easily.... thank you very much from all my heart ❤ .
Thank you, this is superb. Very clearly explained, and exactly what i was looking for. The only difficulty I had was that many of my labels have text that changes as part of the program, so I had to call mainloop using the object (instance), rather than from within the class constructor. I can't see any way around that, but if anyone reading this has any thoughts I'd love to hear them. Thanks again for such a clear and detailed explanation.
Some super helpful videos, excellent quality! Any chance you could make a video talking about passing information between the frames? Eg, when a button inside Main frame is pressed, it should update something inside the Entry frame? In my particualr case - I have a class which contains a matplotlib canvas and I have a few classes defining different frames which contains some buttons and entries. I want the matplotlib canvas to be updated based on the entries and button pressed in those different frames
It works perfectly on Windows 7 but the red label will not display on Linux Mint 20.3 My mistake! In the class Menu(ttk.Frame): Def __init__(self, parent): I entered __init__ as __int__ This occurred using one of the built-in features of PyCharm. An easy mistake to make, but not easy to spot (with my eyesight). Many thanks for the videos!
The big problem with abstraction is that, you can't really do it from the get-go most of the time. If someone tries to get started with a GUI and go straight into abstracting first, and building functions second, they'll have a hard time debugging and a hard time when they get an idea while building and now they have to fit it in somewhere, or something didn't play out as expected. The sad truth is that, you kind of have to make a mess first, before doing it clean. After all, you can't "clean" unless it's dirty.
Very clear and easy to understand videos, easiest I have found to follow and comprehend. Would you continue with the series by adding commands to the buttons and then splitting the parts into separate modules or .py files. I am trying to create a sqlite database app with a lot of tables and table editing windows but am struggling as it gets too complex and I have been unable to split the modules while maintaining functionality. It a model train/Item inventory database Thank you for your videos!
Yes. I was wondering if he would create a video with the OOP approach but with functioning buttons next time. Here it is mainly just creating and placing widgets
Why do you prefer class inheritence instead of composition, is there any reason that I don't know yet? I ask this question, because all component based web applications construct their components via composition further I know how difficult to maintain inheritence based approach from ancient MFC applications. But all OO tkinter courses prefer class inheritence, maybe there is a good reason? Consider how difficult to switch from Tkinter to CustomTkinter if you prefer class inheritence.
People prefer inheritance because that's what they have been told in classes that focus too much on OO rather than general design principles. There's no real reason to use OO with tkinter other than slight convenience at the cost of overcomplicating your code structure. They're using implementation inheritance, which is a no-no in 99% of the cases where composition would accomplish the same while being much simpler.
Not sure if you care anymore haha but my guess was that rather than creating and packing each button and label you're able to do that once, and then create 2 (or more) instances of it. Like let's say instead of 2 label/button pairs he wanted 10. If he didn't create the class, he would have to write all the ttk.Label and ttk.Button and the packing code out 10 different times. Whereas with the class, he adds the Label/Button and .pack() code only once, and then just creates 10 instances of it.
I did it differently and it worked: from tkinter import * class App(Tk): .... class Menu(Frame): ..... And for widgets: Button() not ttk.Button Label() not ttk.Label() Is it okay or can various problems/conflicts appear in the development of an application?
I have been following the video but I didn't see any colours, so I downloaded and copy-pasted your code and everything displays except the colours. What could my error be? macbook pro late 2012 running macos big sur
sir i have a question, i need to make buttons which can bring frames in the parent frame. means when we press the button we show frame, and further place buttons in that frame, to bring more frame. i cannot achieve this approach. please upload this kind of tutorial
My man, I am stuck on something, Since "Menu" class is somehow unrelated to the "Main" Class but instead share a common super class "App", i want a button on the "Menu" Class to call a method on the "Main" class, how do I do That since Main is not a child of Menu? Thanks for this amazing video!!
sir, GoogMorning, i'm very beginner to Python you are explaining passing tk.Tk as argument in the Class App(tk.Tk) and you are passing self i.,e, tk.Tk, into menu = Menu(self) here self = tk.Tk ??, but in Class Menu(ttk.Frame), the constructor of Menu is def__init__(self, parent) i'm confusing, in class Menu(ttk.Frame) the argument should be tk.Tk how the ttk.Frame will come, in java not like this, can you clarify??
I don't understand how you only have 5.88k subscribers! This is so well explained, which for these tutorials is rare, thank you so much!
Edit: Didnt realise u had a much bigger channel, but i still stand by what i said
just found him today I like it
Can't agree more.
The best video for tkinter till date🙏
This was an awesome explanation as you did a side by side with the NON class code. Really appreciate it
This tutorial is way better than the others. You are giving comparisons (unlike other tutorials) which is what we need. Thank you.
Your videos are awesome! You have a great teaching style - you explain thoroughly, and you speak slowly enough so we can process what you're saying as you're writing the code. Thanks!
Another excellent video. The only thing to mention here is that the gain is only seen for much larger projects. The new code in this case is actually 25% longer than the old code.
Amazing. Finally got to understand how classes work. Your tutorials are the best, thank you for doing them. ❤
Standing ovation, Sir!👏 I have watched all these (your) videos from the first one and will continue to the last one (#40) because they are so good! My deepest congratulations, inspiring!
Have to agree - the best instructor I’ve found thus far. Deserves more attention
Amazing, finally someone creating a good structure and a pedagogic way. Congrats!
Bro, this is amazing! One of the best well-explained videos on class-based apps. I am using this approach, but do have doubts sometimes on how to organize the code properly. Thank you for making this easier!
I've watched this video at least twice and reproduced the content. It's an outstanding example of using OOP and tk. Thanks!
wooow I can't speak, before this video I had a lot of problems understanding the classes, and I had no idea how and why should I use them but know you opened my mind and make me see their importance and make me understand them easily.... thank you very much from all my heart ❤ .
These are fantastic. Dude, youre an excellent teacher, pointing out the right things and making it so understandable. Much appreciated
This ist the BEST explanation i found on TH-cam.
These are indeed worth in gold.. TH-cam algorithm sucks..
Thank you, this is superb. Very clearly explained, and exactly what i was looking for. The only difficulty I had was that many of my labels have text that changes as part of the program, so I had to call mainloop using the object (instance), rather than from within the class constructor. I can't see any way around that, but if anyone reading this has any thoughts I'd love to hear them. Thanks again for such a clear and detailed explanation.
I get new understanding of tkinter, thanks you❤
the best video on this topic. you deserve way more subscribers
yep
are you beginner programmer like me?
@@natiadonay2104 new to tkinter :)
Sir i have a question on the main frame i don't under why you make 2 frames in side the other frame.?
Some super helpful videos, excellent quality! Any chance you could make a video talking about passing information between the frames? Eg, when a button inside Main frame is pressed, it should update something inside the Entry frame?
In my particualr case - I have a class which contains a matplotlib canvas and I have a few classes defining different frames which contains some buttons and entries. I want the matplotlib canvas to be updated based on the entries and button pressed in those different frames
Thank you for the video! It was super helpful.
thank you!!! Explained very well.
It works perfectly on Windows 7 but the red label will not display on Linux Mint 20.3
My mistake!
In the class Menu(ttk.Frame):
Def __init__(self, parent):
I entered __init__ as __int__
This occurred using one of the built-in features of PyCharm.
An easy mistake to make, but not easy to spot (with my eyesight).
Many thanks for the videos!
Great Videos! I learnt a lot. Thank you
are you beginner programmer like me?
Thank you. This is so helpful
Biggest help ever!
The big problem with abstraction is that, you can't really do it from the get-go most of the time. If someone tries to get started with a GUI and go straight into abstracting first, and building functions second, they'll have a hard time debugging and a hard time when they get an idea while building and now they have to fit it in somewhere, or something didn't play out as expected. The sad truth is that, you kind of have to make a mess first, before doing it clean. After all, you can't "clean" unless it's dirty.
Very clear and easy to understand videos, easiest I have found to follow and comprehend. Would you continue with the series by adding commands to the buttons and then splitting the parts into separate modules or .py files. I am trying to create a sqlite database app with a lot of tables and table editing windows but am struggling as it gets too complex and I have been unable to split the modules while maintaining functionality. It a model train/Item inventory database Thank you for your videos!
Yes. I was wondering if he would create a video with the OOP approach but with functioning buttons next time. Here it is mainly just creating and placing widgets
Why do you prefer class inheritence instead of composition, is there any reason that I don't know yet? I ask this question, because all component based web applications construct their components via composition further I know how difficult to maintain inheritence based approach from ancient MFC applications. But all OO tkinter courses prefer class inheritence, maybe there is a good reason? Consider how difficult to switch from Tkinter to CustomTkinter if you prefer class inheritence.
People prefer inheritance because that's what they have been told in classes that focus too much on OO rather than general design principles. There's no real reason to use OO with tkinter other than slight convenience at the cost of overcomplicating your code structure. They're using implementation inheritance, which is a no-no in 99% of the cases where composition would accomplish the same while being much simpler.
to solve the local variable problem, you can pass them as the parameters
Hi, great video. Only thing I don't understand is why there was another class made for the last frame? Why not make another frame in the main class
Not sure if you care anymore haha but my guess was that rather than creating and packing each button and label you're able to do that once, and then create 2 (or more) instances of it. Like let's say instead of 2 label/button pairs he wanted 10.
If he didn't create the class, he would have to write all the ttk.Label and ttk.Button and the packing code out 10 different times. Whereas with the class, he adds the Label/Button and .pack() code only once, and then just creates 10 instances of it.
Love you, literal live-saver
are you beginner programmer like me?
@@natiadonay2104 kinda yeah
great implementation
Thanks my man I love it and I love you!! Xoxo
How do you reset/clear contents of the variables that are within a method within a class though?
can i know, what is the purpose to write this code using classes other than normal approch (using functions)....
Classes make it easier to organize and change later rather then 1000 lines of clumped code
Can u explain how to open a new window from inside a class frame?
is it possible to write procedural programming code alongside object-oriented programming (OOP) in the same Tkinter project
Is it possible to set window size relative to actual screen size? Another words is it possible to write responsive apps with tkinter?
Great explanations!
I did it differently and it worked:
from tkinter import *
class App(Tk): ....
class Menu(Frame): .....
And for widgets:
Button() not ttk.Button
Label() not ttk.Label()
Is it okay or can various problems/conflicts appear in the development of an application?
I have been following the video but I didn't see any colours, so I downloaded and copy-pasted your code and everything displays except the colours. What could my error be? macbook pro late 2012 running macos big sur
I figured that on macOS I have to use ttk.Canvas if I want to display a colour
Amazing !!
i replicated the code and adde image as a button but it wont work
Love it
Thanks for this video _/\_
the link to the source code does not work.
thank you
are you beginner programmer like me?
sir i have a question, i need to make buttons which can bring frames in the parent frame. means when we press the button we show frame, and further place buttons in that frame, to bring more frame. i cannot achieve this approach. please upload this kind of tutorial
My man, I am stuck on something, Since "Menu" class is somehow unrelated to the "Main" Class but instead share a common super class "App", i want a button on the "Menu" Class to call a method on the "Main" class, how do I do That since Main is not a child of Menu?
Thanks for this amazing video!!
sir, GoogMorning, i'm very beginner to Python
you are explaining passing tk.Tk as argument in the Class App(tk.Tk) and
you are passing self i.,e, tk.Tk, into menu = Menu(self) here self = tk.Tk ??,
but in Class Menu(ttk.Frame), the constructor of Menu is def__init__(self, parent) i'm confusing,
in class Menu(ttk.Frame) the argument should be tk.Tk how the ttk.Frame will come, in java not like this,
can you clarify??
while making this video, the owner of dog "michell" died
7:50