Системные значки темы и PyQt4

Вариант использования 1 Предположим, что вы разбили большое задание на 10 небольших заданий, каждое из которых представляет собой поток. Вы должны дождаться окончания 10 задач из этих потоков, прежде чем считать выполненную работу.

Таким образом, основной поток инициатора задания инициализирует CountDownLatch числом используемых потоков, он распределяет задачи по потокам и ожидает, пока защелка не поднимется до нуля с помощью метода await. Каждый поток исполнителя будет вызывать countDown в конце своей задачи. Наконец, основной поток будет пробужден после завершения всех потоков, поэтому он считает, что вся работа выполнена. В этом сценарии используется защелка doneSignal, описанная в javadoc CountDownLatch.

Вариант использования 2 Предположим, вы разбили большую работу на n * m задач, распределенных по n потокам. m соответствует строке матрицы, и у вас есть общее количество для каждой строки. В этом случае потоки должны быть синхронизированы после завершения каждой задачи, чтобы вычислить общее значение для строки. В этом случае CyclicBarrier, инициализированный числом потоков n, используется для ожидания конца вычисления каждой строки (фактически m раз).

Чтобы сравнить оба, предполагается, что CountDownLatch будет использоваться только 1 раз, а CyclicBarrier может использоваться столько раз, сколько алгоритму требуется точка синхронизации для набора потоков.

8
задан Cdsboy 15 June 2009 в 19:25
поделиться

3 ответа

К сожалению, похоже, что Qt не поддерживает получение значков для определенной темы. Есть способы сделать это как для KDE, так и для Gnome.

Способ KDE довольно элегантен, что имеет смысл, учитывая, что Qt - это инструментарий KDE. Вместо использования класса PyQt4.QtGui QIcon вы вместо этого используете класс KIcon PyKDE4.kdeui. Пример этого:

from PyKDE4.kdeui import *
icon = KIcon("*The Icon Name*")

см. Документацию PyKDE для этого класса, здесь .

Один из способов получить поддержку этого для gnome - использовать пакет python gtk. Это не так хорошо, как в kde, но тем не менее работает. Его можно использовать следующим образом:

from PyQt4 import QtGui
from gtk import icon_theme_get_default

iconTheme = icon_theme_get_default()
iconInfo = iconTheme.lookup_icon("*The Icon Name*", *Int of the icon size*, 0)
icon = QtGui.QIcon(iconInfo.get_filename())

См. Документацию для класса Icon Theme и класса Icon Info .

EDIT: спасибо за исправление CesarB

7
ответ дан 5 December 2019 в 21:21
поделиться

Недавно я потратил приличное количество исследований на это и пришел к выводу, что, к сожалению, Qt не предоставляет эту функциональность кроссплатформенным образом. В идеале класс QIcon должен иметь значения по умолчанию для открытия файла, сохранения, '+', '-', предпочтений и т. Д., Но, учитывая, что это не так, вам нужно будет выбрать соответствующий значок для среды рабочего стола.

0
ответ дан 5 December 2019 в 21:21
поделиться

Используйте класс PyKDE4 KIcon:

http://api.kde.org/pykde-4.2-api/kdeui/KIcon.html

0
ответ дан 5 December 2019 в 21:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: