Russian Qt Forum
Сентябрь 28, 2023, 04:51
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
PyQt5 обработка событий (Events), событие и его источник
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: PyQt5 обработка событий (Events), событие и его источник (Прочитано 4365 раз)
Catray
Новичок
Offline
Сообщений: 4
PyQt5 обработка событий (Events), событие и его источник
«
:
Октябрь 19, 2021, 18:55 »
Здравствуйте. Пишу GUI программу на Python, мне необходимо узнать в процедуре-обработчике какое событие (Нажатие, удержание, отпускание клавиши) произошло?
Код:
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton
app = QApplication(sys.argv)
MainWindow = QMainWindow()
MainWindow.resize(300,300)
btn = QPushButton('test',MainWindow)
btn.setObjectName('Button1')
def ButtonsOnclick():
global MainWindow
print('Click')
print(MainWindow.sender().objectName())
btn.clicked.connect(ButtonsOnclick)
MainWindow.show()
sys.exit(app.exec_())
Источник события я знаю как найти - MainWindow.sender(), но как получить событие?
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4676
Re: PyQt5 обработка событий (Events), событие и его источник
«
Ответ #1 :
Октябрь 19, 2021, 23:15 »
тебе надо смотреть в сторону QEvent и eventFilter
Записан
Изучением C++ вымощена дорога в Qt.
UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Catray
Новичок
Offline
Сообщений: 4
Re: PyQt5 обработка событий (Events), событие и его источник
«
Ответ #2 :
Октябрь 20, 2021, 11:29 »
Цитата: kambala от Октябрь 19, 2021, 23:15
тебе надо смотреть в сторону QEvent и eventFilter
Смотрел, не понимаю как прикрутить.
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4676
Re: PyQt5 обработка событий (Events), событие и его источник
«
Ответ #3 :
Октябрь 20, 2021, 12:02 »
унаследуйся от QMainWindow, перенеси создание кнопки внутрь, вместо btn.clicked.connect(ButtonsOnclick) используй btn.installEventFilter(self), добавь метод eventFilter и в нем обрабатывай только нужные QEvent. см. документацию к installEventFilter и eventFilter для подробностей.
Записан
Изучением C++ вымощена дорога в Qt.
UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Catray
Новичок
Offline
Сообщений: 4
Re: PyQt5 обработка событий (Events), событие и его источник
«
Ответ #4 :
Октябрь 22, 2021, 00:52 »
Цитата: kambala от Октябрь 20, 2021, 12:02
унаследуйся от QMainWindow, перенеси создание кнопки внутрь, вместо btn.clicked.connect(ButtonsOnclick) используй btn.installEventFilter(self), добавь метод eventFilter и в нем обрабатывай только нужные QEvent. см. документацию к installEventFilter и eventFilter для подробностей.
А без парадигм ООП-наследования, невозможно?
Записан
__Heaven__
Джедай : наставник для всех
Offline
Сообщений: 2129
Re: PyQt5 обработка событий (Events), событие и его источник
«
Ответ #5 :
Октябрь 22, 2021, 09:11 »
Врядли
Нужно либо класс кнопки переопределять, либо класс, который будет получать события кнопки (eventFilter)
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4676
Re: PyQt5 обработка событий (Events), событие и его источник
«
Ответ #6 :
Октябрь 22, 2021, 11:41 »
Цитата: Catray от Октябрь 22, 2021, 00:52
Цитата: kambala от Октябрь 20, 2021, 12:02
унаследуйся от QMainWindow, перенеси создание кнопки внутрь, вместо btn.clicked.connect(ButtonsOnclick) используй btn.installEventFilter(self), добавь метод eventFilter и в нем обрабатывай только нужные QEvent. см. документацию к installEventFilter и eventFilter для подробностей.
А без парадигм ООП-наследования, невозможно?
ты от них все равно никуда не денешься в программах сложнее hello world
Записан
Изучением C++ вымощена дорога в Qt.
UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3256
Re: PyQt5 обработка событий (Events), событие и его источник
«
Ответ #7 :
Октябрь 24, 2021, 15:42 »
Цитата: kambala от Октябрь 22, 2021, 11:41
ты от них все равно никуда не денешься в программах сложнее hello world
лисп хихикает в сторонке
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4676
Re: PyQt5 обработка событий (Events), событие и его источник
«
Ответ #8 :
Октябрь 24, 2021, 18:16 »
Цитата: Авварон от Октябрь 24, 2021, 15:42
Цитата: kambala от Октябрь 22, 2021, 11:41
ты от них все равно никуда не денешься в программах сложнее hello world
лисп хихикает в сторонке
Qt bindings for Lisp? =) речь же не о любом ЯП.
Записан
Изучением C++ вымощена дорога в Qt.
UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Catray
Новичок
Offline
Сообщений: 4
Re: PyQt5 обработка событий (Events), событие и его источник
«
Ответ #9 :
Октябрь 25, 2021, 11:42 »
Цитата: __Heaven__ от Октябрь 22, 2021, 09:11
Врядли
Нужно либо класс кнопки переопределять, либо класс, который будет получать события кнопки (eventFilter)
Поможете с реализацией второго варианта?
Цитировать
либо класс, который будет получать события кнопки (eventFilter)
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: PyQt5 обработка событий (Events), событие и его источник
«
Ответ #10 :
Октябрь 25, 2021, 13:39 »
Цитата: Авварон от Октябрь 24, 2021, 15:42
лисп хихикает в сторонке
[off]Классный язык, в свое время года полтора писал на AutoLISP. Вначале долго "лупал глазками", напр "..присваивает выражение не вычисляя его" - это как
Но потом в кайф [/off]
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4676
Re: PyQt5 обработка событий (Events), событие и его источник
«
Ответ #11 :
Октябрь 25, 2021, 16:00 »
Цитата: Catray от Октябрь 25, 2021, 11:42
Поможете с реализацией второго варианта?
в документации очень доступно всё описано, что читать я тебе уже написал выше
Записан
Изучением C++ вымощена дорога в Qt.
UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...