Межплатформенный рабочий стол notifier в Python

Я ищу подобный Рычанию, Windows balloon-tip-like библиотека уведомлений в Python. Вообразите написание кода как:

>>> import desktopnotifier as dn
>>> dn.notify('Title', 'Long description goes here')

.. и это уведомило бы с соответствующими подсказками относительно Mac, Windows и Linux. Такая библиотека существует? В противном случае, как я пошел бы о записи той сам?

  • Mac идет со значением по умолчанию notifier? Рычание - что-то, что я должен установить отдельно?
  • В Windows я предполагаю, что это может потребовать pywin32?
  • На Linux, принимая GNOME, там API GNOME (использующий Python гнома), который делает это?
  • Я могу сделать уведомления 'липкими' (т.е. не постепенно исчезайте никогда) на всех платформах?

Обновление: Мое предпочтение не состоит в том, чтобы зависеть от гигантских платформ GUI как PyQT4 и wxPython для простой задачи, таких как это.

46
задан Reinstate Monica 14 February 2010 в 07:14
поделиться

6 ответов

Для хорошей кроссплатформенной поддержки я бы посмотрел на PyQt. Это добавит некоторую тяжесть в вашу библиотеку, но они проделали хорошую работу по устранению большинства недостатков.

0
ответ дан 26 November 2019 в 20:40
поделиться

У меня есть нечто подобное, но я использовал его в нескольких местах, поэтому я создал метод расширения.

public static void ActOnCheckedRows(this GridView gridView, string checkBoxId, Action<IEnumerable<int>> action)
{
   var checkedRows = from GridViewRow msgRow in gridView.Rows
                     where ((CheckBox)msgRow.FindControl(checkBoxId)).Checked
                     select (int) gridView.DataKeys[msgRow.RowIndex].Value;

    action(checkedRows);
}

Теперь я могу что-то сделать со всеми проверенными строками. Компилятор довольно хорош в выведении типов, но иногда я должен явно объявить checkedRows как тип IEnumerable.

gvTasksToBill.ActOnCheckedRows("RowLevelCheckBox", checkedRows =>
{
    foreach (int id in checkedRows)
    {
       // do something with id
    }
});
-121--2768784-

Ваша проблема принадлежит Locale, на что правильно указал Рорик. Тем не менее, вам следует обратиться к классу DecimalFormat , если изменение Locale означает беспорядок все вещи.

Просмотрите класс NumberFormat , чтобы разобраться с разделителем тысяч. Потому что кажется, что ваше дело касается тысячи разделителей.

-121--2749523-
  • Как перейти к написанию

    Проверьте, как keyring обрабатывает кросс-платформенные проблемы (это библиотека python, которая подключается к различным автоматически обнаруженным бэкендам keychain для места хранения)

  • Growl не поставляется с OSX, вы должны устанавливать его отдельно, OSX не поставляется с

  • Для unixes может потребоваться подключение к DBus, как уже упоминалось (в качестве запасного варианта следует отметить, что dbus также может быть доступен в OSX), но и KDE, и Gnome имеют библиотеки, похожие на Growl. Соответственно, KNotification для KDE и libnotify для Gnome.

  • Для окон, проверьте Snarl, вернуться к уведомлению пузырей, если нет (используя что-то по линии ToasterBox )

Не никогда даже думать сделать уведомления липкими. Это глупо, бесчувственно и досадно. Кроме того, благодаря таким людям, как вы, он не доступен в большинстве систем уведомлений.

Наконец, даже если для любого из них нет Python lib, для доступа к ним можно использовать ctypes .

7
ответ дан 26 November 2019 в 20:40
поделиться

Вот средство уведомления рабочего стола, которое я написал несколько лет назад с помощью wxPython - он ведет себя одинаково в Windows и Linux, а также должен работать в OSX. Он содержит многопоточный цикл событий, который можно использовать для анимации окна уведомления, содержащего значок и сообщение, на которое можно щелкнуть. Вероятно, потребуется пара настроек, чтобы настроить его для ваших собственных целей, но основная работа сделана.

19
ответ дан 26 November 2019 в 20:40
поделиться

попробуйте PyQt4 , если вас не волнует размер.

вот класс для этого задания: http://doc.trolltech.com/4.5/qsystemtrayicon.html

3
ответ дан 26 November 2019 в 20:40
поделиться

На win вы можете использовать snarl.

Используя его с python: www.k23productions.com/e107_plugins/forum/forum_viewtopic.php?2972

0
ответ дан 26 November 2019 в 20:40
поделиться

Похоже, вам нужно Growl для Windows

2
ответ дан 26 November 2019 в 20:40
поделиться
Другие вопросы по тегам:

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