Qt for Python/Reporting Bugs

From Qt Wiki
Jump to navigation Jump to search


Bugs in Qt for Python can be reported at the bug tracker. The quality of the bug report can dramatically impact how likely it is that the bug will be fixed.

We follow the same criteria than any Qt related bug, check the Qt Reporting Bugs page for more information.

Step by step

Here is a nutshell description of how to report a bug :

  1. Visit bugreports.qt.io/browse/PYSIDE.
  2. If you don't have a Qt account, you should create one (https://account.qt.io/).
  3. Use the "Quick Search" field in the top right to try to find any similar bugs, some times there are related bugs that could be complementary to your issue.
    • Leave a comment with any additional info you have.
    • Click "Vote" — You will usually have a higher chance of having your bug fixed by voting on an already existing bug than creating a new one.
    • Add yourself as a watcher, if you want to track the progress of the bug via email.
  4. If you don't find a bug report which matches your issue, then click "Create New Issues", and fill out the fields.
    • Project: Qt for Python
    • Type: Bug or Suggestion
    • Component: Shiboken, Documentation or PySide
    • Description: Provide a detailed description of the issue (ideally a bullet list of steps to reproduce, indicating expected vs actual outcome)
    • Environment: Write your current environment configuration, OS, Python version, PySide6 version, etc.
    • Attachment: Please include a complete, minimal reproducible script as a downloadable file attachment

Guide lines

    • Please try to avoid images unless demonstrating a graphics issue; particularly paste code, logs and stack traces as text instead of screen shots (see Jira formatting ). For stack traces, choose "Create full back trace" from Qt Creator's context menu and paste that.
    • Please try to avoid videos unless demonstrating some graphics issue/behaviour; provide step by step textual instructions instead.
    • When attaching text files other than code, give them the suffix .txt. This way, they can be viewed in the browser.

Considerations

First, please check whether the bug manifests in the most recent release of Qt for Python. If not, the issue was already reported.

PySide2 standard LTS has expired. It will not receive any changes with risk of regressions any more. Please don't report bugs against it any more. The current community release 5.15.10 supports Python 3.10 and building with clang 15; the upcoming community release 5.15.11 adds support for Python 3.11.

2nd, it could be the case that your issue is not a Qt for Python bug, but a Qt one which should be reported under the QTBUG project. Please make sure the bug is related to the Python bindings before submitting.

  • Normally, Qt for Python bugs could expose some issues with Python directly.
  • Some clear cases of Qt Bugs:
    • Graphics (rendering issues) including Qt Quick/3D
    • Styling/Style Sheets, style elements and dark mode
    • Multimedia not properly playing some files
  • If you encounter a missing binding, you also will encounter a Python error.
  • On the other hand, when there is no clear error message, but some method does not work, this still could be a Qt for Python issue, but also a Qt bug.

If it is still not clear if your issue is from Qt or Qt for Python, please write a small Qt/C++ piece of code that can use the class/method you are having issues with, to see if the problem persist, if it does, it is a Qt bug.

Template for reproducer scripts

The following template code can be used for providing examples (attached as a file to the bug report, ideally named to reflect the bug number, eg. pyside1020.py):

#!/usr/bin/env python
import sys

from PySide6.QtCore import QLibraryInfo, qVersion
from PySide6.QtWidgets import QApplication,QWidget

class Window(QWidget):
    def __init__(self):
        super(Window, self).__init__()

if __name__ == '__main__':
    print('Python {}.{}.{} {}'.format(sys.version_info[0], sys.version_info[1], 
                                      sys.version_info[2], sys.platform))
    print(QLibraryInfo.build())
    app = QApplication(sys.argv)
    window = Window()
    window.setWindowTitle(qVersion())
    window.show()
    sys.exit(app.exec())

In case you want to point out a difference between 5.15 and 6, an import as follows can be used:

try:
    from PySide6.QtCore import QLibraryInfo, qVersion
    from PySide6.QtWidgets import QApplication,QWidget
except ImportError:
    from PySide2.QtCore import QLibraryInfo, qVersion
    from PySide2.QtWidgets import QApplication,QWidget