Question related to the thread Multithreading PyQt applications with QThreadPool

Heads up! You've already completed this tutorial.

bharathinmail5419 | 2020-07-19 10:31:58 UTC | #1

Can you explain more how

    # Add the callback to our kwargs
    self.kwargs['**progress_callback**'] = self.signals.progress

had binded to the below function

    def execute_this_fn(self, progress_callback):
        for n in range(0, 5):

martin | 2020-07-19 10:39:49 UTC | #2

Hey @bharathinmail5419 welcomet to the forum!

This is making use of Python keyword unpacking. This allows you to pass keyword parameters to functions using a dictionary of key=value pairs.

When we call the execute_this_fn we call it with the following ...


This unpacks the key=value pairs in the self.kwargs dictionary, as keywords for the function. So for example, if we had the following dictionary

my_dict = {
'something': 3,
'another': 6,

and then called a function as follows...


this would be the equivalent of ...

my_function(something=3, another=6)

So, going back to the original example. We have a dictionary called kwargs which holds keyword arguments. We add another entry to that dictionary called 'progress_callback' which holds the function we're going to call. That could be anything, but for example say we stored the print function --

kwargs = {}
kwargs['progress_callback'] = print   # Store the print function in this dictionary

If we then called our function with...


That would be the equivalent of calling


The value stored in the dictionary under progress_callback is passed as an argument with that keyword to the function.

Over 10,000 developers have bought Create GUI Applications with Python & Qt!
Create GUI Applications with Python & Qt5
Take a look

Downloadable ebook (PDF, ePub) & Complete Source code

Also available from Leanpub and Amazon Paperback

[[ discount.discount_pc ]]% OFF for the next [[ discount.duration ]] [[discount.description ]] with the code [[ discount.coupon_code ]]

Purchasing Power Parity

Developers in [[ country ]] get [[ discount.discount_pc ]]% OFF on all books & courses with code [[ discount.coupon_code ]]
Well done, you've finished this tutorial! Mark As Complete
[[ user.completed.length ]] completed [[ user.streak+1 ]] day streak

Question related to the thread Multithreading PyQt applications with QThreadPool was written by Martin Fitzpatrick .

Martin Fitzpatrick has been developing Python/Qt apps for 8 years. Building desktop applications to make data-analysis tools more user-friendly, Python was the obvious choice. Starting with Tk, later moving to wxWidgets and finally adopting PyQt.