Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将信号从matplotlib图形重定向到PyQt4 QMAIN窗口_Python_Matplotlib_Pyqt4 - Fatal编程技术网

Python 将信号从matplotlib图形重定向到PyQt4 QMAIN窗口

Python 将信号从matplotlib图形重定向到PyQt4 QMAIN窗口,python,matplotlib,pyqt4,Python,Matplotlib,Pyqt4,我有一个PyQt4 Gui,它生成了几个图形 一些图形有自己的鼠标点击事件,我使用mpl_conect与之交互 我的PyQt4主窗口有几个带有快捷方式的操作。我将使用Ctrl+S作为示例。当QMainWindow聚焦时,一切正常 我的问题是:当我专注于一个Matplobliblib图形而不是QMainWindow时,如何获得像Ctrl+S这样的信号来激发 答案很简单。我觉得很傻,因为我忽略了它 您需要将QAction的shortcutContext设置为应用程序快捷方式,而不是窗口快捷方式。另外

我有一个PyQt4 Gui,它生成了几个图形

一些图形有自己的鼠标点击事件,我使用mpl_conect与之交互

我的PyQt4主窗口有几个带有快捷方式的操作。我将使用Ctrl+S作为示例。当
QMainWindow
聚焦时,一切正常


我的问题是:当我专注于一个Matplobliblib图形而不是
QMainWindow
时,如何获得像Ctrl+S这样的信号来激发

答案很简单。我觉得很傻,因为我忽略了它

您需要将QAction的shortcutContext设置为应用程序快捷方式,而不是窗口快捷方式。另外,请禁用mpl按键事件。您可以使用以下代码:

      mpl_keypress_shortcuts = [key for key in matplotlib.rcParams.keys() if key.find('keymap') == 0]
      #for key in mpl_keypress_shortcuts:
          #print('%s = %s' % (key, matplotlib.rcParams[key]))
      # Disable mpl shortcuts
      for key in mpl_keypress_shortcuts:
          matplotlib.rcParams[key] = ''

你能举个简单的例子吗?80%这是mpl中的一个bug,小部件只是吃掉了所有的关键信号,而没有将它们反弹到下一层。你是如何生成额外的数字的?您是在嵌入自己还是在使用
pyplot
?如果您使用的是
pyplot
,那么在主循环冲突的情况下,可能会出现很多问题。@tcaswell我不认为这种行为是一个bug。如果主窗口信号没有聚焦,那么不让它们开火是有意义的。我只是想知道是否有一种方法可以明确地反弹信号。(也许我需要给他们一个父对象,这样就行了?)我正在使用pyplot.figure创建我的Fig。我想我理解错了。我以为你在主窗口有个身影。在嵌入时使用pyplot是个坏主意(tm)。如果您正在执行此操作,则图canvas.manager.window应提供对底层Qt窗口的引用。还看到我一直在断断续续地工作。我试图捕获按键事件并将其转换为QEvent.KeyPress,然后使用app.sendEvent(win,QEvent)发送它,但我似乎无法让它工作。使用fig.canvas.manager.window,我将如何获取底层qt对象并将按键信号从它重定向到我的主qt窗口?