Tkinter Tutorial - Widgets
Tags: python, tutorial
Published: 2020-05-29 18:45:02

First of all what is tkinter? There is some formal long definition lying on a wikipedia page somewhere but those aren't usually very... :v:helpful:v:. 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

- Widgets
- Placing widgets
- Event binding

This combined with you python skills and you will be on your way to desktop applications wizardry in no time.

#First things First
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

```python
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

![Hello world program](https://dev-to-uploads.s3.amazonaws.com/i/k1sm38fh2pti3plz9gqc.PNG)

![IT's ALIVE](https://media.giphy.com/media/KfI0epcIooAkGfC8F5/giphy.gif)

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, 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 

```Python
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) `Frame`, `Canvas` or `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...

- font
- foreground (font-color)
- background

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:exclamation: 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*. 

# Conclusion
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! :wink: