powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Не могу передать события с помощью PyQt
2 сообщений из 2, страница 1 из 1
Не могу передать события с помощью PyQt
    #39727791
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На форме обработки, созданной с помощью QtDesigner, разместил QListWidget, чтобы выводить ход выполнения.

Создал EventFilter:
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
class EventFilterForMessageList(QObject):
      def __init__(self):
            QObject.__init__(self)
            
      def eventFilter(self, CurrentObject, CurrentEvent):
            CurrentType = int(CurrentEvent.type())
            if CurrentType != (QEvent.User + 1):
                  return False

#СЮДА НИКОГДА НЕ ЗАХОДИТ !!!
            Index = CurrentObject.count();
            CurrentObject.insertItem(Index, CurrentEvent.Message);
            Item = CurrentObject.item(Index);
            
            #set message
            Item.setText(CurrentEvent.Message);
           
            #set icon
            Icon  = QStyle.QIcon(QApplication.style().standardIcon(CurrentEvent.TypeIcon));
            Item.setIcon(Icon);
            
            return True;



И назначил его своему полю на форме:
Код: python
1.
2.
3.
Filter = Events.EventFilterForMessageList()
EventReceiver = self.ui.MessageList;
EventReceiver.installEventFilter(Filter);



Так генерю события (и с помощью отладчика проверено, что они генерятся!):
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
class EventForMessageList(QEvent):
      def __init__(self, Message_, TypeIcon_):
            QEvent.__init__(self, QEvent.User+1)
            self.Message = Message_;
            self.TypeIcon= TypeIcon_;

def MessageEvent(Information, TypeIcon, ImmediatelySend=True):
      NewEvent = EventForMessageList(Information, TypeIcon);

      if ImmediatelySend:
            QApplication.sendEvent(GV.EventReceiver, NewEvent);
      else:
            QCoreApplication.postEvent(GV.EventReceiver, NewEvent, -1); #-1 Qt.LowEventPriority



GUI и рабочая нагрузка крутятся в одном потоке, а управление в GUI передаю с помощью processEvents() (и кнопки становятся кликабельные). В переопределенный метод фильта eventFilter() события поступают, но только не пользовательские (type < 1000) !

Почему?
...
Рейтинг: 0 / 0
Не могу передать события с помощью PyQt
    #39728179
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Короче, убрал фильтр событий, а событие отправляю прямо форме, которая добавляет в поле списка очередную запись о выполненной задаче. Сделал, так сказать, по деревенски- крестьянски :)

Причем именно так написано в книжке Прохоренка "Python3 и PyQt3. Разработка приложений" на 502 странице. Походу PyQt не поддерживает всего функционала от ребяток из Qt.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Не могу передать события с помощью PyQt
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]