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 ?