Как настроить событие по окончанию работы виджета "Таймер"?

Изображение пользователя mirgor.

Собственно сначала я хотел узнать как проиграть звук по окончанию работы виджета "Таймер"? Но было бы неплохо рассмотреть такие варианты событий по окончанию работы таймера:

- проиграть звук;
- выдать сообщение, например, в центре текущего рабочего стола поверх всех окон;
- ... или всплывающим сообщением;
- запустить программу;
- заблокировать экран;
- перейти в ждущий режим;
- выключить компьютер.

В общем, предлагаю обсудить и выдать рецепт - какие есть эффективные, "правильные" способы настройки событий таймера? Жду советов и предложений.


Рецепты

Имеем такие рецепты:

1. Проиграть звук

a) для проигрывания wav

  1. ставим sox
    sudo apt-get install sox
  2. пишем в поле "выполнить команду" виджета
    play /home/%user%/apert.wav

b) для проигрывания mp3

  1. ставим mpg123
    sudo apt-get install mpg321
  2. пишем в поле "выполнить команду" виджета
    mpg123 /home/%user%/apert.mp3

2. Выдать сообщение

  1. Создаем файл alert.py, помещаем его в кореневую папку вашего юзера: /home/%user%
  2. содержимое файла:
    import sys
    from PyQt4 import QtCore, QtGui
    app = QtGui.QApplication(sys.argv)
    myapp = QtGui.QMessageBox()
    myapp.setText('Achtung! Timer!');
    myapp.show()
    sys.exit(app.exec_())
  3. В настройках виджета в поле "выполнить команду":
    python /home/%user%/alert.py

3. Выдать всплывающее сообщение

пока рецепта нет

4. Запустить программу

В настройках виджета в поле "выполнить команду" просто вписать команду на выполнение программы, например запуск ktorrent:
ktorrent.

5. Заблокировать экран

пока рецепта нет

6. Перейти в ждущий режим

пока рецепта нет

7. Выключить компьютер

пока рецепта нет

За рецепты особое спасибо Ockonal

0
Ockonal - 2 Май, 2009 - 09:54
Изображение пользователя Ockonal.

Строго говоря, можно сделать все, что душа желает =). Там есть поле: выполнить команду. Туда можно передать любой скрипт, программу, которые, в свою очередь, могут сделать все, что пожелаете =).

0
mirgor - 2 Май, 2009 - 10:10
Изображение пользователя mirgor.

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

0
Ockonal - 2 Май, 2009 - 10:19
Изображение пользователя Ockonal.

Нууу.. например, сообщение - самое простое:
Создаем файл alert.py, помещаем его в кореневую папку вашего юзера: /home/%user%
Пишем:

import sys
from PyQt4 import QtCore, QtGui
app = QtGui.QApplication(sys.argv)
myapp = QtGui.QMessageBox()
myapp.addText('Achtung! Timer!');
myapp.show()
sys.exit(app.exec_())

А в поле выполнить команду:
python /home/%user%/alert.py

0
mirgor - 2 Май, 2009 - 10:26
Изображение пользователя mirgor.

Что-то не пошло..
mirgor@mirgor-laptop:~$ python /home/mirgor/alert.py
Traceback (most recent call last):
  File "/home/mirgor/alert.py", line 5, in <module>
    myapp.addText('Achtung! Timer!');
AttributeError: addText

0
Ockonal - 2 Май, 2009 - 10:39
Изображение пользователя Ockonal.

Дико извиняюсь =). Там не addText, а setText

import sys
from PyQt4 import QtCore, QtGui
app = QtGui.QApplication(sys.argv)
myapp = QtGui.QMessageBox()
myapp.setText('Achtung! Timer!');
myapp.show()
sys.exit(app.exec_())

0
mirgor - 2 Май, 2009 - 10:48
Изображение пользователя mirgor.

Ockonal :: а для других вариантов примеры можно?

0
Ockonal - 2 Май, 2009 - 16:14
Изображение пользователя Ockonal.

import sys
from PyQt4 import QtCore, QtGui
app = QtGui.QApplication(sys.argv)
QtGui.QSound.play("Path/To/File.wav")
sys.exit(app.exec_())

Замените на путь к waw-файлу.
Это для проигрывания звука.

0
Ockonal - 2 Май, 2009 - 12:15
Изображение пользователя Ockonal.

Для выключения компа:
sudo sync && halt
Перезагрузка:
sudo reboot

Это в поле "выполнить команду"

0
mirgor - 2 Май, 2009 - 13:08
Изображение пользователя mirgor.

Спасибо, переношу рецепты в топик. Но команды по управлению компом работать не могут, и не работают.
Для выключения компа:
sudo sync && halt
Перезагрузка:
sudo reboot

0
Ockonal - 2 Май, 2009 - 13:13
Изображение пользователя Ockonal.

Почему не работают?

0
mirgor - 2 Май, 2009 - 15:20
Изображение пользователя mirgor.

Если "sudo sync && halt" в терминале, то требуется ввод пароля. А от виджета не срабатывает, даже пароля не требует. А если бы и требовал - то смысла это ставить на таймер не было бы. Все равно выходит выключение вручную.

Да и со звуком тоже не работает, может что не так в пути указал?:
import sys
from PyQt4 import QtCore, QtGui
app = QtGui.QApplication(sys.argv)
QtGui.QSound.play("/home/mirgor/apert.wav")
sys.exit(app.exec_())

0
Ockonal - 2 Май, 2009 - 18:03
Изображение пользователя Ockonal.

Честно говоря, у меня работает =)
Да, а ребутнуть/вырубить комп у тебя без прав рута никак не получится. Поэтому запрос пароля в любом случае был бы.

0
Soi-Fong - 2 Май, 2009 - 18:29
Изображение пользователя Soi-Fong.

можно убрать запрос пароля на sudo, я так и сделал ибо не ведаю что творю уверен в своих действиях ) и еще можно отправлять какие-то сигналы kdm, чтобы тот выполнял подобные системные действия, потому как работает ведь выключение и ребут из меню.

0
mirgor - 3 Май, 2009 - 00:35
Изображение пользователя mirgor.

можно отправлять какие-то сигналы kdm, чтобы
тот выполнял подобные системные действия, потому как
работает ведь выключение и ребут из меню

- надо копать в этом направлении - адназначна! Может кто найдет? Буду искать...

+1
mirgor - 2 Май, 2009 - 21:02
Изображение пользователя mirgor.

Для проигрывания звука я поступил так:
a) для проигрывания wav ставим sox
sudo apt-get install sox
пишем в поле "выполнить команду" виджета
play /home/mirgor/apert.wav

b) для проигрывания mp3 ставим mpg123
sudo apt-get install mpg321
пишем в поле "выполнить команду" виджета
mpg123 /home/mirgor/2.mp3

0
cinic - 2 Август, 2009 - 18:37

Можно, например, установить suid-бит для reboot-а и юзать его без пароля.

Отправить комментарий

CAPTCHA на основе изображений
Введите цифры