Skip to content

Qt4 backend using unichr() in python3 #3117

Closed

Description

@jorgesca

I get a NameError exception (see backtrace below) when trying to use key
events in matplotlib (master branch rev:
e322d5f), python 3.4.1, and pyqt 4.10.
This has been posted to the matplotlib-users ml: http://thread.gmane.org/gmane.comp.python.matplotlib.general/34364

NameError                                 Traceback (most recent call last)
/home/jscandal/sw/matplotlib/matplotlib/lib/matplotlib/backends/backend_qt4.py
in
keyReleaseEvent(self=<matplotlib.backends.backend_qt4agg.FigureCanvasQTAgg
object>, event=<PyQt4.QtGui.QKeyEvent object>)
    308 
    309     def keyReleaseEvent(self, event):
--> 310         key = self._get_key(event)
        key = undefined
        self._get_key = <bound method FigureCanvasQTAgg._get_key of
<matplotlib.backends.backend_qt4agg.FigureCanvasQTAgg object at 0x7f0393412948>>
        event = <PyQt4.QtGui.QKeyEvent object at 0x7f0393507a68>
    311         if key is None:
    312             return

/home/jscandal/sw/matplotlib/matplotlib/lib/matplotlib/backends/backend_qt4.py
in _get_key(self=<matplotlib.backends.backend_qt4agg.FigureCanvasQTAgg
object>, event=<PyQt4.QtGui.QKeyEvent object>)
    363                 return None
    364 
--> 365             key = unichr(event_key)
        key = undefined
        global unichr = undefined
        global event_key = undefined
    366             # qt delivers capitalized letters.  fix capitalization
    367             # note that capslock is ignored

NameError: name 'unichr' is not defined

Activity

  1. jorgesca commented on Jun 5, 2014

    @jorgesca
    Author

    A trivial fix using six:

    diff --git a/lib/matplotlib/backends/backend_qt4.py b/lib/matplotlib/backends/backend_qt4.py
    index 70152aa..26486b4 100644
    --- a/lib/matplotlib/backends/backend_qt4.py
    +++ b/lib/matplotlib/backends/backend_qt4.py
    @@ -362,7 +362,7 @@ class FigureCanvasQT(QtGui.QWidget, FigureCanvasBase):
                 if event_key > MAX_UNICODE:
                     return None
    
    -            key = unichr(event_key)
    +            key = six.unichr(event_key)
                 # qt delivers capitalized letters.  fix capitalization
                 # note that capslock is ignored
                 if 'shift' in mods:
    
  2. tacaswell commented on Jun 5, 2014

    @tacaswell
    Member

    I actually have a patch with these fixes (there is at least one other instance of unichr iirc) on my computer and just never got to pushing them up...

  3. added this to the v1.4.0 milestone on Jun 5, 2014
  4. efiring commented on Jun 5, 2014

    @efiring
    Member

    Good--I thought this sounded very familiar.

  5. tacaswell commented on Jun 7, 2014

    @tacaswell
    Member

    Now I remember why I didn't push it up, it's mixed up with the qt5 work.

  6. added a commit that references this issue on Jun 10, 2014
    788f130
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Release criticalFor bugs that make the library unusable (segfaults, incorrect plots, etc) and major regressions.status: confirmed bug

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions