Russian Qt Forum
Ноябрь 23, 2024, 02:55 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: PyQt5 обработка событий (Events), событие и его источник  (Прочитано 5552 раз)
Catray
Новичок

Offline Offline

Сообщений: 4


Просмотр профиля
« : Октябрь 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 Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #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 Offline

Сообщений: 4


Просмотр профиля
« Ответ #2 : Октябрь 20, 2021, 11:29 »

тебе надо смотреть в сторону QEvent и eventFilter

Смотрел, не понимаю как прикрутить.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #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 Offline

Сообщений: 4


Просмотр профиля
« Ответ #4 : Октябрь 22, 2021, 00:52 »

унаследуйся от QMainWindow, перенеси создание кнопки внутрь, вместо btn.clicked.connect(ButtonsOnclick) используй btn.installEventFilter(self), добавь метод eventFilter и в нем обрабатывай только нужные QEvent. см. документацию к installEventFilter и eventFilter для подробностей.

А без парадигм ООП-наследования, невозможно? Шокированный Непонимающий
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #5 : Октябрь 22, 2021, 09:11 »

Врядли
Нужно либо класс кнопки переопределять, либо класс, который будет получать события кнопки (eventFilter)
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #6 : Октябрь 22, 2021, 11:41 »

унаследуйся от 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 Offline

Сообщений: 3260


Просмотр профиля
« Ответ #7 : Октябрь 24, 2021, 15:42 »

ты от них все равно никуда не денешься в программах сложнее hello world

лисп хихикает в сторонке
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #8 : Октябрь 24, 2021, 18:16 »

ты от них все равно никуда не денешься в программах сложнее 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 Offline

Сообщений: 4


Просмотр профиля
« Ответ #9 : Октябрь 25, 2021, 11:42 »

Врядли
Нужно либо класс кнопки переопределять, либо класс, который будет получать события кнопки (eventFilter)

Поможете с реализацией второго варианта?
Цитировать
либо класс, который будет получать события кнопки (eventFilter)
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #10 : Октябрь 25, 2021, 13:39 »

лисп хихикает в сторонке
[off]Классный язык, в свое время года полтора писал на AutoLISP. Вначале долго "лупал глазками", напр "..присваивает выражение не вычисляя его" - это как Непонимающий Но потом в кайф [/off]
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #11 : Октябрь 25, 2021, 16:00 »

Поможете с реализацией второго варианта?
в документации очень доступно всё описано, что читать я тебе уже написал выше
Записан

Изучением 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]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.094 секунд. Запросов: 22.