First of all what is tkinter? There is some formal long definition lying on a wikipedia page somewhere but those aren't usually very... ✌️helpful✌️. All you have to know is that tkinter is a python module that can be used to build GUI applications in python and it comes with the python standard libraries so no installations are required.
Now the main concepts that you need to know to start building are
- Placing widgets
- Event binding
This combined with you python skills and you will be on your way to desktop applications wizardry in no time.
I like "Hello world" programs because they really help me get over that fear of just starting to learning a new tool. So here is a hello world program in tkinter
import tkinter as tk myApp = tk.Tk() my_label = tk.Label(myApp, text='Hello world') my_label.place() myApp.mainloop()
If we run this code you should get the following result
That's just my reaction for everytime I get something to work for the first time. Its a really great feeling.
The code used to build this is not self-contained, you can try and guess what it does just don't fret if it doesn't make sense to you yet. What's important is that you know that you need create a window object with the method
tk.Tk() and we can store in a variable like
myApp. Creating the application doesn't do anything we have to run it with the method
myApp.mainloop to actually see our application.
Widgets, widgets, widgets... Desktop applications is just a collection of widgets or components. Creating widgets and styling them is relatively simple. Its just the functionality of the widget that will vary. We create widgets with the following syntax
my_widget = tk.WidgetName(window/frame/canvas object, key=argument**)
Hopefully this will make more sense know
lbl_Greet = tk.Label(myApp, text='Hello')
A label is just one of many widgets. i.e.)
- Frames (frm)
- Canvas (can)
- Button (btn)
- Entry (edt)
- Spin edit (sed)
- Radio button (rbtn)
- Radio group (rgp)
- Combo box (cbx)
- RichEdit (red)
Creating all these widgets has the similar syntax where the first parameter takes in the container, i.e)
Window object, and every parameter thereafter is in the form of a keyword argument pair. Some useful keyword that help style your programs quickly are...
- foreground (font-color)
Tip: When naming widgets, use a convention that consistent throughout your program. For example, if I have a button that will calculate some value I would call it btn_calc. With the prefix being the respective parameters on the list of widgets.
Disclaimer❗ If you reached this part first of all, thank you. And second, before you learn tkinter I just want to say that I haven't used much of tkinter myself. I do believe it is a module worth learning knowing in case you want to learn other modules and frameworks BUT. Its in your best interest that you know that there are more effecient ways of designing GUIs. I recommend frameworks like PyQt5 and Kivy which are cross-platform.
In my opinion, tkinter should just be a one stop shop on your coding journey not the destination. If you have any questions, or need help on a small project drop a comment below and I'll be happy to help! 😉