[QScintilla] Problem with PyQt5.11 release and QScintilla

Nicholas H.Tollervey ntoll at ntoll.org
Sat Jun 23 16:58:46 BST 2018


Hi Folks,

First poster here...

I've written a Python code editor for beginner programmers called Mu -- 
it's based upon feedback from teachers and learners. You can learn more 
about it here: https://codewith.mu/

It's currently only 3.5k lines of Python and PyQt is a fundamental 
aspect of Mu. I override QScintilla for the editor widget and I've found 
it works really well for my use cases. Thanks to everyone on this list 
who has made such amazing work available for the likes of me to use.

However, I've just done a "fresh" setup in a clean Python 3 virtualenv 
and I get errors.

Pip reports I have 
QScintilla-2.10.5-5.11.1-cp35.cp36.cp37.cp38-abi3-manylinux1_x86_64.whl 
installed but PyQt is the latest 5.11 release from today.

When I run my code that has worked in all previous releases of PyQt I 
get this:

QObject::connect: No such signal 
EditorPane::marginClicked(int,int,KeyboardModifiers)
Traceback (most recent call last):
   File "./run.py", line 6, in <module>
     run()
   File "/home/ntoll/src/mu/mu/app.py", line 138, in run
     editor.restore_session(sys.argv[1:])
   File "/home/ntoll/src/mu/mu/logic.py", line 668, in restore_session
     self._view.add_tab(None, py, self.modes[self.mode].api(), NEWLINE)
   File "/home/ntoll/src/mu/mu/interface/main.py", line 263, in add_tab
     new_tab.connect_margin(self.breakpoint_toggle)
   File "/home/ntoll/src/mu/mu/interface/editor.py", line 170, in 
connect_margin
     self.marginClicked.connect(func)
TypeError: connect() failed between (int,int,Qt::KeyboardModifiers) and 
unislot()

It looks to me that marginClicked signal no longer exists (EditorPane is 
a child class of QsciScintilla). However, when I look at the resulting 
object it appears to be there. The handler I'm using looks like this:

def debug_toggle_breakpoint(self, margin, line, modifiers):
     """
     How to handle the toggling of a breakpoint.
     """
     .... etc ....

Which looks like the right signature given the signal.

Any idea what's going on..? Am I missing something here..?

I believe this may be a bug caused by Qt5.11, since the API docs don't 
suggest anything has changed, I can't find anything in the changes 
described in the release notes for this latest version and it's broken 
existing code that appears to work in a bog-standard way. (However, I 
hope it's a problem of *my* making and not a problem with the released 
libraries.)

Thanks in advance for any help offered!

N.


More information about the QScintilla mailing list