Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » Как сделать разный размер иконок для QMenuBar и QToolBar? [RSS Feed]

#1 Июль 29, 2021 10:52:20

Vittorio
Зарегистрирован: 2021-07-28
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Как сделать разный размер иконок для QMenuBar и QToolBar?

Хочу сделать, чтобы в QMenuBar иконки QAction были 16х16, а в QToolBar - 24х24. Сделал *.ICO файл с несколькими слоями соответствующих размеров. В Qt Designer всё отображается как надо, но после компиляции в *.py получается, что и меню, и тулбар используют только первый слой ICO-файла.

Прошу помощи с правильным решением данной задачки. Нагуглил одну ссылку 2005 года, в которой говорилось, что на тот момент решения не было, может быть сейчас что-то изменилось?

Прикреплённый файлы:
attachment different_ico_sizes.jpg (43,5 KБ)

Офлайн

#2 Июль 29, 2021 13:03:57

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Как сделать разный размер иконок для QMenuBar и QToolBar?

Vittorio
но после компиляции в *.py получается, что и меню, и тулбар используют только первый слой ICO-файла.
посмотрите в .py чего там прописано по поводу иконок.
Вплоть до того что пропишите QMenuBar или QToolBar, (где там у вас не хватает) setWindowIcon принудительно.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Июль 29, 2021 13:08:17)

Офлайн

#3 Июль 29, 2021 15:56:44

Vittorio
Зарегистрирован: 2021-07-28
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Как сделать разный размер иконок для QMenuBar и QToolBar?

Нашёл, как исправить, единственное не знаю, насколько это грамотно.
Когда в Qt Designer создавал в “Редакторе действий” действие и привязывал значок посредством “Choose File…”, в компилированном *.py это выглядело как

 icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap("UIs\\../icons/copy.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off)

Если сей код вручную поменять на
 icon = QtGui.QIcon("UIs\\../icons/copy.ico")
то всё работает, как задумывалось.

Отредактировано Vittorio (Июль 29, 2021 15:57:05)

Офлайн

#4 Июль 29, 2021 17:41:43

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2679
Репутация: +  182  -
Профиль   Отправить e-mail  

Как сделать разный размер иконок для QMenuBar и QToolBar?

> Сделал *.ICO файл с несколькими слоями

Неужели этим старьём ещё кто то пользуется?

> Хочу сделать, чтобы в QMenuBar иконки QAction были 16х16, а в QToolBar - 24х24

У QMenuBar и QToolBar должны быть определены методы setIconSize вот ими и выставляй размер.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Отредактировано Rodegast (Июль 29, 2021 17:42:50)

Офлайн

#5 Июль 30, 2021 08:44:09

Vittorio
Зарегистрирован: 2021-07-28
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Как сделать разный размер иконок для QMenuBar и QToolBar?

Rodegast
У QMenuBar и QToolBar должны быть определены методы setIconSize вот ими и выставляй размер.
У QMenuBar из коробки нет метода setIconSize (PyQt 5.15.4). Его надо самостоятельно писать?

Офлайн

#6 Июль 30, 2021 16:11:35

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2679
Репутация: +  182  -
Профиль   Отправить e-mail  

Как сделать разный размер иконок для QMenuBar и QToolBar?

https://coderoad.ru/45011006/%D0%9A%D0%B0%D0%BA-%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B8%D1%82%D1%8C-IconSize-%D0%B4%D0%BB%D1%8F-%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D0%B9-%D0%B2-QMenu



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#7 Авг. 4, 2021 08:13:16

Vittorio
Зарегистрирован: 2021-07-28
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Как сделать разный размер иконок для QMenuBar и QToolBar?

В итоге всё решилось проще. Qt Designer совместно с pyuic5 генерят следующие участки кода для иконок действий:

 icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap("copy.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
Их надо заменить строкой:
 icon = QtGui.QIcon("copy.ico")

> Неужели этим старьём ещё кто то пользуется?
А есть какой-то более новый способ сделать разные версии иконок под их разный размер?

Офлайн

#8 Авг. 8, 2021 23:43:31

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2679
Репутация: +  182  -
Профиль   Отправить e-mail  

Как сделать разный размер иконок для QMenuBar и QToolBar?

> А есть какой-то более новый способ сделать разные версии иконок под их разный размер?

Qt умеет хорошо масштабировать изображения. Разные иконки под разный размер уже не делают.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

  • Начало
  • » GUI
  • » Как сделать разный размер иконок для QMenuBar и QToolBar?[RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version