如何在 PyQt 5.12.2 上启用 macOS 暗模式?

Posted

技术标签:

【中文标题】如何在 PyQt 5.12.2 上启用 macOS 暗模式?【英文标题】:How to enable macOS dark mode on PyQt 5.12.2? 【发布时间】:2019-06-07 11:24:38 【问题描述】:

例如,this page 声称最新版本的 PyQt5 应该为我提供 macOS Mojave 的自动暗模式,而无需更改任何内容...除了它没有。

考虑这个简单的例子(可以复制粘贴到终端):

exec("""\nfrom PyQt5 import QtCore, QtWidgets\n\nclass Ui_MainWindow(object):\n    def setupUi(self, MainWindow):\n        MainWindow.setObjectName("MainWindow")\n        MainWindow.resize(674, 371)\n        self.centralwidget = QtWidgets.QWidget(MainWindow)\n        self.centralwidget.setObjectName("centralwidget")\n        self.gridLayoutWidget = QtWidgets.QWidget(self.centralwidget)\n        self.gridLayoutWidget.setGeometry(QtCore.QRect(50, 10, 601, 281))\n        self.gridLayoutWidget.setObjectName("gridLayoutWidget")\n        self.mpl_layoutBox = QtWidgets.QGridLayout(self.gridLayoutWidget)\n        self.mpl_layoutBox.setContentsMargins(0, 0, 0, 0)\n        self.mpl_layoutBox.setObjectName("mpl_layoutBox")\n        self.pushButton = QtWidgets.QPushButton(self.centralwidget)\n        self.pushButton.setGeometry(QtCore.QRect(280, 300, 113, 32))\n        self.pushButton.setObjectName("pushButton")\n        MainWindow.setCentralWidget(self.centralwidget)\n\n        self.retranslateUi(MainWindow)\n        QtCore.QMetaObject.connectSlotsByName(MainWindow)\n\n    def retranslateUi(self, MainWindow):\n        _translate = QtCore.QCoreApplication.translate\n        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))\n        self.pushButton.setText(_translate("MainWindow", "PushButton"))\n\nif __name__ == "__main__":\n    import sys\n\n    app = QtWidgets.QApplication(sys.argv)\n    MainWindow = QtWidgets.QMainWindow()\n    ui = Ui_MainWindow()\n    ui.setupUi(MainWindow)\n    MainWindow.show()\n    sys.exit(app.exec_())\n""")

我必须做什么才能启用暗模式?

【问题讨论】:

只需在具有pip install pyqt==5.12.2 的系统上运行此脚本即可在明暗模式下工作,即使在系统首选项级别切换它,也无需将其编译为 .app。 奇怪。不适合我!将它放在 venv 中会有所不同吗?编辑:不。 无法在 virtualenv 中工作。这似乎是这里的区别。 不适用于我的系统范围的解释器。添加了单行来测试它。 哪个系统范围的解释器?您是否验证了系统范围的解释器具有相同版本的 pyqt5? 【参考方案1】:

好的,所以我不清楚必须先将其编译为 .app,然后应将 NSRequiresAquaSystemAppearance 添加到*** Info.plist,但这已解决。

【讨论】:

以上是关于如何在 PyQt 5.12.2 上启用 macOS 暗模式?的主要内容,如果未能解决你的问题,请参考以下文章

在 macOS 上安装 pyqt5-tools

为啥在 macOS 上使用 QThread 时 PyQt 应用程序崩溃或挂起?

在 macOS 上安装 PyQt4 时 C++ 标准库出现问题

在macos上基于python2.7安装PyQt5

在 macOS 和 Windows 上使用 PyInstaller 编译时,简单的 PyQt5 GUI 看起来像 GTK

PyQt5 QTableWidget 禁用后如何重新启用单元格? [复制]