应用程序未在 macOS Big Sur 11.0.1 上弹出

Can*_*Qiu 12 python matplotlib pyqt5 macos-big-sur

升级您的操作系统总是有风险的。您很可能会遇到一些兼容性问题。我冒险将我的 macOS 从 Catalina 升级到最新的 Big Sur。之后,新操作系统中的显示看起来很漂亮,但是我所有的 PyQt5 应用程序都无法在这个新操作系统中启动。GUI 窗口没有像往常一样弹出,终端中也没有显示错误信息。我花了一整天的时间试图找出导致这个问题的原因。我找到了解决方案,但以一种奇怪的方式让我感到困惑。

事实证明,在我在主脚本中添加以下三行后,应用程序恢复正常。

import matplotlib
import matplotlib.pyplot as plt

matplotlib.use('TkAgg')
Run Code Online (Sandbox Code Playgroud)

在我看来,新操作系统与 Qt5Agg 后端存在一些兼容性问题。但奇怪的是,这个解决方案也适用于 Pyqt5 应用程序之一,我根本不使用 matplotlib。

我用的Python版本是3.8.4,我手上的PyQt5版本是5.15.1。

我希望有人可以向我解释使该解决方案起作用的幕后情况。我也希望这个临时解决方案可以帮助遇到同样问题的人。

Eri*_*ric 4

我可以确认,matplotlib.use('TkAgg')紧随其后matplotlib.use('Qt5Agg')也能让事情对我有用。我将其缩减为也可以工作:

# from matplotlib.backends import _tkagg
import _tkinter
import matplotlib.pyplot as plt
plt.figure()
Run Code Online (Sandbox Code Playgroud)

所以这是关于编译_tkinter模块的事情。也许输入挂钩?