Linux 升级后如何修复“TypeError:navigationToolbar2QT.message[str] 和 _show_message() 之间的连接()失败”?

Posted

技术标签:

【中文标题】Linux 升级后如何修复“TypeError:navigationToolbar2QT.message[str] 和 _show_message() 之间的连接()失败”?【英文标题】:How to fix "TypeError: connect() failed between NavigationToolbar2QT.message[str] and _show_message()" after Linux upgrade? 【发布时间】:2017-02-08 20:31:00 【问题描述】:

将我的 Fedora 24 升级到 25 后,我在运行 python 脚本时遇到问题,该脚本在 Fedora 24 下运行得很好。无论我从 backend 文件中的 backend 的默认列表中选择什么,我都是无法产生情节。特别是,当我在 backend 的列表中选择 Qt5Agg 时,我收到了这个奇怪的错误消息,而且我只是通过搜索在互联网上找不到任何与此相关的东西真的很烦人。但我也知道升级中的某些问题可能会影响我的 python 和/或 Qt 包。我只需要知道为什么连接性与backend 的选择有关(如果有的话)以及为什么没有一个默认选项可以消除任何类型的错误消息?但是具体来说,为什么选择Qt5Agg作为matplotlibrc文件的默认backend会给出这样一个与函数connect()相关的错误信息呢?请让我知道发布脚本是否可以帮助您找到答案。这是该脚本开头的导入:

import numpy as np
from numpy import nan
import pandas as pd
import matplotlib as mpl
#import matplotlib
#matplotlib.use('Qt5Agg')
import matplotlib.pyplot as plt
import pylab as pl
from uncertainties import ufloat
from uncertainties.umath import *
from matplotlib.ticker import MaxNLocator
from collections import OrderedDict
import astropy.units as u
from astropy.cosmology import FlatLambdaCDM, z_at_value
from numpy import sqrt, mean, square, std, maximum, minimum
from sklearn.metrics import mean_squared_error
from scipy.stats import poisson, chi2
import math
import sys

还有错误信息:

QObject::connect: Cannot connect NavigationToolbar2QT::message(QString) to (null)::_show_message()
Traceback (most recent call last):
  File "myscript.py", line 496, in <module>                                                                                                                  
    f, ((ax1, ax6, ax11), (ax2, ax7, ax12), (ax3, ax8, ax13), (ax4, ax9, ax14), (ax5, ax10, ax15)) = plt.subplots(5, 3, sharex=True, sharey=False , figsize=(20,9))                             
  File "/usr/lib/python3.5/site-packages/matplotlib/pyplot.py", line 1177, in subplots                                                                                                          
    fig = figure(**fig_kw)                                                                                                                                                                      
  File "/usr/lib/python3.5/site-packages/matplotlib/pyplot.py", line 527, in figure                                                                                                             
    **kwargs)                                                                                                                                                                                   
  File "/usr/lib/python3.5/site-packages/matplotlib/backends/backend_qt5agg.py", line 43, in new_figure_manager                                                                                 
    return new_figure_manager_given_figure(num, thisFig)                                                                                                                                        
  File "/usr/lib/python3.5/site-packages/matplotlib/backends/backend_qt5agg.py", line 51, in new_figure_manager_given_figure                                                                    
    return FigureManagerQT(canvas, num)                                                                                                                                                         
  File "/usr/lib/python3.5/site-packages/matplotlib/backends/backend_qt5.py", line 465, in __init__                                                                                             
    self.toolbar.message.connect(self._show_message)                                                                                                                                            
TypeError: connect() failed between NavigationToolbar2QT.message[str] and _show_message()

【问题讨论】:

【参考方案1】:

这是后端的一个错误,在 PyQt 5.7 中通过更严格的检查暴露出来。

它是fixed in July - 我建议你打开一个 Fedora 错误,以便他们升级这些软件包或向后移植修复程序。

至于为什么会发生这种情况:这与网络中的连接无关,而是Qt的signals and slots的连接。

【讨论】:

以上是关于Linux 升级后如何修复“TypeError:navigationToolbar2QT.message[str] 和 _show_message() 之间的连接()失败”?的主要内容,如果未能解决你的问题,请参考以下文章

linux glibc漏洞修复 需要重启吗

升级 PHP 版本后如何修复 Twig 文件中的 Html 标签问题

升级到 NextJS 9.0 后如何修复 React Hooks?

linux升级openssh到7.9

如何永久修复升级到EF6后出现的“EdmFunctionAttribute is obsolete”警告?

将我的 ubuntu 服务器升级到 10.04 后如何修复我的虚拟主机设置