Ported to PyQt5