Gtk-WARNING: 无法在模块路径中找到主题引擎:"wimp

2 投票
1 回答
1348 浏览
提问于 2025-04-18 18:04

我开发了一个在Windows上运行的Gtk应用程序。为了生成一个可执行文件,我使用了pyInstaller。只要不是因为主题没有加载,一切都还不错。

我有我的配置文件:

# -*- mode: python -*-

directory = 'C:\\my_project'

a = Analysis(['main.py'],
             pathex=[directory],
             hiddenimports=None,
             hookspath=None)


more_datas = []
more_binaries = []

more_datas.append(('gtkrc', os.path.join(directory, 'gtkrc'), 'DATA'))
more_binaries.append(('libwimp.dll', os.path.join(directory, 'libwimp.dll'), 'BINARY'))

pyz = PYZ(a.pure)

exe = EXE(pyz,
          a.scripts,
          a.binaries + more_binaries,
          a.zipfiles,
          a.datas + more_datas,
          name='main.exe',
          debug=False,
          strip=None,
          upx=True,
          console=True)

在数据部分,我加入了gtkrc文件,而在二进制文件部分,我加入了libwimp.dll。这两个文件都在我的应用程序目录里。

在我的项目Python代码中,我有:

def resource_path(relative):
    directory = getattr(sys, '_MEIPASS', os.getcwd())
    return os.path.join(directory, relative)


theme = resource_path("gtkrc")
gtk.rc_set_default_files([theme])
gtk.rc_reparse_all_for_settings(gtk.settings_get_default(), True)
gtk.rc_reset_styles(gtk.settings_get_for_screen(window.get_screen()))

当我运行这个应用程序时,会创建一个临时目录("_MEIXXXXXX"),并且这两个文件会被放到那里。

但是控制台显示了这个信息:

Gtk-WARNING: 无法在模块路径中找到主题引擎: "wimp"

而且主题没有加载。这个警告是在下面的代码被调用后出现的:

gtk.rc_reparse_all_for_settings(gtk.settings_get_default(), True)

我缺少了什么呢?

1 个回答

0

我找到了我出错的地方。

问题在于我把主题文件复制到了我应用程序的本地目录里。libwimp.dll这个文件必须在一个特定的文件夹里创建,才能在临时文件夹中正常工作。

这个小建议帮我解决了问题:

为PyGTK主题添加钩子

撰写回答