Уведомления

Группа в Telegram: @pythonsu

#1 Март 27, 2013 14:31:44

Patrik
От:
Зарегистрирован: 2011-04-21
Сообщения: 70
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt Иконка в окне

Иконка в заголовке программы не отображается (точнее она дефолтная в 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_())



Отредактировано Patrik (Март 27, 2013 14:32:31)

Офлайн

#2 Март 27, 2013 16:01:59

truporez
От:
Зарегистрирован: 2009-05-08
Сообщения: 266
Репутация: +  6  -
Профиль   Адрес электронной почты  

PyQt Иконка в окне

Я назначаю иконку не qwidget, а qapplication. У меня работает так.

app = QApplication(sys.argv)
ico = QIcon(':/icon.png')
app.setWindowIcon(ico)



Офлайн

#3 Март 27, 2013 17:33:06

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

PyQt Иконка в окне

Cx-freeze запихивает иконку в ресурсы .exe, Qt с ними не работает, если не заставить.
Проще добавить иконку в Qt ресурсы (qrc) и сделать как у truporez.

Офлайн

#4 Март 27, 2013 20:17:31

Patrik
От:
Зарегистрирован: 2011-04-21
Сообщения: 70
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt Иконка в окне

reclosedev, а как заставить Qt работать с ресурсом в .exe или где об этом почитать???
А пока сделаю, как посоветовал truporez



Офлайн

#5 Март 28, 2013 08:26:30

Patrik
От:
Зарегистрирован: 2011-04-21
Сообщения: 70
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt Иконка в окне

reclosedev я делал так, создал файл ресурса .qrc далее его перевёл с помощью pyrcc4 в .py

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



Офлайн

#6 Март 28, 2013 13:05:31

tiglon
Зарегистрирован: 2013-01-23
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt Иконка в окне

Может стоит в buildOptions добавить ‘include_files’: ‘icon.png’. И код как предложил truporez.

Офлайн

#7 Март 28, 2013 13:39:03

Patrik
От:
Зарегистрирован: 2011-04-21
Сообщения: 70
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt Иконка в окне

Может стоит в buildOptions добавить ‘include_files’: ‘icon.png’. И код как предложил truporez.
Это прописано. Речь идет не о иконке файла .exe, а об иконке которая находится в заголовке окна программы.



Офлайн

#8 Март 28, 2013 14:30:28

tiglon
Зарегистрирован: 2013-01-23
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt Иконка в окне

Я о ней и говорю, у меня в программе указан путь к иконке

app.setWindowIcon(QtGui.QIcon("qt_plugins/imageformats/1.png"))
А в setup.py добавлен ‘include_files’: ‘qt_plugins’ , и всё собирается нормально.

Офлайн

#9 Март 28, 2013 15:07:04

Patrik
От:
Зарегистрирован: 2011-04-21
Сообщения: 70
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt Иконка в окне

Если рядом с .exe создать папку и поместить туда иконку, далее прописать в скрипт
self.setWindowIcon(QtGui.QIcon(QtGui.QPixmap(“icon/USR616x16.ico”)))
И скомпилировать в .exe то, иконка отображается.
Оказывается не поддерживается формат .ico по этому ранее у меня не отображалась иконка, сейчас переделал иконку в .png и работает.

А как заставить отображать ее работать из файла ресурса?



Отредактировано Patrik (Март 28, 2013 15:10:57)

Офлайн

#10 Март 28, 2013 16:56:36

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

PyQt Иконка в окне

.ico требуют добавления плагина
http://stackoverflow.com/questions/2312210/window-icon-of-exe-in-pyqt4

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

Patrik
Qt работать с ресурсом в .exe или где об этом почитать???
Погуглите, было что-то на SO, я не заморачивался.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version