diff options
Diffstat (limited to 'sources/pyside6/doc/tutorials/pretutorial/whyqtforpython.rst')
-rw-r--r-- | sources/pyside6/doc/tutorials/pretutorial/whyqtforpython.rst | 205 |
1 files changed, 0 insertions, 205 deletions
diff --git a/sources/pyside6/doc/tutorials/pretutorial/whyqtforpython.rst b/sources/pyside6/doc/tutorials/pretutorial/whyqtforpython.rst deleted file mode 100644 index ecb1873f4..000000000 --- a/sources/pyside6/doc/tutorials/pretutorial/whyqtforpython.rst +++ /dev/null @@ -1,205 +0,0 @@ -.. _whyqtforpython: - -Why Qt for Python? -================== - -.. raw:: html - - <div style="float: right; padding-left: 20px; max-width: 30%; - background-color: #e9eff5; padding-top: 5px;"> - <img src="../../_images/tiobe.png" - style="width: 90%;" - alt="TIOBE index for Python" /> - <p style="font-size: 80%;"> - Screenshot from - <a href="https://www.tiobe.com/tiobe-index/python/">tiobe.com/tiobe-index/python</a>, - on 2021.09.06 - </p> - </div> - -To answer this question we need to take a step back, and talk a bit about -languages. - -Python has been around for almost the same amount of years that Qt has, -and similarly it has been growing, and transforming to become the most used, -loved, and demanded language for many programming areas. - -Currently (2021), it's rare to be aware of Machine Learning and Artificial -Intelligence, without having heard of Python. Similarly, when we hear about -Data Science/Analysis/Engineering we know that it is most probably related -to Python. - -One can validate this statements by public surveys that have been showing -the evolution and preference of the Python language, like the StackOverflow -Surveys of the lasts years: - -+----------------------+-----------+-----------+-----------+ -| | 2019_ | 2020_ | 2021_ | -+======================+===========+===========+===========+ -| Most Loved Language | 2nd place | 3rd place | 6th place | -+----------------------+-----------+-----------+-----------+ -| Most Wanted Language | 1st place | 1st place | 1st place | -+----------------------+-----------+-----------+-----------+ - -and the `TIOBE index`_ (image on the right). - -It's natural to think that this sources might not be enough to judge the -language in general terms, but it certainly highlights a trend among -developers around the world. - -Lowering the Qt Barrier ------------------------ - -Veteran C++ developers will have no problem with setting up a Qt -application from scratch, or even manage to understand a different -code base written with Qt. In addition, many teams are multidisciplinary, -and other project/company developers might not be fluent in C++. - -Python has been luring people into programming, and for the same reason -it's not uncommon that even people with a different background are able -to write code, meaning that different teams are enabled to speak -"the same language". - -Creating Qt applications in Python requires only a few lines of code, -and not much configuration is required to execute it. As an /unfair/ -example, let's check the code of a simple hello world application: - - -.. panels:: - :container: container-lg - - :column: col-lg-6 p-2 - - .. tabbed:: C++ Header - - .. code-block:: cpp - - #ifndef MAINWINDOW_H - #define MAINWINDOW_H - - #include <QMainWindow> - #include <QPushButton> - - class MainWindow : public QMainWindow - { - Q_OBJECT - public: - MainWindow(QWidget *parent = nullptr); - private slots: - void handleButton(); - private: - QPushButton *m_button; - }; - - #endif // MAINWINDOW_H - - .. tabbed:: C++ Implementation - - .. code-block:: cpp - - #include "mainwindow.h" - - MainWindow::MainWindow(QWidget *parent) - : QMainWindow(parent) - { - m_button = new QPushButton("My Button", this); - connect(m_button, SIGNAL(clicked()), this, - SLOT(handleButton())); - } - - void MainWindow::handleButton() - { - m_button->setText("Ready"); - } - - .. tabbed:: C++ Main - - .. code-block:: cpp - - #include <QApplication> - #include "mainwindow.h" - - int main(int argc, char *argv[]) - { - QApplication app(argc, argv); - MainWindow mainWindow; - mainWindow.show(); - return app.exec(d); - } - - --- - :column: col-lg-6 p-2 - - .. tabbed:: Python - - .. code-block:: python - - import sys - from pyside6.QtWidgets import (QApplication, QMainWindow, - QPushButton) - - class MainWindow(QMainWindow): - def __init__(self, parent=None): - QMainWindow.__init__(self, parent) - self.button = QPushButton("My Button", self) - self.button.clicked.connect(self.handleButton) - - def handleButton(self): - self.button.setText("Ready") - - if __name__ == "__main__": - app = QApplication([]) - mainWindow = MainWindow() - mainWindow.show() - sys.exit(app.exec()) - -It's fair to say that most of the boilerplate code is provided by many -good IDEs, like QtCreator, but using external tools certainly requires -some practice to use them and get familiarized. - -Unity Makes Strength --------------------- - -In our mission to enable more developers to enter the Qt World, it's -important to note that this doesn't imply C++ developers are forgotten. - -Together with the bindings, Qt for Python provides our binding generator, -Shiboken (Check :ref:`whatisshiboken`), whose functionality has -extensibly been shown by talks on events such as those from our -:ref:`video-gallery` section. - -Generating bindings between two languages it nothing new, but it has -always been a non-trivial task, mainly for being as-compatible-as-possible -when using external modules/libraries in your project. - -Shiboken's main use case is to extend Qt/C++ project's -functionality, making them **scriptable**. - -What does it mean for an application to be scriptable? - -* enables a interpreted language to interact directly with the Qt/C++ - application, -* provide the option to modify and create components/elements of the - application from Python, -* possibility to create a plugins/add-ons system for the application. -* complement a process with external Python functionality. - -Check out this `Shiboken Webinar`_ for a hands-on example. - -Shiboken excels at Qt-dependent binding generation, meaning that -any Qt/C++ project can be easily exposed to Python. -In addition, Shiboken has proven its support for C++ projects (without Qt), -as shown on event talks and `blog posts`. - -Adding Python support to well known solutions/projects is a pattern we keep -seeing in the industry, on a broad range of devices. -This is why we are working every day to improve the Qt for Python offering. - -We believe both Qt and Python will benefit from this interaction. - -.. _2019: https://insights.stackoverflow.com/survey/2019 -.. _2020: https://insights.stackoverflow.com/survey/2020 -.. _2021: https://insights.stackoverflow.com/survey/2021 -.. _`TIOBE index`: https://www.tiobe.com/tiobe-index/ -.. _`blog posts`: https://www.qt.io/blog/tag/qt-for-python -.. _`Shiboken Webinar`: https://www.youtube.com/watch?v=wOMlDutOWXI |