Nano Hash - криптовалюты, майнинг, программирование

значки в PyQt не отображаются должным образом

Я разработал приложение с системным треем, имеющим меню в Python 2.6.4 и PyQt4.

В каждой клиентской системе python установлен локально и доступ к PyQt4 осуществляется из сети.

Я установил SystemTray и необходимые значки для пунктов меню, как показано ниже. В папке приложения есть папка icons, из которой я использую. поэтому я использовал os.getcwd()

Я сохранил эту папку приложения в сети, чтобы каждый мог получить к ней доступ.

self.mnuItem_1 = QtGui.QAction(QtGui.QIcon(r'%s\icons\icon1.ico' % (os.getcwd())), "Menu Item 1", self)
self.mnuItem_2 = QtGui.QAction(QtGui.QIcon(r'%s\icons\icon1.ico' % (os.getcwd())), "Menu Item 1", self)

self.trayIconMenu = QtGui.QMenu(self)
self.trayIconMenu.addAction(self.mnuItem_1)
self.trayIconMenu.addAction(self.mnuItem_2)
self.trayIcon = QtGui.QSystemTrayIcon(self)
self.trayIcon.setContextMenu(self.trayIconMenu)
TrayIcon = (r'%s\ShowTime_Addons\Media\showtimeIcon.ico' % (os.getcwd()))
self.trayIcon.setIcon(QtGui.QIcon(TrayIcon))
self.trayIcon.setToolTip('Showtime')
self.trayIcon.show()

В некоторых системах я мог видеть значки, но в некоторых системах значки не отображаются.

Для тестирования я поместил .png и использовал, и это сработало.

self.mnuItem_1 = QtGui.QAction(QtGui.QIcon(r'%s\icons\icon1.png' % (os.getcwd())), "Menu Item 1", self)
self.mnuItem_2 = QtGui.QAction(QtGui.QIcon(r'%s\icons\icon1.png' % (os.getcwd())), "Menu Item 1", self)

Так пришло понимание, что дело не в пути, а в чем-то другом.


Ответы:


1

Не уверен, что это решение, но постарайтесь не использовать os.getcwd() который дает вам текущий рабочий каталог, и он может отличаться от каталога вашего приложения. Чтобы определить каталог приложения, используйте:

base_dir = os.path.dirname(os.path.abspath(__file__))

Затем используйте base_dir вместо os.getcwd() или выполните:

os.chdir(base_dir)
25.01.2013

2

Я нашел решение для этого сценария

Один из подходов состоит в том, чтобы установить пути в файле qt.config и поместить его в папку с исполняемым файлом (в моем случае это C:\Python26).

Как я описал в своем вопросе, я получаю доступ к PyQt4 из сетевого расположения, скажем \\somesystem\Share\PyQt4

Мы найдем qt.config файл в \\somesystem\Share\PyQt4 Возьмите его и поместите ниже строк в qt.conf

[Paths]
Prefix = //somesystem/Share/PyQt4
Binaries = //somesystem/Share/PyQt4

Все работает нормально, даже sqldrivers подгрузится. Нет необходимости использовать app.addLibraryPath

28.01.2013
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..