Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
13 / 10 / 5
Регистрация: 11.10.2019
Сообщений: 290
PyQt5

Перехват событий

12.11.2019, 21:21. Показов 2334. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер. Проблема с перехватом событий. Есть два файла,из главного вызываю окно по кнопке(часть кода приложил) и в нем не работают перехват события.


Допустим есть такой код,события не работают,но когда есть в классе функция __init__ то события работают.Почему так происходит? Изначально это окно было главным и была функция __init__ и window.show() без Form,то события работали.Получается что без инициализации события работать не будут?

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import sys
from PyQt5 import Qt, QtCore, QtGui, QtWidgets, uic 
from PyQt5.QtWidgets import QMessageBox
import connection
 
class MyWindow(QtWidgets.QMainWindow):
    def main(self, Form):
        desktop = QtWidgets.QApplication.desktop()
        # Минимальные размеры окна
        Form.resize(desktop.width(),desktop.height())
        # Указываем заголовок
        Form.setWindowTitle("Лекарственные препараты") 
        # Местоположение окна на экране по центру на точность
        x = (desktop.width() - Form.frameSize().width())    //2
        y = (desktop.height() - Form.frameSize().height())  //2
        Form.move(x,y)
 
...прочий код
 
    def event(self, e):
        print('вошли в event')
        if e.type()== QtCore.QEvent.KeyPress:
            print("Нажата клавиша на клавиатуре")
            print("Код:", e.key(), ", текст:", e.text())
        elif e.type() == QtCore.QEvent.Close:
            print("Окно закрыто")
        elif e.type() == QtCore.QEvent.MouseButtonPress:
            print("Щелчок мыщью. Координаты:", e.x(), e.y())
        return QtWidgets.QWidget.event(self, e)
 
...остальной код
 
if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    Form = QtWidgets.QMainWindow()
    window = MyWindow()
    window.main(Form)
    Form.show()
    sys.exit(app.exec_())
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.11.2019, 21:21
Ответы с готовыми решениями:

Перехват всех событий клавиатуры
Доброго времени суток, возникла задача полного перехвата всех нажатий клавиатуры в linux, как в screensaver'ах, в каком направлении стоит...

Перехват событий X-ов в Qt
Здравствуйте! У меня возникла проблема: нужно написать приложение (по-моему такие называют wathcer), отслеживающего события X-ов (в...

перехват событий
Здравствуйте! Подскажите пожалуйста, как быть! Проблема с событиями. Есть dll по пересыкле данных, в котором есть событие public...

1
13 / 10 / 5
Регистрация: 11.10.2019
Сообщений: 290
13.11.2019, 08:26  [ТС]
Вопрос закрыт. Перенес перехват событий в главный файл.Прилагаю кусок кода,если понадобится.

Это в главном файле кусок,когда по клику открывается другое окно из файла lp

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#Файл lp
class win_lp(QtWidgets.QMainWindow):
    def __init__(self,parent=None):
        super().__init__(parent, QtCore.Qt.Window)
        import lp
        self.win = lp.MyWindow()
        self.win.main(self)
 
    def event(self, e):
        print('вошли в event')
        if e.type()== QtCore.QEvent.KeyPress:
            print("Нажата клавиша на клавиатуре")
            print("Код:", e.key(), ", текст:", e.text())
        elif e.type() == QtCore.QEvent.Close:
            print("Окно закрыто")
        elif e.type() == QtCore.QEvent.MouseButtonPress:
            print("Щелчок мыщью. Координаты:", e.x(), e.y())
        return QtWidgets.QWidget.event(self, e)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.11.2019, 08:26
Помогаю со студенческими работами здесь

Перехват событий от IE
Люди, помогите, хоть совет какой-нить подкиньте, если решение не знаете!? Мне надо написать прогу на .NET, которая бы тихо висела где-нить...

Перехват событий с клавиатуры
Добрый день! Как заставить диалоговое окно перехватывать события нажатия клавиатуры? Пытался WM_KEYDOWN, ни чего получается, по нажатии...

Перехват событий Excel в С#
Помогите пожалуйста ! Никак не могу решить эту проблему. Создаю приложение Excel и определяю перехватчик theApp = new...

Перехват событий eventlog
Необходимо в режиме реального времени или с небольшим отставанием все события, которые попадают в системный журнал Windows складировать в...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru