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() 之间的连接()失败”?的主要内容,如果未能解决你的问题,请参考以下文章
升级 PHP 版本后如何修复 Twig 文件中的 Html 标签问题
升级到 NextJS 9.0 后如何修复 React Hooks?