wxPython支持macOS Dark Mode和pyinstaller

3

在命令行中使用 python3 ./run.py 命令运行我的 wxPython 脚本时,它会使用深色模式(窗口标题栏为深色)。使用 pyinstaller 冻结此脚本并启动构建的应用程序包时,深色模式被忽略(标题栏为浅色)。

这是冻结该脚本的命令:

pyinstaller run.py --onefile --noconsole

样例源码:

import wx
class App(wx.Frame):
    def __init__(self):
        self.app = wx.App(False)
        wx.Frame.__init__(self, parent=None, title="Window")
        wx.StaticText(self, wx.ID_ANY, label="Hello World!", style=wx.ALIGN_CENTER)
        self.Show()

if __name__ == "__main__":
    myapp = App()
    myapp.app.MainLoop()

我的软件版本:
macOS 10.14.6。
Python: 3.7.3。
wxPython: 4.0.7
wxWidgets: 3.0.5
pyinstaller: 3.5


2
这也发生在PyQt5中。问题很可能与wxPython相关性不大,而更多地与pyinstaller有关。 - midrare
1个回答

1
你需要在PyInstaller的.spec文件中添加'NSRequiresAquaSystemAppearance': 'No'
app = BUNDLE(exe,
    ...
    name=...,
    icon=...,
    info_plist={
        ...
        'NSRequiresAquaSystemAppearance': 'No'
    },
    bundle_identifier=None)

因此,生成的PyInstaller创建的.app文件应该可以在深色模式下正常启动。

我刚刚确认了这一点,使用预发布版本wxPython==4.1.0a1.dev4616+ef1edacc测试了我的一个wxPython应用程序Pynsource - 更多信息请参见Phoenix issue


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接