Book Image

Tkinter GUI Programming by Example

Book Image

Tkinter GUI Programming by Example

Overview of this book

Tkinter is a modular, cross-platform application development toolkit for Python. When developing GUI-rich applications, the most important choices are which programming language(s) and which GUI framework to use. Python and Tkinter prove to be a great combination. This book will get you familiar with Tkinter by having you create fun and interactive projects. These projects have varying degrees of complexity. We'll start with a simple project, where you'll learn the fundamentals of GUI programming and the basics of working with a Tkinter application. After getting the basics right, we'll move on to creating a project of slightly increased complexity, such as a highly customizable Python editor. In the next project, we'll crank up the complexity level to create an instant messaging app. Toward the end, we'll discuss various ways of packaging our applications so that they can be shared and installed on other machines without the user having to learn how to install and run Python programs.
Table of Contents (18 chapters)
Title Page
Copyright and Credits
Packt Upsell
Contributors
Preface
Index

Allowing users to upload avatars


To create the ability for a user to upload their choice of avatar, we will need a new place for them to do so. Let's create another Toplevel window, which will contain the necessary widgets and functionality.

The AvatarWindow class

Make a new file alongside your friendslist.py file named avatarwindow.py:

import base64
import os
import tkinter as tk
import tkinter.ttk as ttk
from tkinter import filedialog

avatar_file_path = os.path.abspath(os.path.join(os.path.dirname(__file__), "images/avatar.png"))

Our user's avatar will sit in a predefined file. This will be named avatar.png and will sit in the images folder. We create a variable named avatar_file_path to hold the absolute path to this file.

In order to store our image data in our database, we will be base64 encoding the content of the file. To do this, we will need to import the base64 module:

class AvatarWindow(tk.Toplevel):
    def __init__(self, master):
        super().__init__()

        self.master =...