2012-03-30 24 views
5

Không ai biết cách sửa đổi tệp .spec được tạo bằng Makespec.py của Pyinstaller sao cho nó bao gồm dữ liệu hình ảnh trong thư mục tạm dừng _MEIPASS2? Tôi muốn có thể thêm một biểu tượng vào exe của tôi. Tôi đã thực hiện những gì được viết here, nhưng tôi chỉ không biết làm thế nào để thêm dữ liệu của tôi trong .spec.Thêm hình ảnh vào tệp .spec trong Pyinstaller

tôi thêm dòng này vào cuối những .spec file:

a.datas += [('iconName.ico','DATA','C:\\Python26\\pyinstaller-1.5.1\\iconName.ico')] 

Trả lời

7

Đây là tệp thông số của tôi (Collector.spec) Tôi đã sử dụng cho một chương trình python đơn giản được gọi là "Collector.py".

# -*- mode: python -*- 
a = Analysis(['Collector.py'], 
      pathex=['C:\\Users\\vijay\\Python\\Collector'], 
      hiddenimports=[], 
      hookspath=None, 
      runtime_hooks=None) 
a.datas += [('logo.png','C:\\Users\\vijay\\System\\icon\\logo.png','DATA')] 
pyz = PYZ(a.pure) 
exe = EXE(pyz, 
      a.scripts, 
      a.binaries, 
      a.zipfiles, 
      a.datas, 
      name='Collector.exe', 
      debug=False, 
      strip=None, 
      upx=True, 
      console=False , icon='C:\\Users\\vijay\\System\\icon\\logo.ico') 

Dòng "a.datas += .... " ngay trên biến pyz giữ đường dẫn đến png sẽ được hiển thị trên cửa sổ khác nhau của ứng dụng GUI của tôi. Biến số "icon=...." được đặt bên trong biến exe, giữ đường dẫn đến hình ảnh ico sẽ được hiển thị trên Windows Desktop làm Biểu tượng Màn hình.

Bây giờ bạn có thể sử dụng những gì Max đã thực hiện here trong chương trình chính của bạn (Collector.py, đối với tôi).

Dưới đây là một đoạn kịch bản của tôi Collector.py, nơi tôi đã thực hiện sử dụng của Bộ luật Max 's:

path = self.resource_path("logo.png") 
icon = wx.Icon(path, wx.BITMAP_TYPE_PNG) 
self.SetIcon(icon) 

Bây giờ, khi tôi chạy pyinstaller Collector.spec, Tôi có cả một biểu tượng Desktop và một biểu tượng cho tôi Cửa sổ ứng dụng Collector.

Hy vọng điều này sẽ hữu ích!

2

Để thêm một biểu tượng để thực thi, bạn cần phải sử dụng như sau:

python Makespec.py --icon=<FILE.ICO> yourprogram.py 

Hoặc bạn có thể thêm những điều sau đây trực tiếp đến exe = EXE(...) trong file spec

icon=<FILE.ICO> 

chí quảng cáo này d file.ico vào tài nguyên của tập tin thực thi (chỉ dành cho Windows), và nó sẽ hiển thị dưới dạng biểu tượng ứng dụng. Các a.datas nối thêm mà bạn đang sử dụng sẽ thêm một biểu tượng cho các tài nguyên nội bộ có thể được truy cập bên trong ứng dụng thông qua sys._meipass. Bạn có thể sử dụng điều này để thêm một biểu tượng ở trên cùng của cửa sổ chính, ví dụ.

+0

Cảm ơn điều đó, nhưng tôi đã nói về biểu tượng cửa sổ, biểu tượng xuất hiện ở phía trên cùng bên trái của tệp thực thi. Xin lỗi tôi đã không đủ rõ ràng trong mô tả của tôi. Dù sao, tôi đã giải quyết nó bằng cách sử dụng câu trả lời từ câu hỏi này: [link] (http://stackoverflow.com/questions/9929479/embed-icon-in-python-script) – maupertius

0

Đường này phải được thêm vào giữa các dòng a = Analysis(...)pyz = PYZ(a.pure).