Форум сайта python.su
Иконка в заголовке программы не отображается (точнее она дефолтная в windows), когда код компилируется в exe.
Если запустить скриптом (TestIcon.py) иконка на месте.
Exe скомпилирован в cx-freeze.
Код setup.py
import sys from cx_Freeze import setup, Executable base = None icon_file = "icon\\USR6.ico" buildOptions = dict(icon = icon_file) if sys.platform == "win32": base = "Win32GUI" setup( name = "main", version = "0.1", description = "Sample cx_Freeze PyQt4 script", options = dict(build_exe = buildOptions), executables = [Executable("TestIcon.py", base = base)])
import sys import rc 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(QtGui.QPixmap(":/USR616x16.ico"))) if __name__ == "__main__": import sys app = QtGui.QApplication(sys.argv) icon = Icon() icon.show() sys.exit(app.exec_())
Отредактировано Patrik (Март 27, 2013 14:32:31)
Офлайн
Я назначаю иконку не qwidget, а qapplication. У меня работает так.
app = QApplication(sys.argv)
ico = QIcon(':/icon.png')
app.setWindowIcon(ico)
Офлайн
Cx-freeze запихивает иконку в ресурсы .exe, Qt с ними не работает, если не заставить.
Проще добавить иконку в Qt ресурсы (qrc) и сделать как у truporez.
Офлайн
reclosedev, а как заставить Qt работать с ресурсом в .exe или где об этом почитать???
А пока сделаю, как посоветовал truporez
Офлайн
reclosedev я делал так, создал файл ресурса .qrc далее его перевёл с помощью pyrcc4 в .py
Пробовал делать, как было в моём примере (первый пост), а так же как предложил truporez, в итоге если запускать TestIcon.py иконка в заголовке окна присутствует, при компиляции в .exe она пропадает.
Офлайн
Может стоит в buildOptions добавить ‘include_files’: ‘icon.png’. И код как предложил truporez.
Офлайн
Может стоит в buildOptions добавить ‘include_files’: ‘icon.png’. И код как предложил truporez.Это прописано. Речь идет не о иконке файла .exe, а об иконке которая находится в заголовке окна программы.
Офлайн
Я о ней и говорю, у меня в программе указан путь к иконке
app.setWindowIcon(QtGui.QIcon("qt_plugins/imageformats/1.png"))
Офлайн
Если рядом с .exe создать папку и поместить туда иконку, далее прописать в скрипт
self.setWindowIcon(QtGui.QIcon(QtGui.QPixmap(“icon/USR616x16.ico”)))
И скомпилировать в .exe то, иконка отображается.
Оказывается не поддерживается формат .ico по этому ранее у меня не отображалась иконка, сейчас переделал иконку в .png и работает.
А как заставить отображать ее работать из файла ресурса?
Отредактировано Patrik (Март 28, 2013 15:10:57)
Офлайн
.ico требуют добавления плагина
http://stackoverflow.com/questions/2312210/window-icon-of-exe-in-pyqt4
PatrikПропадает из .exe (в проводнике) или откуда? Если проблема не в плагине, может .py файл ресурса не импортируется или путь неправильный.
Пробовал делать, как было в моём примере (первый пост), а так же как предложил truporez, в итоге если запускать TestIcon.py иконка в заголовке окна присутствует, при компиляции в .exe она пропадает.
PatrikПогуглите, было что-то на SO, я не заморачивался.
Qt работать с ресурсом в .exe или где об этом почитать???
Офлайн