提高Pyinstaller和Tkinter图标之间兼容性的最佳策略



我对py2exe也有同样的问题。

我用Tkinter写了一个脚本。GUI的图标位图是位于我的计算机(C:Usersfooimage)的特定目录中的ico图像"foogo .ico"。当我用py2exe创建一个可执行文件,并在另一台PC上使用这个可执行文件时,软件不工作,因为找不到图像

我正在寻找解决这个问题的最佳策略。

from Tkinter import *
class MainWindow(Frame):
    def __init__(self):
        Frame.__init__(self)
        self.master.title("foo")
        self.master.minsize(350, 150)
        self.master.wm_iconbitmap(default='C:\Users\fooimage\foologo.ico')
if __name__=="__main__":
   d = MainWindow()
   d.mainloop()

我将这个脚本转换成Pyinstaller-2.01的可执行文件。

python pyinstaller.py --noconsole foo.py

一旦我有了可执行文件,如果我将fooologo .ico文件移动到另一个目录(或删除该文件),可执行文件就不起作用了。当我发送可执行文件

时也会发生问题

完整的规范文件:

# -*- mode: python -*-
a = Analysis(....)
pyz = PYZ(a.pure)
exe = EXE(pyz,
          a.scripts,
          a.binaries + [('your.ico', 'path_to_your.ico', 'DATA')], 
          a.zipfiles,
          a.datas, 
          name=....
       )

并在你的应用程序中使用它,像这样:

datafile = "your.ico" 
if not hasattr(sys, "frozen"):   # not packed 
    datafile = os.path.join(os.path.dirname(__file__), datafile) 
else:  
    datafile = os.path.join(sys.prefix, datafile)
root = tk.Tk()
root.iconbitmap(default=datafile)       

相关内容

  • 没有找到相关文章

最新更新