Reputation: 1937
I am writing a PyQt app and I have to add a patch so that the font is readable on macos with dark mode enabled:
app = QApplication([])
# Fix for the font colours on macos when running dark mode
if sys.platform == 'darwin':
p = app.palette()
p.setColor(QPalette.Base, QColor(101, 101, 101))
p.setColor(QPalette.ButtonText, QColor(231, 231, 231))
app.setPalette(p)
main_window = MainWindow()
main_window.show()
app.exec_()
The issue with this patch is then it makes things unreadable on macos with light mode.
Is there a way I can detect dark mode on macos from python or using a standard shell command through subprocess?
EDIT: As of PyQt 5.12 the dark mode fix is no longer required.
Upvotes: 4
Views: 2130
Reputation: 121
In case you do not want to import pyobjc, you can use Darkdetect, a dedicated package that uses only dependencies provided with standard Python distributions.
Usage:
import darkdetect
>>> darkdetect.theme()
'Dark'
>>> darkdetect.isDark()
True
>>> darkdetect.isLight()
False
Darkdetect is also available on PyPI: pip install darkdetect
.
Disclaimer: I am the author of Darkdetect.
Upvotes: 10
Reputation: 4720
Building on this question, you could install pyobjc
and use NSUserDefaults
:
>>> from Foundation import NSUserDefaults
>>> NSUserDefaults.standardUserDefaults().stringForKey_('AppleInterfaceStyle')
'Dark'
Upvotes: 3