繁体   English   中英

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

[英]Apps not popping up on macOS Big Sur 11.0.1

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

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

import matplotlib
import matplotlib.pyplot as plt

matplotlib.use('TkAgg')

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

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

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

我可以确认matplotlib.use('TkAgg')后跟matplotlib.use('Qt5Agg')对我也matplotlib.use('Qt5Agg') 我把它缩小到这个也可以工作:

# from matplotlib.backends import _tkagg
import _tkinter
import matplotlib.pyplot as plt
plt.figure()

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

正如@Eric 所说,在 PySide2 导入之前,只需在代码的开头添加以下内容:

import os
os.environ["QT_MAC_WANTS_LAYER"] = "1"

然后导入 PyQt5/PySide2。

我按照这里的解决方案降级到 PyQt 5.13。 这解决了我的问题并允许我编译的应用程序在 Big Sur 上运行。

pip install PyQt5==5.13

对我来说,建议的解决方案导致 pycharm 中的断点崩溃……唯一有帮助的事情:https ://forums.macrumors.com/threads/pyqt5-and-big-sur.2260773/ 都像魔术一样工作.. . 希望QT尽快修复

我使用的是macOS Big Sur 版本 11.2.2

按照 Eric 的建议,在启动应用程序之前,在终端中输入以下行:

export QT_MAC_WANTS_LAYER=1

这为我解决了问题!

将此添加到我的python程序中对我有用

import os
os.environ["QT_MAC_WANTS_LAYER"] = "1"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM