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

Adding a menu bar to our text editor


Since the menu bar will sit directly in our Tk widget we can put all of the menu logic in our texteditor.py file. Open this file up and add the following into the __init__ method underneath the creation of our Highlighter:

self.menu = tk.Menu(self, bg="lightgrey", fg="black")

This line creates us a Menu widget, which we will store a reference to under a menu attribute. We configure the colors to specific values for now, but this will change later.

After the creation of our main Menu widget we could define several more here in the __init__ method. However, this will quickly get very cluttered, not to mention it will require a lot of new code each time we want to add a new submenu into our menu bar.

Instead of this approach, we will write a method that automatically figures out what menu commands we want from just a list of strings representing the submenu labels:

sub_menu_items = ["file", "edit", "tools", "help"]
self.generate_sub_menus(sub_menu_items)
self...