用于在OS X El Capitan中检测暗模式的Python代码,用于更改状态栏菜单图标

时间:2016-05-09 06:19:07

标签: python objective-c macos osx-elcapitan pyobjc

我有客观的C代码来检测暗模式以更改状态栏:

[[NSDistributedNotificationCenter defaultCenter] addObserver:self selector:@selector(darkModeChanged:) name:@"AppleInterfaceThemeChangedNotification" object:nil];

同样,我们如何才能在python中做同样的事情?

3 个答案:

答案 0 :(得分:1)

我不知道你是否可以直接在python中做到这一点。但至少你可以调用终端命令defaults read -g AppleInterfaceStyle

目前它的行为是这样的:如果它的退出代码是0,它会报告"黑暗模式"。如果是1(错误),则可以采用浅色模式。在我看来,这并不是很干净,但它可以正常使用并Java program成功使用。

如何从python中生成一个新进程是一个不同的问题,已经是answered

答案 1 :(得分:1)

在想要检测模式的任何地方(暗模式或亮模式)中尝试以下这些行。

center = NSDistributedNotificationCenter.defaultCenter()
center.addObserver_selector_name_object_(self,"enableDarkMode",'AppleInterfaceThemeChangedNotification',None)

答案 2 :(得分:0)

在python os模块中,可以方便地检测模式。

基本上,我们使用python来访问并运行终端命令以在默认设置中找到AppleInterfaceStyle属性。

import os

has_interface = os.popen("defaults find AppleInterfaceStyle").read()
if not has_interface:
    print("Use a light Style")
else:
    interface_system = os.popen("defaults read -g AppleInterfaceStyle").read()
    print("Interface Style:" + interface_system) # interface_system = 'Dark\n'