Gtk-WARNING:无法在module_path中找到主题引擎:" wimp"

时间:2014-08-21 13:53:46

标签: python gtk pygtk

我开发了一个适用于Windows的Gtk应用程序。 我使用pyInstaller来构建一个exe文件。 如果没有加载的主题,一切都会好的。

所以,我有我的spec文件:

# -*- 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)

在DATA部分中,我包含了gtkrc文件。在BINARIES部分中,我包含了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:无法在module_path中找到主题引擎:" wimp"

主题没有加载。 在调用此代码后显示此警告:

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

我失踪了什么?

1 个答案:

答案 0 :(得分:0)

我发现了我的错误。

问题是我将主题复制到我的应用程序的本地目录中。必须在特定目录中创建libwimp.dll文件才能在临时文件夹中工作。

这个提示帮我解决了:

Add hooks for PyGTK themes