2010-02-22 9 views
10

Tôi có một chương trình nhỏ trong PyQt4 và tôi muốn biên dịch chương trình thành một Exe. Tôi đang sử dụng py2exe để làm điều đó. Tôi có thể thành công thiết lập biểu tượng trong thanh tiêu đề cửa sổ bằng cách sử dụng mã sau đây, nhưng khi tôi biên dịch nó vào exe biểu tượng bị mất và tôi thấy các ứng dụng cửa sổ mặc định. đây là chương trình của tôi:Biểu tượng cửa sổ của Exe trong PyQt4

import sys 
from PyQt4 import QtGui 


class Icon(QtGui.QWidget): 
    def __init__(self, parent=None): 
     QtGui.QWidget.__init__(self, parent) 

     self.setGeometry(300, 300, 250, 150) 
     self.setWindowTitle('Icon') 
     self.setWindowIcon(QtGui.QIcon('c:/python26_/repy26/icons/iqor1.ico')) 


app = QtGui.QApplication(sys.argv) 
icon = Icon() 
icon.show() 
sys.exit(app.exec_()) 

**** Đây là setup.py cho py2exe ****

from distutils.core import setup 
import py2exe 

setup(windows=[{"script":"iconqt.py" 
       ,"icon_resources": [(1, "Iqor1.ico")]}] 
        ,options={"py2exe":{"includes":["sip", "PyQt4.QtCore"]}}) 

Trả lời

4

Tôi tin rằng bạn cần phải tham khảo các tập tin .ico trực tiếp từ EXE hoặc DLL mà bạn đang tạo với py2exe. Bạn dường như có kịch bản setup.py đúng, vì vậy hãy xem: http://www.py2exe.org/index.cgi/CustomIcons. Có một ví dụ cho wxWidgets, nhưng bạn có thể cố gắng thích nghi nó với Qt.

0

tôi sẽ đề nghị bạn để tạo ra một tập tin gọi là YourApp.rc, gắn lên các dòng sau:

IDI_ICON1 ICON DISCARDABLE "res/icons/app_icon.ico" 

Sau đó, trong tập tin .PRO của bạn, thêm lên những dòng sau:

win32{ 
RC_FILE = YourApp.rc 
} 

Nó sẽ khắc phục vấn đề của bạn!

+0

Tệp .PRO gì? Py2exe sử dụng setup.py. Câu trả lời này không có ý nghĩa. – James

+1

Vâng, xấu của tôi, tôi nghĩ rằng họ đã sử dụng quá trình tương tự như trong C++. Phần cuối của bình luận của bạn là không cần thiết. –

15

Sự cố là py2exe không bao gồm plugin trình đọc biểu tượng qt. Bạn cần phải nói nó để bao gồm nó với tham số data_files. Nội dung nào đó dọc theo các dòng sau:

setup(windows=[{"script":script_path, 
       "icon_resources":[(1, icon_path)]}], 
     data_files = [ 
      ('imageformats', [ 
       r'C:\Python26\Lib\site-packages\PyQt4\plugins\imageformats\qico4.dll' 
       ])], 
     options={"py2exe":{"packages":["gzip"], 
         "includes":["sip"]}}) 
+3

Chỉ cần hoàn hảo. Giải quyết chính xác vấn đề của tôi. Ps này lừa làm việc cho PySide quá. – Pinch

+1

cảm ơn! Nó cũng có tác dụng với tôi. – Meloun

+0

Tôi có một thiết lập tương tự, nhưng nó không hoạt động. Bạn có phiền khi xem nó không? http://stackoverflow.com/questions/17687347/win7-taskbar-icon-incorrect-for-pyside-py2exe-app – ArtOfWarfare

0

Tôi gặp vấn đề tương tự. Vì lý do nào đó, nó hoạt động tốt với một tập tin image.png & không phải là tệp image.ico. Không có lý do tại sao. Nhưng tôi đã chuyển đổi ico thành png & nó đã hoạt động