Online video hd

Смотреть красивые девушки видео

Официальный сайт aquaexpert 24/7/365

Смотреть видео бесплатно

razum2um 19.06.2009 20:51

Есть вопрос![Решено] python, kde4 - всплывающее сообщение в трее

Пишу для себя немного на python&pyqt4;

До сих пор чтобы получить таковое "фирменное" уведомление делал

1
2
3
4
5
os.system('kdialog \

--title "This is a passive popup" \

--passivepopup "It disappears in about 3 seconds" 3')



Конечно жуть, но средствами pyqt не выходит...

1
2
3
4
5
6
7
tray_icon = QSystemTrayIcon()

tray_icon.setIcon(QIcon('icon.png'))

tray_icon.show()

tray_icon.showMessage('It\'s me', 'Hello world!')



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

Подскажите, куда посмотреть?


Тэги:
+ 7 -
Похожие Поделиться

Kraplax 19.06.2009 21:00 #
+ 0 -
Добавил теги.

По вопросу - а не могли бы вы запостить куда-нибудь полный текст файлов? я на питоне никогда не программировал, но если выложите элементарный пример с иконкой (от первой до последней строчки файла), то я бы при первой возможности поковырялся.
Не то чтобы времени у меня много, но выкроить попробовал бы =)
razum2um 19.06.2009 21:17 #
+ 0 -
Код-то прост...
http://dumpz.org/9910/
'icon.png' имеется и отображается нормально.
Дело именно в уведомлении...
Kraplax 19.06.2009 21:11 #
+ 0 -
Бегло пробежался по докам:
Note that display of messages are dependent on the system configuration and user preferences, and that messages may not appear at all. Hence, it should not be relied upon as the sole means for providing critical information.

Суть в том, что каждая система имеет свои настройки и "правила" для таких сообщений, и иногда они могут даже не быть отображены вообще. Так что использовать таки тултипы как единственный способ информирования не советуют.
А как выглядит тултип в левом верхнем углу? Обычный прямоугольник похожий на уведомление от Yakuake, например? Или стандартный такой Tooltip, но хвостик от облачка уходит туда, где трея нет?
И еще - вы пробовали в других DE? Тот же GNOME или что попроще (openbox, icewm)
razum2um 19.06.2009 21:21 #
+ 0 -
Ну, я это для себя. А я всю жизнь линуксовую в kde провел.
http://img37.imageshack.us/img37/3735/sn62.png
(Похоже на уведомление kopete в kde3)
nvbn 19.06.2009 21:20 #
+ 0 -
Как я понял, вы хотите использовать информационную область kde4, тогда надо:

import sys
import dbus
dbus.SessionBus().get_object("org.kde.knotify", "/Notify").event("warning", "kde", <>, "Текст для всплывания", <0,0,0,0>, <>, 0,
dbus_interface="org.kde.KNotify")

razum2um 19.06.2009 21:30 #
+ 0 -
Ага! Вот и Вы туда же.
Вываливается так:
http://dumpz.org/9911/
Я ж тоже гуглил)
http://mvidner.blogspot.com/2008/06/knotify-client.html
Там в комментах у одного человека такая же ошибка...
От него цитата:
'qdbus org.kde.knotify /Notify' doesn't show an event method, but if I run dbus-monitor I can watch konsole generating messages with the event method (the watch-for-activity thing)

PS
Вы может не знаете, я этот вопрос задал на linuxforum - там за МЕСЯЦ - НИ ОДНОГО ответа.
Я задал его на русском форуме qt - там посоветовали смотреть qutim.
Но это не в тему. Там C++ и кроме того не то, что я подразумеваю под "официальным" notification
nvbn 20.06.2009 10:42 #
+ 0 -
Тут просто нужен kdebindings-python
ZaWertun 19.06.2009 21:56 #
+ 0 -
посмотрите код плазмоида gmail (http://kde-look.org/content/show.php/gmail-plasmoid?content=101229)

при наличии новой почты он показывает уведомление рядом со своим значком на панели (у меня панель слева)

хотя может я не про те уведомления говорю..
Kraplax 19.06.2009 22:23 #
+ 0 -
не, там KNotification используется.
razum2um 19.06.2009 22:44 #
+ 0 -
Мда. Плазмоиз хороший и аккуратный, только, действительно, не то.
Вы сделайте в kde4
kdialog --title "This is a passive popup" --passivepopup "It disappears in about 3 seconds" 3
И поймете о чем я.
ZaWertun 19.06.2009 23:00 #
+ 0 -
мм, вот как оно у меня выглядит:
http://img230.imageshack.us/img230/8341/screen8.png

да, версия kde 4.3, там что-то про уведомления в чейнджлоге говорили
Kraplax 19.06.2009 22:24 #
+ 0 -
Попробовал в KDE4 - действительно, всегда в левом верхнем углу. В Antico и OpenBox - где-то посреди экрана.. В любом случае - на лицо баг. Может он уже известен..?
razum2um 19.06.2009 22:39 #
+ 0 -
Не думаю.
И вот почему: я в С++ не рублю, но когда читал qutim, там как-то хитро устанавливалась Qpoint. Логично. Только как ее вычислять и как подвязать к python я и не знаю...
bobry 19.06.2009 23:09 #
+ 1 -
ну кутешный код на питоне аналогично будет выглядеть
так что особой проблемы то нет
Kraplax 20.06.2009 00:22 #
+ 4 -

Нашел-таки решение и протестировал!


Здесь человек имел точно такую же траблу и вот в чем секрет ее решения:
You shouldn't call showMessage() until after the event loop has started. One solution is to use a single shot timer with a timeout of 0.

Не следует вызывать showMessage() до начала основного цикла. Решением может стать использование одноразового таймера с задержкой в 0

Далее человек приводит работающий код:
import sys
from PyQt4.QtCore import SIGNAL
from PyQt4.QtGui import QApplication
from PyQt4.QtGui import QIcon
from PyQt4.QtGui import QMenu
from PyQt4.QtGui import QAction
from PyQt4.QtGui import QSystemTrayIcon
from PyQt4.QtCore import QString
from PyQt4.QtCore import SLOT
from PyQt4.QtCore import QTimer

if __name__ == "__main__":
app = QApplication(sys.argv)
plik = QString("/usr/share/icons/crystalsvg/16x16/apps/wine.png")
menu = QMenu()
quitAction = menu.addAction('Quit')
sicon = QIcon(plik)
tray = QSystemTrayIcon(sicon)
tray.setContextMenu(menu)
tray.show() quitAction.connect(quitAction, SIGNAL("triggered()"), app, SLOT("quit()"))
tray.setToolTip("Ale czad!")

def show_message():
tray.showMessage("Title of the message", "Body of the message")

QTimer.singleShot(100, show_message) sys.exit(app.exec_())


Однако, надо сказать что у меня этот вариант не сработал.. Я гуглил дальше и тупо читал код других проектов где используется этот же принцип с таймером. И нашел-таки, уведомлялка обновлений KDE4, если не ошибаюсь, использовала тот же принцип, но задержку они сделали не 100 мс, а 1000. Я попробовал с 2000 мс (2 сек.) чтобы наверняка и все вышло.
В том же коде КДЕшной уведомлялки был коментарий, что задержка нужна, чтобы "успеть переместить" вновь создаваемое всплывающее "облачко" на то место, где у пользователя трей. То есть фактически, питон просто не успевал перенести его..
razum2um 20.06.2009 10:21 #
+ 0 -
Большое спасибо.
Точно. Я это тоже видел, тоже попробовал с 100 и забил на таймер...

Экспериментально у меня с 506 работает. С 505 уже нет :)

Кстати, думаю, эта задержка - один из наиболее практически ценных "бенчмарков".
Тут оптимизация кода и играет наибольшую роль.
Жаль нет возможности поставить что-нить кроме Gentoo и протестить...
Kraplax 20.06.2009 13:14 #
+ 0 -
Нет, бенчмарк из него никакой - тут еще играет роль то, в каком углу у вас трей, какого разрешения экран, насколько "тяжелая" система запущена и насколько быстрая машинка. Да что там говорить - я нашел "границу" в ОпенБоксе с запущенной плазмой, оказалось 545/546. Запустил это дело из Yakuake в полноценном KDE - уже не успевает. А затем запустил то же самое через Alt+F2 - сработало!
Так что тут меряться не получится..

В хорошем качестве hd видео

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн