Connecting Signal Slots Across Threads

Traditional syntax: SIGNAL and SLOT QtCore.SIGNAL and QtCore.SLOT macros allow Python to interface with Qt signal and slot delivery mechanisms. This is the old way of using signals and slots. The example below uses the well known clicked signal from a QPushButton.The connect method has a non python-friendly syntax.

  • Messaging and Signaling in C. Published at 15:28 by Jens Weller. This is the 7th blog post in my series about writing applications with C using Qt and boost.This time it is about how to notify one part of our application that something has happened somewhere else.
  • This method is intended for use cases which involve event-driven programming and signals + slots across threads. Usage with Worker class. The main thing in this example to keep in mind when using a QThread is that it's not a thread. It's a wrapper around a thread object.
  • PyQt Tutorial
  • PyQt Useful Resources
  • Selected Reading

C++ Signal Slot


Unlike a console mode application, which is executed in a sequential manner, a GUI based application is event driven. Functions or methods are executed in response to user’s actions like clicking on a button, selecting an item from a collection or a mouse click etc., called events.

C++ Thread Signal

Widgets used to build the GUI interface act as the source of such events. Each PyQt widget, which is derived from QObject class, is designed to emit ‘signal’ in response to one or more events. The signal on its own does not perform any action. Instead, it is ‘connected’ to a ‘slot’. The slot can be any callable Python function.

Connecting

Connecting Threads Book Sale

Connecting Signal Slots Across Threads

In PyQt, connection between a signal and a slot can be achieved in different ways. Following are most commonly used techniques −

A more convenient way to call a slot_function, when a signal is emitted by a widget is as follows −

Suppose if a function is to be called when a button is clicked. Here, the clicked signal is to be connected to a callable function. It can be achieved in any of the following two techniques −

or

Connecting Threads Kits

Example

In the following example, two QPushButton objects (b1 and b2) are added in QDialog window. We want to call functions b1_clicked() and b2_clicked() on clicking b1 and b2 respectively.

Qt Connect Signal Slot

When b1 is clicked, the clicked() signal is connected to b1_clicked() function

When b2 is clicked, the clicked() signal is connected to b2_clicked() function

Across

Example

Pyside2 Signal Slot

The above code produces the following output −

Output

Comments are closed.