[Development] QtCS2019 Notes: Qt for Python and beyond
Maurice.Kalinowski at qt.io
Thu Nov 21 15:06:06 CET 2019
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
○ 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
○ 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
More information about the Development