我开发了一个适用于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)
我失踪了什么?
答案 0 :(得分:0)
我发现了我的错误。
问题是我将主题复制到我的应用程序的本地目录中。必须在特定目录中创建libwimp.dll文件才能在临时文件夹中工作。
这个提示帮我解决了: