Найти - Пользователи
Полная версия: PyQt - система оповещений
Начало » GUI » PyQt - система оповещений
1
Ockonal
Здравствуйте, в моей программе реализована функция оповещений (всплывающие окна). У меня есть отдельный класс, который над всем этим работает, у него есть статистическая ф-ция,в которую передают текст и тип оповещения. Например: (“Файл не найден”, “Ошибка”).
В разных частях импортирую этот класс и использую. Но есть проблемка, вызывать из других потоков нельзя.
Одна из идей была создать свой сигнал и привязать его к классу с оповещениями. И просто когда надо emit сигнал с нужными параметрами. Но как-то все криво. Что скажите?
j2a
Одна из идей была создать свой сигнал и привязать его к классу с оповещениями. И просто когда надо emit сигнал с нужными параметрами. Но как-то все криво.
Так сигналы нужно не привязывать к классу, а определять слоты и соединять нужные сигналы с нужными слотами. И тогда не будет криво.
Ockonal
Значит я могу как-то глобально все это делать? Не привязывать к классам?
Например:
connect(AlertClass, SIGNAL(“signature…”), AlertClass.ShowAlert)
Так я привязываю мой класс, который показывает уведомления к сигналу, обработчик - статистическая ф-ция в классе AlertClass
И в нужном месте эмулирую сигнал: emit(SIGNAL(“signature…”))
Так пройдет?
poltergeist
Главная цель - это создать событие (event) в главном потоке программы, в котором работает eventloop Qt-а.
1) создать свой кастомный event и делать postEvent из рабочего потока, сам event и диалог будут отрабатываться в основном потоке;
- или -
2) посылать сигнал (по сути тоже самое что и первое, только более высокоуровневое) из рабочего потока;
В любом случае нужен получатель события, который будет показывать диалог - им может быть любой Qt-шный класс. Как всё это будет реализовано - это уже отдельный вопрос, я бы сделал всё в рамках одного класса и посылал бы события “сам себе” но через eventloop :)
poltergeist
Ockonal connect(AlertClassInstance, SIGNAL(“signature…”), AlertClass.ShowAlert)
Ockonal
А можете показать какой-то небольшой пример… Я что-то не могу въехать.
dimabest
хороший пример http://python.su/forum/viewtopic.php?pid=16121#p16121
Ockonal
Спасибо за пример. Кажется, понял.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB