Tkinter Object-Oriented Window

Summary: in this tutorial, you’ll learn how to apply object-oriented programming in Tkinter to make the code more organized.

Defining a Tkinter object-oriented window

The following simple program creates a root window and displays it on the screen:

import tkinter as tk root = tk.Tk() root.mainloop()
Code language: Python (python)

When the program is getting more complex, you can use an object-oriented programming approach to make the code more organized.

The following program achieves the same result as the program above, but use a class instead:

import tkinter as tk class App(tk.Tk):     def __init__(self):         super().__init__() if __name__ == "__main__":     app = App()     app.mainloop()
Code language: Python (python)

How it works.

  • First, define an App class that inherits from the tk.Tk class. Inside the __init__() method, call the __init__() method of the tk.Tk class.
  • Second, create a new instance of the App class and call the mainloop() method to display the root window.

Another example of an object-oriented window in Tkinter

The following class represents a window that consists of a label and a button. When you click the button, the program displays a message box:

import tkinter as tk from tkinter import ttk from tkinter.messagebox import showinfo class App(tk.Tk):     def __init__(self):         super().__init__()         # configure the root window         self.title('My Awesome App')         self.geometry('300x50')         # label         self.label = ttk.Label(self, text='Hello, Tkinter!')         self.label.pack()         # button         self.button = ttk.Button(self, text='Click Me')         self.button['command'] = self.button_clicked         self.button.pack()     def button_clicked(self):         showinfo(title='Information',                  message='Hello, Tkinter!') if __name__ == "__main__":     app = App()     app.mainloop()
Code language: Python (python)

How it works.

  • First, create a label and button in the __init__() method of App class.
  • Second, assign the button_clicked() method to the command option of the button. Inside the button_clicked() method, display a message box.
  • Third, move the application bootstrapping to the if __name__ = "main" block.

Summary

  • Use an object-oriented programming approach to make the code more organized.
  • Define a class that inherits from the tk.Tk class. Always, call the super().__init__() from the parent class in the child class.
Did you find this tutorial helpful ?