Starting a thread
This recipe will show us how to start a thread. It will also demonstrate why threads are necessary to keep our GUI responsive during long-running tasks.
Getting ready
Let's first see what happens when we call a function or a method of our GUI that has some sleep associated with it without using threads.
Note
We are using sleep here to simulate a real-world application that might have to wait for a web server or database to respond, a large file transfer, or complex computations to complete its task.sleep is a very realistic placeholder and shows the principle involved.
Adding a loop into our button callback method with some sleep time results in our GUI becoming unresponsive and, when we try to close the GUI, things get even worse:GUI_multiple_threads_sleep_freeze.py
# Button callback
def click_me(self):
self.action.configure(text='Hello ' + self.name.get() + ' '
+ self.number_chosen.get())
# Non-threaded code with sleep...