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...