Qt Contributors Summit 2019 Program/Qt for Python and beyond

From Qt Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Following the notes from the Qt for Python session

- Continuation of the plenary session
- Right now status is same as PyQt
- What can we do to make a difference and improve on QtfP
- Tooling
   - Around pyside and…
   - Make it easier to mix C++ and python
       - Currently a lot of black magic
       - Pyside2config etc…
- Using it from the outside it is too complicated
    - Xml descriptions unclear, even with documentation
    - Proposal: Create generators for type system
    - Going through widgets as an example
    - The code is the documentation right now
- What about editing the type-system, not only one-time generation?
    - Does it need to be a graphical solution?
    - Whatever it is, auto-completion is important/beneficial
    - Whatever happens, keeping C++ API and xml description in sync is troublesome and should be addressed
- Embed the export information into the cpp?
- Doesn't need to be xml, could be changed
- Adding annotations for all Qt classes is not what we want
    - Developers will not learn/use it, there needs to be automatism
- Proposal: Be not as verbose in the xml description
    - Use sane defaults and only annotate corrections
- What is the amount of changes needed
    - Ownership is a good example, needs to be read from the documentation and manually adapted in the xml
- We want to encourage users to start using Python extensions
- What about using the metaobject system for auto-exposing to Python?
    - Currently not the case
    - But what about adding items which can be introspected?
    - Basically re-use Q_PROPERTY, Q_INVOKABLE,…
- Tooling around python development?
    - Comparison to Rust: Cargo
    - Creates projects, manages compilation, deployment etc
    - Cookiecutter in python, which creates base templates
    - Idea: Add tools to create project templates
        - Potentially extract what Qt Creator does in the template
    - Have it create a folder structure including src/tests/….
    - What about creating a template for cookiecutter instead of writing a new tool?
    -  Cookiecutter maintainer is in Berlin as well ,potentially meet
- Modules
    - Would there be any feedback on modules to add?
    - What about new pure python modules within the Qt context?
    - Example: Interaction with other python types, getting "python data" into QAbstractItemModel
    - Example: dataframes
    - Generally adaptors for existing python solutions
        - Does it have marketing reception impact? Qt moving "away" from C++?
    - Could be a separate solution, like Qt Lottie. Not part of the core product, but existent
    - Does this need to be associated with PySide?
        - If new modules are created which uses Qt/QtfP, why does it have to be in Pyside itself
        - And not standalone
    - Talking about the other way around
        - Qt Charts has its limitations
        - Use Qt / C++ for the heavy work and  Figure/Canvas from matplot to visualize
- Improvements to python itself
    - C++ components in Qt exposed to Python?
         - Generally a C++ module exposing a "pythonish" API using Qt to do the work
         - Integrate into PySide then
    - Why not improve Cpython?
         - It's open source after all
    - Getting sidetracked
         - Project based approach, if a project needs improvement let the project identify where to fix it
- Currently any python export requires manual shiboken compilation
    - We should improve here and make it easier
    - Idea: Some maintenance tool component which gets you latest shiboken and shiboken generator, etc…
        - Qt ships clang already, why not add the rest to the standard package?
    - Running out of time
- Deploying Python applications is a mess
- Python transpilers
    - Use-case: What about my python application which I need on a phone
    - Proposal: Wait for what others do and just use that
    - Beeware: Python VM in JS