Найти - Пользователи
Полная версия: PyQt Иконка в окне
Начало » GUI » PyQt Иконка в окне
1
Patrik
Иконка в заголовке программы не отображается (точнее она дефолтная в 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)])

Код test.py
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_())
truporez
Я назначаю иконку не qwidget, а qapplication. У меня работает так.
app = QApplication(sys.argv)
ico = QIcon(':/icon.png')
app.setWindowIcon(ico)
reclosedev
Cx-freeze запихивает иконку в ресурсы .exe, Qt с ними не работает, если не заставить.
Проще добавить иконку в Qt ресурсы (qrc) и сделать как у truporez.
Patrik
reclosedev, а как заставить Qt работать с ресурсом в .exe или где об этом почитать???
А пока сделаю, как посоветовал truporez
Patrik
reclosedev я делал так, создал файл ресурса .qrc далее его перевёл с помощью pyrcc4 в .py

Пробовал делать, как было в моём примере (первый пост), а так же как предложил truporez, в итоге если запускать TestIcon.py иконка в заголовке окна присутствует, при компиляции в .exe она пропадает.
tiglon
Может стоит в buildOptions добавить ‘include_files’: ‘icon.png’. И код как предложил truporez.
Patrik
Может стоит в buildOptions добавить ‘include_files’: ‘icon.png’. И код как предложил truporez.
Это прописано. Речь идет не о иконке файла .exe, а об иконке которая находится в заголовке окна программы.
tiglon
Я о ней и говорю, у меня в программе указан путь к иконке
app.setWindowIcon(QtGui.QIcon("qt_plugins/imageformats/1.png"))
А в setup.py добавлен ‘include_files’: ‘qt_plugins’ , и всё собирается нормально.
Patrik
Если рядом с .exe создать папку и поместить туда иконку, далее прописать в скрипт
self.setWindowIcon(QtGui.QIcon(QtGui.QPixmap(“icon/USR616x16.ico”)))
И скомпилировать в .exe то, иконка отображается.
Оказывается не поддерживается формат .ico по этому ранее у меня не отображалась иконка, сейчас переделал иконку в .png и работает.

А как заставить отображать ее работать из файла ресурса?
reclosedev
.ico требуют добавления плагина
http://stackoverflow.com/questions/2312210/window-icon-of-exe-in-pyqt4

Patrik
Пробовал делать, как было в моём примере (первый пост), а так же как предложил truporez, в итоге если запускать TestIcon.py иконка в заголовке окна присутствует, при компиляции в .exe она пропадает.
Пропадает из .exe (в проводнике) или откуда? Если проблема не в плагине, может .py файл ресурса не импортируется или путь неправильный.

Patrik
Qt работать с ресурсом в .exe или где об этом почитать???
Погуглите, было что-то на SO, я не заморачивался.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB